3

我为 HDFS 配置了 kerberos 身份验证,我可以使用我自己的 keytab 文件来访问 HDFS 集群中任何机器上的 HDFS。但是当我使用相同的 keytab 访问 HDFS 集群外的远程服务器上的 HDFS 时,我无法访问。我收到以下错误消息,顺便说一下,我已经将服务器的配置文件 krb5.conf 复制到了 hadoop 集群外的远程机器上。

java.io.IOException:本地异常失败:java.io.IOException:javax.security.sasl.SaslException:GSS启动失败[由GSSException引起:未提供有效凭据(机制级别:找不到任何Kerberos tgt)];主机详情:本地主机为:“ubuntu/10.235.6.156”;目标主机是:“node0”:21200;在 org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:759) 在 org.apache.hadoop.ipc.Client.call(Client.java:1164) 在 org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker .invoke(ProtobufRpcEngine.java:202) at $Proxy9.getFileInfo(Unknown Source) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:628) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method ) 在 sun.reflect.NativeMethodAccessorImpl。

4

1 回答 1

4

终于找到原因了:kerberos使用AES-256加密时,应该安装JCE。我已经在 HDFS 集群内的机器上安装了 JCE,但是我没有意识到集群外的客户端机器也需要 JCE。这就是为什么我可以在 HDFS 集群内的机器上访问 HDFS,但不能在 HDFS 集群外的机器上访问的原因。

于 2012-11-26T11:31:17.813 回答