1

Kerberos を使用して Hadoop をセットアップしようとしています

CDH3 セキュリティ ガイドに従っています。

これまでのところうまくいきました (HFDS は正常に動作するなど) が、ジョブを送信しようとすると次のエラーが発生します。

HDFS サーバーをユーザー HDFS として実行し、Hadoop を mapred というユーザーとして実行します。mapred グループに属する bob というユーザーを使用してジョブを送信します。

以下は、私が taskcontroller.cfg に持っている値です

mapred.local.dir=/opt/hadoop-work/local/
hadoop.log.dir=/opt/hadoop-1.0.3/logs
mapreduce.tasktracker.group=mapred
min.user.id=1000

私が得ているエラーは

java.io.IOException: Job initialization failed (24) with output: Reading task controller config from /etc/hadoop/taskcontroller.cfg
Can't get group information for mapred  - Success.
    at org.apache.hadoop.mapred.LinuxTaskController.initializeJob(LinuxTaskController.java:192)
    at org.apache.hadoop.mapred.TaskTracker$4.run(TaskTracker.java:1228)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
    at org.apache.hadoop.mapred.TaskTracker.initializeJob(TaskTracker.java:1203)
    at org.apache.hadoop.mapred.TaskTracker.localizeJob(TaskTracker.java:1118)
    at org.apache.hadoop.mapred.TaskTracker$5.run(TaskTracker.java:2430)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.hadoop.util.Shell$ExitCodeException: 
    at org.apache.hadoop.util.Shell.runCommand(Shell.java:255)
    at org.apache.hadoop.util.Shell.run(Shell.java:182)
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:375)
    at org.apache.hadoop.mapred.LinuxTaskController.initializeJob(LinuxTaskController.java:185)
    ... 8 more

エラーは、常に taskcontroller.cfg の「mapreduce.tasktracker.group=mapred」に指定された値で発生します。

私はデバッグと調査を行ってきましたが、問題は、異なるユーザーとグループ間の権限を間違って設定したことだと思います。

どんな助けでも大歓迎です。

4

0 に答える 0