2016-01-25 95 views
0

鑑於我們有一些Hadoop MapReduce任務需要運行。這個MapReduce需要訪問本地驅動器上的一些系統資源,即在某個節點上(實際上,我們必須將該資源放置到所有節點上)。Hadoop:設置MapReduce資源權限

問題是:應將哪些權限授予該資源文件?

我想給它權限,由運行Hadoop的用戶讀取。但實際上該任務將在另一個用戶下執行。那個用戶是'紗'。即如果我想將一些資源放到運行Hadoop Job的用戶的某個主文件夾或相關的Oozie作業等,我不能這樣做,因爲實際上擁有MapReduce的用戶的主文件夾是/ home/yarn /。

解決此問題的最佳方法是什麼? 如何控制在哪個用戶下運行MapReduce? 我在哪裏可以查找該設置?

回答

0

我猜你只需要在HDFS中爲這些資源創建所需的文件夾,並使用'hadoop fs -chmod ..'命令爲這些文件夾和包含的文件設置權限。

請參考下面這個鏈接: https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html

+0

Marco,在我們的情況下,出於安全原因,無法將該文件放到HDFS中。它們應該從羣集節點讀取。 – MiamiBeach

+0

您是否嘗試使用chown將該文件夾的所有者更改爲紗線並執行chmod 644? – Marco99

+0

這次我的意思是簡單的Linux命令。 – Marco99

0

首先聲明「的MapReduce需要訪問本地驅動器上的一些系統資源」 運行在分佈式模式MapReduce的程序時,是不可能。無論您需要什麼文件都應該移到HDFS。爲所有用戶提供文件讀取權限,我希望一切都會好起來。如果您需要在Mapper或Reducer中讀取文件,並且不將該文件作爲MapReduce程序的輸入傳遞,那麼請考慮使用提供MapReduce的分佈式緩存機制。

+0

Prabhu,MapReduce可以從本地節點讀取任何文件。 – MiamiBeach