Ubuntu下Hadoop Kerberos环境NameNode格式化登录失败求助
问题:Ubuntu 20.04.1 LTS上Hadoop Kerberos集群NameNode格式化时Kerberos登录失败
错误信息
Exiting with status 1: org.apache.hadoop.security.KerberosAuthException: failure to login: for principal: hdfs/hadoopmaster.406bigdata.com@406BIGDATA.COM from keytab /etc/security/keytabs/hdfs.service.keytab javax.security.auth.login.LoginException: Unable to obtain password from user
环境与已确认信息
- 主节点主机名:hadoopmaster
- Kerberos Realm:406BIGDATA.COM
- keytab路径:
/etc/security/keytabs/hdfs.service.keytab,已通过klist -t -k -e确认包含正确principal:hdfs/hadoopmaster.406bigdata.com@406BIGDATA - YARN服务Kerberos配置正常,可正常启动并访问WebUI
排查与解决方案
1. 修复hdfs-site.xml的语法错误
从提供的配置片段可见,第一个<property>标签的闭合标签存在语法错误:
<property <!-- 正确应为 </property> -->
这个错误会导致Hadoop无法正确加载dfs.namenode.keytab.file配置项,进而无法定位keytab文件引发登录失败。请修正为:
<property> <name>dfs.namenode.keytab.file</name> <value>/etc/security/keytabs/hdfs.service.keytab</value> </property> <property> <name>dfs.namenode.kerberos.principal</name> <value>hdfs/hadoopmaster.406bigdata.com@406BIGDATA.COM</value> </property>
2. 统一Principal的Realm大小写
klist显示keytab中principal的Realm为406BIGDATA,但hdfs-site.xml配置的是406BIGDATA.COM。虽然Kerberos对Realm大小写不敏感,但保持一致可避免潜在解析问题,建议将配置中的principal修改为与keytab匹配的版本:
<property> <name>dfs.namenode.kerberos.principal</name> <value>hdfs/hadoopmaster.406bigdata.com@406BIGDATA</value> </property>
3. 验证keytab的登录可用性
切换到hdfs用户,直接测试keytab的登录功能:
su - hdfs kinit -kt /etc/security/keytabs/hdfs.service.keytab hdfs/hadoopmaster.406bigdata.com@406BIGDATA.COM
若执行成功,用klist确认已获取票据;若失败,说明keytab存在问题(如生成时principal不匹配、密钥版本不一致),需重新生成:
# 在Kerberos KDC服务器执行 kadmin.local -q "xst -k /etc/security/keytabs/hdfs.service.keytab hdfs/hadoopmaster.406bigdata.com@406BIGDATA.COM" # 复制到主节点并修正权限 scp /etc/security/keytabs/hdfs.service.keytab hadoopmaster:/etc/security/keytabs/ chown hdfs:hadoop /etc/security/keytabs/hdfs.service.keytab chmod 600 /etc/security/keytabs/hdfs.service.keytab
4. 确认Hadoop进程的JAAS配置
检查hadoop-env.sh,确保添加了正确的JAAS配置参数:
export HADOOP_OPTS="$HADOOP_OPTS -Djava.security.auth.login.config=/etc/hadoop/conf/jaas.conf"
jaas.conf中需包含HDFS相关登录配置:
HDFS_NAMENODE { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="/etc/security/keytabs/hdfs.service.keytab" principal="hdfs/hadoopmaster.406bigdata.com@406BIGDATA.COM"; };
5. 验证主机名解析
执行hostname -f确认主节点完全限定域名(FQDN)为hadoopmaster.406bigdata.com,与principal中的主机部分完全一致。同时检查/etc/hosts文件,确保FQDN指向正确IP:
192.168.x.x hadoopmaster.406bigdata.com hadoopmaster
内容的提问来源于stack exchange,提问作者MaxRS7_
相关产品推荐
相关产品推荐

