sqoop接入kerberos安全认证后,本地运行正常,但提交到yarn上连接hive报错: Unable to obtain password from user

日志信息:
2018-09-17 11:31:30,774 INFO [OutputFormatLoader-consumer] com.chinacreator.sqoop.connector.hive.HiveExecutor: 连接hive失败java.io.IOException: Login failure for sqoop/[email protected] from keytab /usr/local/src/sqoop-1.99.7-bin-hadoop200/keytabs/sqoop.keytab: javax.security.auth.login.LoginException: Unable to obtain password from user

java.io.IOException: Login failure for sqoop/[email protected] from keytab /usr/local/src/sqoop-1.99.7-bin-hadoop200/keytabs/sqoop.keytab: javax.security.auth.login.LoginException: Unable to obtain password from user

	at org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytabAndReturnUGI(UserGroupInformation.java:1351)
	at com.chinacreator.sqoop.connector.hive.HiveExecutor.validate(HiveExecutor.java:111)
	at com.chinacreator.sqoop.connector.hive.HiveExecutor.(HiveExecutor.java:56)
	at com.chinacreator.sqoop.connector.hive.HiveLoader.load(HiveLoader.java:57)
	at com.chinacreator.sqoop.connector.hive.HiveLoader.load(HiveLoader.java:36)
	at org.apache.sqoop.job.mr.SqoopOutputFormatLoadExecutor$ConsumerThread$1.call(SqoopOutputFormatLoadExecutor.java:279)
	at org.apache.sqoop.job.mr.SqoopOutputFormatLoadExecutor$ConsumerThread$1.call(SqoopOutputFormatLoadExecutor.java:260)
	at org.apache.sqoop.utils.ClassUtils.executeWithClassLoader(ClassUtils.java:281)
	at org.apache.sqoop.job.mr.SqoopOutputFormatLoadExecutor$ConsumerThread.run(SqoopOutputFormatLoadExecutor.java:259)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:748)
Caused by: javax.security.auth.login.LoginException: Unable to obtain password from user

	at com.sun.security.auth.module.Krb5LoginModule.promptForPass(Krb5LoginModule.java:897)
	at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:760)
	at com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:617)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at javax.security.auth.login.LoginContext.invoke(LoginContext.java:755)
	at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195)
	at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682)
	at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
	at javax.security.auth.login.LoginContext.login(LoginContext.java:587)
	at org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytabAndReturnUGI(UserGroupInformation.java:1340)
	... 13 more

本地运行测试一切正常,但提交到yarn上就报错,经常多次尝试,最终发现原因是生成秘钥的sqoop.keytab的权限问题,解决方案如下:

# chmod a+r sqoop.keytab

 

你可能感兴趣的:(Sqoop)