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身份验证错误
如何使用 Active Directory 自动向 Hadoop 进行身份验证?
Hadoop 发行版本 Hortonworks 安装详解 开启Kerberos集群安全验证
为CDH 5.7集群添加Kerberos身份验证及Sentry权限控制
在远程集群上从 Spark 运行 hive 查询时,客户端无法通过以下方式进行身份验证:[TOKEN, KERBEROS]