これは私にとってはうまくいきました.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>