2013-11-25 51 views
1

我非常感謝您的幫助。Hadoop:針對多個用戶的僞分佈式模式

我已經使用root用戶憑證以僞分佈模式設置Hadoop。我想爲多個用戶提供訪問權限(讓我們說hadoop1,hadoop2等)能夠在此羣集上提交和運行MapReduce作業。我們如何完成這項工作?

我到目前爲止做了什麼?

> - Setup Hadoop to run in Pseudo-distributed mode 
> - Used "root" user credentials to set this up. 
> - Added users hadoop1 and hadoop2 to a group called "hadoop". 
> - Added root also to be part of the group "hadoop". 
> - Created a folder called hdfstmp and set this as the path for hadoop.tmp.dir. 
> - Started the cluster using bin/start-all.sh 
> - Ran MapReduce jobs using hadoop1 and hadoop2 users. 

我得到了下面的錯誤:

Exception in thread "main" java.io.IOException: Permission denied 
     at java.io.UnixFileSystem.createFileExclusively(Native Method) 
     at java.io.File.createNewFile(File.java:1006) 
     at java.io.File.createTempFile(File.java:1989) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:119) 
  • 爲了克服這個錯誤,我給組 「的Hadoop」 rwx權限到文件夾hdfstmp。這個文件夾的權限看起來像drwxrwxr-x。
  • 使用hadoop1和hadoop2用戶登錄提交MapReduce作業。這項工作運行良好,沒有任何錯誤。

但是,如果我做了一個stop-all.sh,然後做一個start-all.sh,DataNode(偶爾甚至NameNode)不會啓動。當我檢查日誌時,發現錯誤如下:

2013-09-21 16:43:54,518 WARN org.apache.hadoop.hdfs.server.datanode.DataNode:dfs.data.dir中的目錄無效:不正確的許可/ data/hdfstmp/dfs/data,預計:rwxr-xr-x,而實際:rwxrwxr-x

現在,不更改hdfstmp目錄的組所有權,用戶不運行。但是,當NameNode重新啓動時,我得到如上問題。

我該如何解決這個問題?同樣的最佳做法是什麼?

此外,有沒有辦法監測不同用戶提交的作業?我假設Web UI應該允許我這樣做。請確認。

我很感激您可以就此問題提供的任何幫助。謝謝。

問候

+0

當您修改tmp文件夾權限 - 您是否修改HDFS或本地磁盤上的文件夾? –

+0

克里斯 - 我修改了本地磁盤上的權限。 – user3031097

回答

0

增加專用的Hadoop系統用戶

我們將使用專用的Hadoop用戶帳戶運行的Hadoop。雖然這不是必需的,但推薦使用它,因爲它有助於將Hadoop安裝與運行在同一臺計算機上的其他軟件應用程序和用戶帳戶分開(思考:安全性,權限,備份等)。

#addgroup hadoop 
#adduser --ingroup hadoop hadoop1 
#adduser --ingroup hadoop hadoop2 

這會將用戶hduser和組hadoop添加到您的本地計算機。您的Hadoop

更改權限安裝目錄

chown -R hduser:hadoop hadoop 

最後一點變化的hadoop臨時directoy許可

如果你的臨時目錄是/程序/ Hadoop的/ tmp目錄

#mkdir -p /app/hadoop/tmp 
#chown hduser:hadoop /app/hadoop/tmp 

,如果你想加強安全性,chmod來回m 755至750 ...

#chmod 750 /app/hadoop/tmp 
+0

感謝您的回覆。問題:如果我的/ app/hadoop/tmp目錄擁有755權限,這意味着只有擁有者'hduser'可以在該目錄內創建文件,'hadoop'組的成員(在這種情況下爲hadoop1和hadoop2)不能創建這個目錄內的文件。我的理解是否正確?如果是,那麼當用戶hadoop1執行MapReduce作業時,中間數據必須寫入'/ app/hadoop/tmp'目錄,但hadoop1沒有WRITE權限。所以,你會得到一個'權限被拒絕'的錯誤。我的理解是否正確? – user3031097

+0

如果** hadoop1 **和** hadoop2 **都是** hadoop **組的成員,則他們有權讀取和寫入**/app/hadoop/tmp **中的文件。如果你獲得拒絕許可的錯誤,這意味着他們不是** hadoop **組的成員。 – user2486495

+0

我確信我的組已正確設置,並且hadoop用戶是hadoop目錄的一部分。我嘗試了對hadoop目錄和hadoop.tmp.dir目錄的755權限,但仍然收到'Permission Denied'錯誤。我是Linux新手,所以如果我錯了,請糾正我:R-X不允許用戶/組訪問該目錄中的文件,對吧? – user3031097

相關問題