0

Java を使用してセキュア ノードからファイルを取得するために webhdfs 呼び出しを行いたいと考えています。

これが私がやっていることです1.キータブを使用してログインします(正常に動作します)。kerberos チケット 2 を取得しています。以下のコードを呼び出そうとすると、https 呼び出しを行って delegationtoken を取得しようとし、401 https://mynode:50070/webhdfs/v1で失敗します。 /?op=GETDELEGATIONTOKEN&user.name=myuser

hdfs ファイル FileSystem webFS = FileSystem.get(new URI("swebhdfs://" + domain + "myfile"), conf); を開くコードは次のとおりです。
BufferedReader br=new BufferedReader(new InputStreamReader(webFS.open(new Path("swebhdfs://" + domain + "myfile"))));

私の質問は、kerberos チケットを持っているため、それを UserGropupInformation オブジェクトに渡すにはどうすればよいですか?

ありがとう、

4

1 に答える 1

0

ファイルにアクセスできることを前提としていkeytabます。Hadoop クラスターに接続する前に、次のスニペットを追加します。
このloginUserFromKeytabメソッドは、指定されたユーザーの をロードして認証しkeytabます。(簡単に言えば「ログイン」)

String user = "USER@REALM"
String keyPath = "somekeytab.keytab"
UserGroupInformation.loginUserFromKeytab(user, keyPath)

UserGroupInformationhadoop-commonjarにあります。

参照 :

Java コードでの Kerberos プリンシパルの認証

于 2015-07-21T08:11:58.257 に答える