我有一些使用HDFS和Kerberos身份验证的集成测试。当我运行它们时,我得到了这个例外:
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: "Serbans-MacBook-Pro.local/1.2.3.4"; destination host is: "10.0.3.33":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.$Proxy12.getFileInfo(Unknown Source)
我相信一切都配置正确:
System.setProperty("java.security.krb5.realm", "...");
System.setProperty("java.security.krb5.kdc", "...");
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://10.0.3.33:8020");
conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
conf.set("hadoop.security.authentication", "Kerberos");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab("user@...", "/Users/user/user.keytab");
您认为问题是什么?在我的主机上(10.0.3.33)我正确配置了core-site.xml和hdfs-site.xml。但我没有从该主机上运行,正如例外情况所示。
任何想法要做什么,以便能够从任何主机运行测试?
谢谢, 谢尔班
答案 0 :(得分:3)
如果您使用的Hadoop旧版本低于2.6.2,则hdfs-site.xml文件中没有默认模式属性,那么您需要手动指定模式属性。
config.set("dfs.namenode.kerberos.principal.pattern", "hdfs/*@BDBIZVIZ.COM");