2012-11-02 34 views
0

所以,這裏有一種情況,我有一個hadoop集羣未配置Kerberos安全和工作站。 Hadoop集羣運行Cloudera CDH3發行版。羣集上的數據全部存儲在'hdfs'用戶下。以不同用戶身份運行豬作業

該工作站是Linux或macos工作站,運行一個嵌入PIG客戶端的複雜軟件。 PIG客戶端連接到羣集以運行分析作業。

這是一個問題。羣集上和工作站上的用戶帳戶不同,hadoop羣集中的所有數據都存儲在'hdfs'主目錄用戶工作站上已完全設置的用戶帳戶。是否可以告訴PIG在不同的用戶帳戶下執行作業?目前,豬以當前登錄到工作站的用戶的帳戶嘗試執行作業。作業實際運行,但無法訪問數據,因爲腳本使用相對於HDFS用戶主目錄的路徑。

據我所知,當沒有爲羣集配置安全性時,用戶名只是簡單地通過作業配置.XML傳遞,但出於某種原因,我無法弄清楚如何強制用戶名到該XML文檔中。

回答

1

您無法通過屬性傳遞用戶。安全子系統更復雜,然後簡單地傳遞用戶名。你有四個可能的解決方案:

  1. 在所有禁用安全(爲什麼它沒有需要,如果在「根」賬戶存儲的所有數據?)
  2. 下須藤-u HDFS創建本地工作站和運行軟件的用戶HDFS
  3. 在hadoop集羣上創建本地工作站用戶,爲該用戶創建組併爲此文件添加rigths以將數據讀取到文件。
  4. 不要在'hdfs'下存儲文件,並在工作站和hadoop羣集上創建類似的用戶。

我覺得在你的情況下最好的方法是1.但如果這是不可能的,4是更多的讚賞。

+0

謝謝。我想我必須去選擇1.事情更復雜,我解釋說,工作站實際上是一組不同的工作站,運行有自己的用戶,但他們都需要訪問集羣上的相同數據,它必須在他們的主目錄中。不要問爲什麼我知道這很愚蠢,但事情就是這樣。 – Vlad

3

嘗試設置「HADOOP_USER_NAME」環境變量。
更多詳細信息可在similar question找到。

+0

這個答案實際上解決了這個問題,比接受的問題更適合。特別是當涉及到測試和開發時。 –