[英]Permission denied when trying to run a job as myuser, but error says root doesn't have enough permissions
我正在嘗試使Hadoop MapReduce工作,但始終面臨訪問問題。 我不確定是什么問題,無論是配置還是其他問題。
例如,當我跑步時,此字數統計
hadoop jar /usr/share/hadoop/hadoop-examples-1.2.1.jar wordcount /user/myuser/input.txt /user/myuser/output.txt
我收到以下錯誤:
14/09/10 20:15:51 INFO input.FileInputFormat: Total input paths to process : 1
14/09/10 20:15:51 INFO mapred.JobClient: Running job: job_201409101946_0010
14/09/10 20:15:52 INFO mapred.JobClient: map 0% reduce 0%
14/09/10 20:15:52 INFO mapred.JobClient: Task Id : attempt_201409101946_0010_m_000002_0, Status : FAILED
Error initializing attempt_201409101946_0010_m_000002_0:
org.apache.hadoop.security.AccessControlException:
org.apache.hadoop.security.AccessControlException: Permission denied: user=root,
access=EXECUTE, inode="job_201409101946_0010":hadoop:supergroup:rwx------
at sun.reflect.GeneratedConstructorAccessor7.newInstance(Unknown Source)
...
顯然,user = root無法訪問用戶hadoop擁有的目錄。 但是問題是我以我的用戶身份運行該作業,而且我不確定為什么根本涉及root用戶。 您知道什么可能導致此問題嗎?
首先, /user/myuser/
應該是HDFS上的路徑,而不是本地路徑。 然后,它需要存在,因此,如果不存在,請運行:
hadoop dfs -mkdir /user/myuser/
,然后
hadoop dfs -chown myuser:groopOfMyuser /user/myuser/
,其中groupOfMyuser
是myuser
所屬的組。
要檢查它是否存在,請運行: hadoop dfs -ls /user/
然后,要將文件上傳到HDFS的輸入目錄,請使用以下命令:
hadoop dfs -copyFromLocal /local/path/input.txt /user/myuser/
請注意,輸入和輸出路徑應該是目錄(在HDFS上),而不是文件。 因此,運行程序的正確命令將是:
hadoop jar /usr/share/hadoop/hadoop-examples-1.2.1.jar wordcount /user/myuser /user/myuser/output
最后,檢查hadoop dirs( $HADOOP_HOME
)是否由myuser
或hadoop
或其他任何人擁有,並以擁有jar的人的身份運行jar,或者使用chown
更改其所有權。
(假設您使用的是舊API,但是您也可以輕松地在新API中找到等效的命令。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.