173人参与 • 2024-08-04 • Access
在用suse 操作系统安装 cm 大数据平台,在集群开启 kerberos 后,使用 hdfs 命令报错如下:
hdfs dfs -ls /
19/05/29 18:06:15 warn ipc.client: exception encountered while connecting to the server : org.apache.hadoop.security.accesscontrolexception: client cannot authenticate via:[token, kerberos]
ls: failed on local exception: java.io.ioexception: org.apache.hadoop.security.accesscontrolexception: client cannot authenticate via:[token, kerberos]; host details : local host is: "hadoop001/172.17.239.230"; destination host is: "hadoop001":8020;
suse linux enterprise server 12 service pack 1 (sles 12 sp5)
kinit -kt hdfs.keytab hdfs
## 查看票据
klist
export hadoop_root_logger=debug,console
export hadoop_opts="-dsun.security.krb5.debug=true -djavax.net.debug=ssl"
hdfs dfs -ls /
仔细看,在使用 klist 命令时,有个ticket cache : dir
他指向的路径是: /run/user/0/krb5cc/tkt
而在执行 hdfs
命令时,有个 kinitoptions cache name is
他指向的路径是 tmp/krb5cc_0
hdfs
默认是去 /tmp
目录下找 kerberos
缓存。然后 suse 操作系统下 kerberos
并不是放在 /tmp
目录下,导致 hdfs
客户端认为你没有进行 kerberos
认证。所以报错。
在/etc/krb5.conf
中,我们增加了下面的参数以后,就可以正常kinit,也可以执行hdfs的命令了。
default_ccache_name = file:/tmp/krb5cc_%{uid}
kdestroy
kinit -kt hdfs.keytab hdfs
hdfs dfs -ls /
在重新执行,问题解决!
此外网上还有别的解决方案,但都不是我这种情况。这里也顺便贴下:
将krb5.conf
文件中的default_ccache_name
注释掉,然后执行kdestroy,重新kinit,问题解决
在 /etc/krb5.conf 里补全了加密方法后
https://www.cnblogs.com/tommyjiang/p/15008787.html
代码问题
https://blog.csdn.net/ifenggege/article/details/111243297
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论