内容纲要
概要描述
TDH4.9.2版本,kinit完hdfs用户之后,使用hdfs命令访问hdfs时仍然报错:
java.io.IOException: Failed on local exception: java.io.IOException:
javax.security.sasl.SaslException: GSS initiate failed
[Caused by GSSException: No valid credentials provided (Mechanism level:
Failed to find any Kerberos tgt)]; Host Details :
local host is: "mll01/172.22.33.1"; destination host is: "mll01":8020;
详细说明
排查过程
-
开启debug日志
export HADOOP_OPTS="-Dsun.security.krb5.debug=true"
-
重新kinit认证并执行命令查看详细的报错信息
# kinit认证 kinit -kt /etc/hdfs1/hdfs.keytab hdfs/mll01@TDH # klist查看是否认证成功 klist # 执行hdfs命令 hdfs dfs -ls /
上面的日志可以看到,在执行到 KinitOptions cache name is /tmp/krb5cc_0 时开始报错了
- 查看krb5文件中默认的
default_ccache_name
参数值是KEYRING:session:%{uid}
解决方案
kerberos credientials cache默认的位置与配置文件中的不一致,修改配置文件/etc/krb5.conf
中的default_ccache_name 的值为 FILE:/tmp/krb5cc_%{uid}
重新认证hdfs用户之后,访问hdfs正常