2012-02-17 64 views
2

我有兩個HDFS集羣,C1和C2。顯然,這兩個數據都存儲大量的數據,但對於這個特定的工作,其中一個數據佔用了大部分必要的數據(比如說C1有90%),其餘數據在C2上。我想寫一個可以在C1上運行的M/R作業,但仍然可以訪問C2上其他10%的數據。 Hadoop是否具有這種內置功能?任何人都遇到過這種情況?一個hadoop MR作業的多個HDFS資源

我有一些想法,我知道將工作:

1)我可以明確地DistCp使用必要的數據,只是在C1上運行,但我希望有一個更清潔,更靈活的解決方案。

2)我已經看到一些HDFSProxy,它似乎可以解決這個問題。任何想法,我可以期待多少的性能打擊?

無論哪種方式,我希望必須付出不得不將所需數據從C2拉到C1的價格,以便C1中的計算節點可以處理數據。

我很新的Hadoop所以任何指針將不勝感激。謝謝!

回答

3

我會繼續回答我自己的問題,以防其他人對未來感到好奇。

原來,Hadoop已經足夠好了,可以實施解決此問題的解決方案。如果輸入列出來自多個名稱節點(即hdfs:// namenode1:12345/file1和hdfs:// namenode2:12345/files2),則Hadoop會自動將文件從第二個羣集複製到第一個羣集並執行。任何運行這些命令的地方都會決定作業將在哪個集羣上執行。

顯然這並不理想,因爲一小部分工作將保證將數據帶到計算中,而不是將計算帶到數據中,但它可以工作。