小编avi*_*til的帖子

连接到 Kerberrized HDFS ,java.lang.IllegalArgumentException:无法指定服务器的 Kerberos 主体名称;

我正在尝试使用下面的代码连接到 Kerberized hdfs 集群,使用下面相同的代码我当然可以使用 HBaseConfiguration 访问 hbase,

Configuration config = new Configuration();
config.set("hadoop.security.authentication", "Kerberos");

UserGroupInformation.setConfiguration(config);
UserGroupInformation ugi = null;
ugi = UserGroupInformation.loginUserFromKeytabAndReturnUGI("me@EXAMPLE>COM","me.keytab");
model = ugi.doAs((PrivilegedExceptionAction<Map<String,Object>>) () -> { 
  testHadoop(hcb.gethDFSConfigBean());
  return null;
});
Run Code Online (Sandbox Code Playgroud)

我已经能够使用相同的密钥表和主体成功访问 Solr、Impala,但我遇到了这个奇怪的问题:无法找到 hdfs 的服务名称。

请查看下面的堆栈跟踪

java.io.IOException: Failed on local exception: java.io.IOException: java.lang.IllegalArgumentException: Failed to specify server's Kerberos principal name; Host Details : local host is: "Securonix-int3.local/10.0.4.36"; destination host is: "sobd189.securonix.com":8020; 
    at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:772)
    at org.apache.hadoop.ipc.Client.call(Client.java:1472)
    at org.apache.hadoop.ipc.Client.call(Client.java:1399)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:232)
    at com.sun.proxy.$Proxy9.getFileInfo(Unknown Source)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:752)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) …
Run Code Online (Sandbox Code Playgroud)

java hadoop kerberos cloudera keytab

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

cloudera ×1

hadoop ×1

java ×1

kerberos ×1

keytab ×1