0

これが状況です。Kerberos セキュリティとワークステーションが構成されていない Hadoop クラスターがあります。Hadoop クラスターは、Cloudera CDH3 ディストリビューションを実行します。クラスター上のデータはすべて「hdfs」ユーザーの下に保存されます。

ワークステーションは、PIG クライアントを組み込んだ複雑なソフトウェアを実行する Linux または MacOS ワークステーションです。PIG クライアントはクラスターに接続して分析ジョブを実行します。

ここに問題があります。クラスターとワークステーションのユーザー アカウントは異なります。hadoop クラスター内のすべてのデータは、ワークステーションがユーザー アカウントの完全なセットを持つ「hdfs」ホーム ディレクトリ ユーザーの下に格納されます。別のユーザー アカウントでジョブを実行するように PIG に指示することは可能ですか。現在、pig は現在ワークステーションにログインしているユーザーのアカウントでジョブを実行しようとします。ジョブは実際に実行されますが、スクリプトは HDFS ユーザー ホーム ディレクトリへの相対パスを使用するため、データにアクセスできません。

クラスターのセキュリティが構成されていない場合、ユーザー名は単にジョブ構成 .XML と共に渡されることを理解していますが、何らかの理由で、必要なユーザー名をその XML ドキュメントに強制する方法がわかりません。

4

2 に答える 2

3

「HADOOP_USER_NAME」環境変数を設定してみてください。
詳細については、同様の質問を参照してください。

于 2014-01-31T07:10:13.043 に答える
1

プロパティ経由でユーザーを渡すことはできません。セキュリティ サブシステムはより複雑で、単純にユーザー名を渡します。考えられる解決策は次の 4 つです。

  1. セキュリティをまったく無効にします (すべてのデータが「root」アカウントに保存されているのに、なぜセキュリティが必要だったのでしょうか?)
  2. ローカル ワークステーションで hdfs ユーザーを作成し、sudo -u hdfs でソフトウェアを実行します。
  3. Hadoop クラスターにローカル ワークステーション ユーザーを作成し、そのユーザーのグループを作成して、このグループがデータをファイルに読み取る権限を追加します。
  4. 「hdfs」の下にファイルを保存せず、ワークステーションと Hadoop クラスターに同様のユーザーを作成します。

あなたの場合は1が望ましい方法だと思いますが、それが不可能な場合は4がよりありがたいです。

于 2012-11-02T08:09:47.053 に答える