Hadoop 集群上的 Kerberos 身份验证

Kerberos Authentication on Hadoop Cluster

我准备了一个带有普通 apache Hadoop 的 2 节点集群。这些节点充当另一台充当 Kerberos 服务器的机器的 Kerberos 客户端。 KDC Db,每台机器上的 hdfs 主体都是使用 AES 使用具有适当加密类型的 kaytab 文件创建的。 修改了所需的 hdfs-site、core-site、mapred-site、yarn-site 和 container-executor.cfg 文件。同样为了无限的安全强度,JCE 策略文件也保存在 $JAVA_HOME/lib/security 目录中。

启动 namenode 守护进程时,它工作正常。但是在访问 hdfs 时

hadoop fs –ls /

我们收到以下错误:

15/02/06 15:17:12 WARN ipc.Client: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)] ls: 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: "xxxxxxx/10.122.48.12"; destination host is: "xxxxxxx":8020;

如果有人事先了解或在 Hadoop 之上的 Kerberos 上工作过,请就上述问题向我们提出一些解决方案。

要使用Hadoop 命令,您需要先使用kinit 命令获取Kerberos 票证:

kinit [-kt user_keytab username]

完成后,您可以列出工单:

klist

有关更多详细信息,请参阅 cloudera 的文档:Verify that Kerberos Security is Working