2016-05-05 5 views
0

Kerberos認証でHDFSを使用する統合テストがあります。私はそれらを実行すると、私はこの例外を取得:Java - サーバーの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("[email protected]", "/Users/user/user.keytab"); 

問題があります信じていますか?私のホスト(10.0.3.33)には、core-site.xmlとhdfs-site.xmlが正しく設定されています。しかし、例外が示唆しているように、私はそのホストから走っていません。

どのホストからでもテストを実行できるようにするには、どうすればよいですか?

おかげで、 セルバン

+1

ケルベロスはセキュリティレイヤーなので、多くの事で少し編集的です。 1つは、IPではなくホスト名が必要です。また、逆DNSチェックも実行するので、* canonical *ホスト名を指定する必要があります。結局、あなたのHadoopホストがDNSにないか、正規のDNS名の下にないならば、あなたのローカル '/ etc/hosts'(あるいはそのパスがiSOD上にあるかもしれないもの)の空白を埋めて、あなたのHadoop' *** - site.xml' confファイルに従います。 –

答えて

0

あなたはHadoopのの古いバージョン未満2.6.2を使用している場合は、デフォルトのパターンのプロパティは、手動でパターンプロパティを指定する必要がHDFS-site.xmlファイルでは使用できません。

config.set("dfs.namenode.kerberos.principal.pattern", "hdfs/*@BDBIZVIZ.COM"); 
関連する問題