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」に指定された値で発生します。
私はデバッグと調査を行ってきましたが、問題は、異なるユーザーとグループ間の権限を間違って設定したことだと思います。
どんな助けでも大歓迎です。