查看 Cloudera 的安装说明,我没有看到任何关于如何以普通用户身份运行作业的提及。
当我尝试运行示例作业时,我得到的结果如下:
hadoop jar /usr/lib/hadoop/hadoop-*-examples.jar pi 2 100000
Number of Maps = 2
Samples per Map = 100000
Wrote input for Map #0
Wrote input for Map #1
Starting Job
org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=myuser, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
一个解决方案是设置“/”的权限以允许所有用户写入。
我在网上看到的另一种解决方案是设置一个属性mapreduce.jobtracker.staging.root.dir
,但我不确定在哪里设置:
http://getsatisfaction.com/cloudera/topics/unable_to_run_mapreduce_job_in_cdh3_cluster_permission_denied
我猜测有一种标准的方法来处理这个问题(即并非所有运行 Hadoop 作业的用户都具有 root 访问权限,也不是所有 HDFS root 的权限都是开放的标准)
编辑:仍然停留在这个问题上,但我将问题重新发布到了 Cloudera 的邮件列表...希望那里或这里的某个人会回复:) 谢谢!
答案1
我能够使用以下设置来实现这个功能:
<configuration>
<property>
<name>mapreduce.jobtracker.staging.root.dir</name>
<value>/user</value>
</property>
#...
</configuration>
还需要重新启动 jobtracker 服务(特别感谢 Hadoop 邮件列表上的 Jeff 帮助我追踪问题!)