Kerberized Hadoop中ApplicationClientProtocolPB未授权问题求助
根据你提供的错误日志,ResourceManager明确拒绝了hue/myHueHost@MY.DOMAIN.NET代理myproxy_user的请求,尽管你已经配置了hadoop.proxyuser.hue.hosts和groups为*,但仍有几个关键配置点需要检查:
1. 补充core-site.xml的代理用户配置
你遗漏了hadoop.proxyuser.hue.users参数,该参数用于指定允许hue代理的用户列表,必须显式配置:
<property> <name>hadoop.proxyuser.hue.users</name> <value>*</value> </property>
添加后同步core-site.xml到所有集群节点,重启HDFS和YARN服务(至少NameNode和ResourceManager)使配置生效。
2. 检查YARN的代理用户配置
YARN有独立的代理用户配置,需要在yarn-site.xml中添加相同的代理规则:
<property> <name>yarn.proxyuser.hue.hosts</name> <value>*</value> </property> <property> <name>yarn.proxyuser.hue.groups</name> <value>*</value> </property> <property> <name>yarn.proxyuser.hue.users</name> <value>*</value> </property>
完成后重启ResourceManager服务。
3. 验证Livy的Kerberos配置完整性
确保livy.conf中开启了Kerberos认证并配置了正确的keytab和principal:
livy.server.auth.kerberos.enabled = true livy.server.auth.kerberos.keytab = /path/to/livy.keytab livy.server.auth.kerberos.principal = livy/_HOST@MY.DOMAIN.NET livy.impersonation.enabled = true
注意:livy/_HOST@MY.DOMAIN.NET中的_HOST会自动替换为Livy所在节点的主机名,确保keytab文件权限正确(仅livy用户可读),然后重启Livy服务。
4. 确认Hue的Kerberos配置有效性
在hue.ini中补充Kerberos相关配置,确保Hue能获取有效的Kerberos票据:
[desktop] auth_backend=desktop.auth.backend.KerberosBackend kerberos_principal=hue/myHueHost@MY.DOMAIN.NET kerberos_keytab=/path/to/hue.keytab kerberos_forwardable=true
kerberos_forwardable=true确保Hue的票据可以被委托,这是代理用户的必要条件。重启Hue服务后,用klist命令检查Hue进程是否持有有效的forwardable票据。
5. 测试代理权限是否生效
在Hue节点上执行以下命令,验证hue是否能成功代理myproxy_user访问YARN:
# 用hue的keytab获取票据 kinit -kt /path/to/hue.keytab hue/myHueHost@MY.DOMAIN.NET -f # 尝试以myproxy_user身份提交YARN应用测试命令 yarn application -list -proxyuser myproxy_user
如果命令执行成功,说明代理权限配置正确,否则检查KDC中hue principal的权限是否允许委托。
内容的提问来源于stack exchange,提问作者CompEng

