我正在尝试使用 Kerberos 设置 Hadoop
我正在遵循 CDH3 安全指南。
到目前为止一切进展顺利(HFDS 工作正常等),但是当我尝试提交作业时出现以下错误。
我以用户 HDFS 的身份运行 HDFS 服务器,以名为 mapred 的用户身份运行 Hadoop。我使用名为 bob 的用户提交作业,该用户属于 mapred 组。
以下是我对 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”的值。
我一直在调试和查看,我认为问题是我在不同用户和组之间设置了错误的权限。
任何帮助是极大的赞赏。