5

LocalFileSystem とペアになった MRv1 (CDH5) を実行するテスト クラスターを実行しています。ジョブを実行できる唯一のユーザーは mapred です (mapred は jobtracker/tasktracker デーモンを開始するユーザーであるため)。他のユーザーとしてジョブを送信すると、jobtracker/tasktracker が .staging ディレクトリで job.jar を見つけられないため、ジョブは失敗します。

LocalFileSystem と組み合わせると、YARN (MRv2) とまったく同じ問題が発生します。つまり、「yarn」以外のユーザーがジョブを送信すると、アプリケーション マスターは .staging ディレクトリの下で job.jar を見つけることができません。

ジョブを送信したユーザーの .staging ディレクトリを調べると、job.jar が .staging// ディレクトリの下に存在することがわかりましたが、 および .staging ディレクトリの権限は 700 (drwx------) に設定されており、したがって、アプリケーション マスター/タスクトラッカーは、job.jar およびサポート ファイルにアクセスできません。

実稼働セットアップで OCFS とペアになった Hadoop プロジェクトの MapReduce 部分のみを使用するため、LocalFileSystem でテスト クラスターを実行しています。

この点での支援は非常に役立ちます。

4

2 に答える 2

1

これは私にとってはうまくいきました.MR v1でこのプロパティを設定しただけです:

<property>
    <name>hadoop.security.authorization</name>
    <value>simple</value>
  </property>

これを実行してください:

アクセス制御リスト ${HADOOP_CONF_DIR}/hadoop-policy.xml は、各 Hadoop サービスのアクセス制御リストを定義します。すべてのアクセス制御リストの形式は単純です。

ユーザーとグループのリストは、どちらもコンマで区切られた名前のリストです。2 つのリストはスペースで区切られています。

例: ユーザー 1、ユーザー 2 グループ 1、グループ 2。

グループのリストのみを提供する場合は、行の先頭に空白を追加します。これは、コンマ区切りのユーザーのリストの後にスペースが続く場合と同様に、指定されたユーザーのセットのみを意味します。

特別な値 * は、すべてのユーザーがサービスにアクセスできることを意味します。

サービス レベルの認可設定の更新 NameNode と JobTracker のサービス レベルの認可設定は、どちらの Hadoop マスター デーモンも再起動せずに変更できます。クラスター管理者は、マスター ノードの ${HADOOP_CONF_DIR}/hadoop-policy.xml を変更し、NameNode と JobTracker に、-refreshServiceAcl スイッチを介してそれぞれの構成を dfsadmin と mradmin コマンドにリロードするように指示できます。

NameNode のサービス レベル認証構成を更新します。

$ bin/hadoop dfsadmin -refreshServiceAcl

JobTracker のサービス レベル認証構成を更新します。

$ bin/hadoop mradmin -refreshServiceAcl

もちろん、${HADOOP_CONF_DIR}/hadoop-policy.xml の security.refresh.policy.protocol.acl プロパティを使用して、サービスレベルの承認構成を更新する機能へのアクセスを特定のユーザー/グループに制限できます。

例 mapreduce グループ内のユーザー alice、bob、およびユーザーのみが、ジョブを MapReduce クラスターにサブミットできるようにします。

<property>
     <name>security.job.submission.protocol.acl</name>
     <value>alice,bob mapreduce</value>
</property>

グループ datanode に属するユーザーとして実行されている DataNode のみが NameNode と通信できるようにします。

<property>
     <name>security.datanode.protocol.acl</name>
     <value>datanodes</value>
</property>
Allow any user to talk to the HDFS cluster as a DFSClient:

<property>
     <name>security.client.protocol.acl</name>
     <value>*</value>
</property>
于 2014-07-03T15:38:26.253 に答える
1

クラスター内のユーザーごとにステージング ディレクトリを設定する必要があります。これは思ったほど複雑ではありません。

次のプロパティを確認します。

<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
<source>core-default.xml</source>
</property>

これにより、基本的に各ユーザーの tmp ディレクトリがセットアップされます。

これをステージング ディレクトリに関連付けます。

<property>
<name>mapreduce.jobtracker.staging.root.dir</name>
<value>${hadoop.tmp.dir}/mapred/staging</value>
<source>mapred-default.xml</source>
</property>

これが機能するかどうか、またはこの方法で既にセットアップされているかどうかを教えてください。

これらのプロパティはyarn-site.xmlにあるはずです-私の記憶が正しければ。

于 2014-07-03T15:31:03.193 に答える