簡體   English   中英

嘗試以myuser身份運行作業時,權限被拒絕,但錯誤顯示root用戶沒有足夠的權限

[英]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/ ,其中groupOfMyusermyuser所屬的組。

要檢查它是否存在,請運行: 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 )是否由myuserhadoop或其他任何人擁有,並以擁有jar的人的身份運行jar,或者使用chown更改其所有權。

(假設您使用的是舊API,但是您也可以輕松地在新API中找到等效的命令。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM