2015-05-05 69 views
1

我目前有一個運行僞分佈式Hadoop系統。該機器有8個內核(16個虛擬內核),32 GB內存。Yarn和MapReduce資源配置

我的輸入文件介於幾MB到68 MB之間(gzipped日誌文件,一旦它們達到> 60MB,就會上傳到我的服務器,因此無法修復最大大小)。我想在這些文件的大約500-600個上運行一些Hive作業。

由於輸入文件的大小不一致,到目前爲止我還沒有改變Hadoop中的塊大小。據我所知最好的情況下,如果blocksize =輸入文件的大小,但Hadoop填充該塊,直到它的完整,如果該文件小於塊大小?輸入文件的大小和數量如何影響性能,而不是說一個大的〜40 GB文件?

我的這個設置的最佳配置是怎樣的?

根據本指南(http://hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/)我想出了這個配置上:

32 GB內存,2 GB預留給操作系統給了我30720 MB可以分配給紗容器。

yarn.nodemanager.resource.memory-mb=30720 

對於8個內核,我認爲最多10個容器應該是安全的。所以每個容器(30720/10)3072 MB的RAM。

yarn.scheduler.minimum-allocation-mb=3072 

在地圖任務容器我一倍的最小容器大小,這將允許最多5個地圖任務

mapreduce.map.memory.mb=6144 

如果我想最大的3 Reduce任務我分配:

mapreduce.map.memory.mb=10240 

隨着JVM堆大小以裝配到容器:

mapreduce.map.java.opts=-Xmx5120m 
mapreduce.reduce.java.opts=-Xmx9216m 

您是否認爲這種配置會很好,或者您會改變什麼,爲什麼?

回答

2

是的,這個配置很好。但我想提到的變化很少。

對於減速的內存,它應該是 mapreduce.reduce.memory.mb=10240(我認爲它只是一個錯字。)

另外一個主要此外,我會建議將CPU的配置。

你應該把

Container Virtual CPU Cores=15 

的減速,你只運行3減速機,你可以給

Reduce Task Virtual CPU Cores=5 

而對於映射

Mapper Task Virtual CPU Cores=3 

數量的容器是將並行運行(還原器OR(減少OR映射).memory.mb,總計 cores /(Map或Reduce)任務虛擬CPU內核)。

請參考http://openharsh.blogspot.in/2015/05/yarn-configuration.html瞭解詳細的覆蓋。

+0

感謝您的建議!我不能查看那個博客,因爲它只有邀請。我明白了,因爲我有16個內核,我應該爲映射分配'3cores * 5map = 15cores'和'5cores * 3reduce = 15cores'並減少容器,但是爲什麼您選擇了12個容器內核?不應該是15個容器核心? – h2b

+0

是的,它應該只有15。錯字。此外,我還更改了博客的讀取權限。現在你可以看到它。 –