2013-05-27 67 views
1

我剛剛閱讀了一些有關Hadoop here的優秀文檔。看起來Hadoop相對於計算昂貴的數據處理的其他方法(例如heterogenous computing)的主要優點之一是它的scalability。它利用大量數量適中的硬件,而不是使用任何強大而昂貴的機器。使用Hadoop的高性能計算機的成本效益

假設我們可以選擇使用高性能但昂貴的Hadoop計算機。 Can和Hadoop能否有效利用這些昂貴的資源;它是否會自動利用額外的EC2 compute units或者您是否必須自己完成並行編程?性能機器有多少改進?有沒有一種方法來量化更多EC2的價格的性能收益?

回答

1

Hadoop框架在可用時會自動利用多個內核。您不必親自進行並行編程,而這實際上是Hadoop的賣點之一:您只需編寫一次作業而無需擔心線程同步邏輯,然後根據羣集的配置,它將盡可能使用所有核心。

例如,假設您有一個在多TB數據集上運行的作業,該數據集計算出分割後需要運行100個任務。現在,如果您想在10個小型節點(只有1個內核)上運行作業,那麼您的羣集將一次容納10個任務(每個節點有1個任務)。但是如果你想運行它,例如10個m1.large節點(2 x 2核心),你一次可以容納40個任務,所以你的工作比使用相同的工具快4倍m1.small的數量,因爲它會利用額外的核心。

此外,我聽說有人在Hadoop上使用CUDA(有些信息here),亞馬遜有一些集羣GPU實例,所以在這種情況下,您也可以利用GPU。

當使用Hadoop時,您應該根據內核數量推理,而不是機器數量。顯然你想找到一個好的折衷方案,我在過去看到過一個集羣,其中每個節點有很多內核,但磁盤I/O不是很好,所以這引起了集羣中的很多爭論,以減少每個節點的最大任務數量(您可以通過參數mapred.tasktracker.map.tasks.maximummapred.tasktracker.reduce.tasks.maximum控制Hadoop配置)。

我個人發現m1.xlarge實例在一些Hadoop集羣中工作得非常好,而高CPU的實例對我造成了太多的磁盤爭用。