unnable obtain password from user
问题描述
在大数据集群开启kerberos认证后,使用kerberos票据进行kinit认证通过。但是集群运行yarn任务时报错:
javax.security.auth.login.LoginException: Unable to obtain password from user
产生原因
在kerberos认证的集群下,该问题会经常遇到。其实很简单,是因为使用生成kerberos票据时的linux用户与集群组件匹配不当造成的。比如说:我需要验证集群Hive组件,但是我在生成keytab文件时,是使用的root用户,生成的keytab文件也是root用户及root用户组。和集群hive用户hadoop用户组不同。因此不能访问。
解决方案
两个方案:
其一,把生成的keytab文件权限改大。
chmod 777 ***.keytab
这样,无论是hive组件,还是spark组件都可以访问了。
其二,把文件的属组改了。
chown hive:hadoop ***.keytab
把文件由root:root
用户组改为hive:hadoop
用户组。这样就可以供Hive访问了。