Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 具有Kerberos的Hdfs无法从远程服务器访问_Hadoop_Kerberos_Hdfs - Fatal编程技术网

Hadoop 具有Kerberos的Hdfs无法从远程服务器访问

Hadoop 具有Kerberos的Hdfs无法从远程服务器访问,hadoop,kerberos,hdfs,Hadoop,Kerberos,Hdfs,我使用kerberos身份验证配置了HDFS,我可以使用自己的keytab文件访问HDFS集群中任何机器上的HDFS。但是,当我使用同一个键表访问HDFS集群之外的远程服务器上的HDFS时,我无法访问。我收到了以下错误消息,顺便说一句,我已经将服务器的配置文件krb5.conf复制到hadoop集群之外的远程机器上 java.io.IOException:本地异常失败:java.io.IOException: javax.security.sasl.SaslException:GSS启动失败[原

我使用kerberos身份验证配置了HDFS,我可以使用自己的keytab文件访问HDFS集群中任何机器上的HDFS。但是,当我使用同一个键表访问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.wrapeException(NetUtils.java:759)位于 org.apache.hadoop.ipc.Client.call(Client.java:1164)位于 org.apache.hadoop.ipc.protobufrpceengine$Invoker.invoke(protobufrpceengine.java:202) 在$Proxy9.getFileInfo(未知源)处 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:628) 位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) invoke(NativeMethodAccessorImpl.java:39) 在 reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 位于java.lang.reflect.Method.invoke(Method.java:597) org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:164) 在 org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:83) 在$Proxy10.getFileInfo(未知源)处 org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1507)位于 org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:783) 在 org.apache.hadoop.fs.FileSystem.getFileStatus(FileSystem.java:2106) 在 org.apache.hadoop.fs.FileSystem.globStatusInternal(FileSystem.java:1524) 位于org.apache.hadoop.fs.FileSystem.globStatus(FileSystem.java:1503) 位于org.apache.hadoop.fs.FileSystem.globStatus(FileSystem.java:1481) 在 org.apache.hadoop.fs.shell.PathData.expandAsGlob(PathData.java:271) 在 org.apache.hadoop.fs.shell.Command.expandArgument(Command.java:224) 在 org.apache.hadoop.fs.shell.Command.expandArguments(Command.java:207) 在 org.apache.hadoop.fs.shell.Command.processRawArguments(Command.java:190) 位于org.apache.hadoop.fs.shell.Command.run(Command.java:154) org.apache.hadoop.fs.FsShell.run(FsShell.java:254)位于 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)位于 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)位于 org.apache.hadoop.fs.FsShell.main(FsShell.java:304)由以下原因引起: java.io.IOException:javax.security.sasl.SaslException:GSS initiate 失败[由GSSExException引起:未提供有效凭据] (机制级别:找不到任何Kerberos tgt)]位于 org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:548)位于 java.security.AccessController.doPrivileged(本机方法)位于 javax.security.auth.Subject.doAs(Subject.java:396)位于 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) 在 org.apache.hadoop.ipc.Client$Connection.handleSaslConnectionFailure(Client.java:512) 在 org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:596) 在 org.apache.hadoop.ipc.Client$Connection.access$1700(Client.java:220) 位于org.apache.hadoop.ipc.Client.getConnection(Client.java:1213) org.apache.hadoop.ipc.Client.call(Client.java:1140)。。。25多 原因:javax.security.sasl.SaslException:GSS启动失败 [由GSSExException引起:未提供有效凭据(机制) 级别:在中找不到任何Kerberos(tgt)] com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:194) 在 org.apache.hadoop.security.saslrpclient.saslConnect(saslrpclient.java:137) 在 org.apache.hadoop.ipc.Client$Connection.setupSaslConnection(Client.java:423) 在 org.apache.hadoop.ipc.Client$Connection.access$1300(Client.java:220) 位于org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:589) org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:586)位于 java.security.AccessController.doPrivileged(本机方法)位于 javax.security.auth.Subject.doAs(Subject.java:396)位于 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) 在 org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:585) ... 28更多原因:GSSExException:未提供有效凭据 (机制级别:找不到任何Kerberos tgt)位于 sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:130) 在 sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory.java:106) 在 sun.security.jgss.krb5.Krb5MechFactory.getMechanismContext(Krb5MechFactory.java:172) 在 sun.security.jgss.GSSManagerImpl.getMechanismContext(GSSManagerImpl.java:209) 在 sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:195) 在 sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:162) 在 com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:175) ... 37多


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