2012-04-09 115 views
4

我已經設置了單節點多用戶hadoop集羣。 在我的羣集中,有一個負責運行羣集的管理員用戶(超級用戶)。所有其他用戶都分配了一個hdfs目錄,如/ home/xyz,其中xyz是用戶名。HDFS主目錄

在unix中,我們可以在/ etc/passwd中更改用戶的默認主目錄。默認情況下,用戶的登錄目錄是主目錄。

如何在hadoop中爲hdfs文件系統執行此操作。 我想要例如,如果用戶輸入: $ hadoop dfs -ls在unix提示符下。 它應列出我分配的主目錄的內容。

此外,hdfs目錄由運行羣集(hadoop超級用戶而不是unix root)的超級用戶創建,然後將所有權轉讓給特定用戶。

回答

7

我不知道這是一件可配置 - 在源DistributedFileSystem(線150)具有getHomeDirectory通話,這似乎是硬編碼:

@Override 
public Path getHomeDirectory() { 
    return makeQualified(new Path("/user/" + dfs.ugi.getShortUserName())); 
} 

你有兩種可能選擇,如果你希望能夠改變這一點:

  • 提交請求以Hadoop的要求一個新的功能 - See this link
  • 自己修改源和重新構建+重新分配的Hadoop-C (簡單的在你的單節點僞集羣中)
+0

嗨克里斯, 很酷的觀察!我會嘗試重建我的源代碼,但只是想知道是否需要按照您提到的那樣進行單一更改,或者有一些其他功能可能需要更改。 – 2012-05-13 08:15:31

+0

從一個hadoop源代碼目錄執行:'grep「\」/ user「* -iRn --include = \ *。java' - 這會捕獲大部分文件,但可能不是全部。修改所有的單元測試,祝你好運! – 2012-05-13 13:51:36

1

tapan,每個用戶在位於/ user/username的HDFS中有一個「home」目錄。例如,如果您鍵入hadoop fs -ls,它將帶您當前的HDFS用戶目錄。我在兩個用戶的單身上進行了檢查。

來到unix像文件(/ etc/passwd)設置,我不知道。但是,這真的很有趣。正如克里斯說,我們可以添加新的功能,像引入user-admin-site.xml像配置文件和添加組,用戶在目錄,主目錄等權限。真的intertesting,我們o試試這個...