Hadoop 集群上的 Kerberos 身份验证

Posted

技术标签:

【中文标题】Hadoop 集群上的 Kerberos 身份验证【英文标题】:Kerberos Authentication on Hadoop Cluster 【发布时间】:2015-05-23 13:54:11 【问题描述】:

我已经准备了一个带有普通 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 警告 ipc.Client:连接到服务器时遇到异常:javax.security.sasl.SaslException:GSS 启动失败 [由 GSSException 引起:未提供有效凭据(机制级别:找不到任何 Kerberos tgt)] ls:本地异常失败:java.io.IOException:javax.security.sasl.SaslException:GSS 启动失败 [由 GSSException 引起:未提供有效凭据(机制级别:未能找到任何 Kerberos tgt)];主机详情:本地主机为:“xxxxxxx/10.122.48.12”;目的主机是:“xxxxxxx”:8020;

如果有人有先验知识或曾在 Hadoop 上使用过 Kerberos,请就上述问题向我们提出一些解决方案。

【问题讨论】:

【参考方案1】:

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

kinit [-kt user_keytab username]

完成后,您可以列出票证:

klist

详情请参阅 cloudera 的文档:Verify that Kerberos Security is Working

【讨论】:

以上是关于Hadoop 集群上的 Kerberos 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

oozie java api提交作业,kerberos身份验证错误

配置两个不同kerberos认证中心的集群间的互信

如何使用 Active Directory 自动向 Hadoop 进行身份验证?

Hadoop 发行版本 Hortonworks 安装详解 开启Kerberos集群安全验证

为CDH 5.7集群添加Kerberos身份验证及Sentry权限控制

在远程集群上从 Spark 运行 hive 查询时,客户端无法通过以下方式进行身份验证:[TOKEN, KERBEROS]