当前位置: 首页 > 知识库问答 >
问题:

Hadoop集群kerberized时无法访问HDFS

晏修诚
2023-03-14

我成功地kerberized了一个测试Hortonworks集群。Ambari为这些服务创建了keytabs,并且它们都已启动。名称编号有HA。备用名称节点启动得快,活动名称节点需要更长得时间。Namenode UI显示一切都是正确的。可以使用Kerberos登录。名称编号为nn1.zim.com和nn2.zim.com

这个配置会有什么问题呢?以hdfs登录,用kinit-kt加载keytab。在列表HDFS尝试中,我得到以下错误:

[root@nn1 hdfs]#hdfs dfs-ls/18/12/02 16:18:22警告IPC.Client:连接到服务器时遇到异常:javax.security.sasl.saslexception:GSS initiate失败[由GSSE Xception:未提供有效凭据(机制级别:未能找到任何Ker beros T>引起)]18/12/02 16:18:22 INFO Retry.RetryInvocationHandler:java.io.ioException:本地异常失败:java.io.ioException:java.security.sasl.saslexception:GSS主机详情:本地主机为:“nn1.zim.com/192.168.50.10”;目标主机为:“nn2.zim.com”:8020;,同时在1次故障转移尝试后通过nn2.zim.com/192.168.50.11:8020调用g ClientNameNodeProtocolTranslatorPB.getFileInfo。尝试在睡眠1123ms后进行故障转移。

主机的Kerberos主体是:

nn1.zim.com/192.168.50.10@zim.com nn1.zim.com@zim.com nn2.zim.com/192.168.50.11@zim.com nn2.zim.com@zim.com host/nn1.zim.com@zim.com host/nn2.zim.com@zim.com

krb5.cfg:

[logging]default=file:/var/log/krb5libs.log
kdc=file:/var/log/krb5kdc.log
admin_server=file:/var/log/kadmind.log

[libdefaults]dns_lookup_realm=false
ticket_lifetime=24h renew_lifetime=7d
forwardable=true
rdns=false default_realm=zim.com
default_ccache_name=keyring:persistent:%{uid}

[realms]zim.com={
kdc=kb.zim.com
admin_server=kb.zim.com
}

[domain_realm]
.zim.com=zim.com
zim.com=zim.com

共有1个答案

艾阳羽
2023-03-14

解决方案:必须为每个主机创建两个kerberos主体:FQDN和short。我只创建了FQDN(nn1.zim.com)--这就是问题的原因。在创建了第二个校长(nn1)之后,一切都开始工作了。

当您使用Active Directory时,这两种主体类型都将在AD计算机对象创建时自动创建。

 类似资料:
  • 第一次使用 kubectl 访问 如果您是第一次访问 Kubernetes API 的话,我们建议您使用 Kubernetes 命令行工具:kubectl。 为了访问集群,您需要知道集群的地址,并且需要有访问它的凭证。通常,如果您完成了入门指南那么这些将会自动设置,或者其他人为您部署的集群提供并给您凭证和集群地址。 使用下面的命令检查 kubectl 已知的集群的地址和凭证: $ kubectl

  • 我正在尝试通过Livy连接到一个kerberized hadoop集群以执行Spark代码。请求调用im制作如下所示。 此调用失败,出现以下错误 GSSException:未提供有效凭据(机制级别:找不到任何Kerberos凭据) 如果有任何帮助,我们将不胜感激。

  • 当我执行时 kubectl代理 它为我提供了o/p:开始在虚拟机上的127.0.0.1:8001上提供服务 我想在主机上看到仪表板,这给我带来了问题。 192 168 113 8001 api命名空间库贝系统服务https kubernetes仪表板代理 有什么问题,我没明白。我是库伯内特斯的新手。谢谢

  • 根据用户部署和暴露服务的方式不同,有很多种方式可以用来访问 kubernetes 集群。 最简单也是最直接的方式是使用 kubectl 命令。 其次可以使用 kubeconfig 文件来认证授权访问 API server。 通过各种 proxy 经过端口转发访问 kubernetes 集群中的服务 使用 Ingress,在集群外访问 kubernetes 集群内的 service

  • 我有1个VPC——在1个EC2实例(amazon ami)和1个Redis(支持群集模式)下,使用Auth(密码)和对所有IP:端口开放的安全组(仅用于测试)——设置非常简单。 telnet在我的EC2实例(配置endpoint)的6379端口工作 无法使用Redis CLI连接到Redis服务器-无论是配置endpoint还是节点endpoint都无关紧要;使用v.5.0.4版本的Redis C

  • 我们有一个Hadoop集群,数据节点为275个节点(55Tb总内存,12000个VCore)。这个集群与几个项目共享,我们有一个YARN队列分配给我们,资源有限。 为了提高性能,我们正在考虑为我们的项目构建一个单独的Spark集群(在同一网络中的Mesos上)并访问Hadoop集群上的HDFS数据。 正如Spark文档中提到的:https://spark.apache.org/docs/lates