2017-03-03 76 views
0

我正在使用AWS EMR運行映射縮減作業。我的輸入集包含100萬個大約15KB的文件。由於輸入文件非常小,所以這將導致大量的映射器。因此,我將s3塊大小更改爲20KB,並使用了5個r3.2xlarge實例,但運行的併發任務數量仍然只有30個。不應該在減少塊大小或減小塊大小後立即運行更多併發映射器,每個映射器採用的內存仍然相同?MapReduce:增加併發映射器任務的數量

我怎麼能限制每個映射器的內存使用量或增加的同時映射任務的數量?目前預計的完成時間爲100小時,將這些文件組合到較少數量的較大文件中,如400MB文件,是否會增加處理時間?

回答

0

減少數據塊的大小可以增加一個特定任務所需的映射器的數量,但不會增加映射器的並行數羣集可以在給定的點也不是內存運行用於這些映射器。

使用5個r3.2xlarge實例,但運行併發任務數爲 還只是30

要找到並行地圖/是一個Hadoop 2 EMR集羣可以支持減速器,請參閱本文AWS EMR Parallel Mappers?

例如:r3.2xlarge * 5核心的:

mapreduce.map.memory.mb 3392 3392 
yarn.scheduler.maximum-allocation-mb 54272 
yarn.nodemanager.resource.memory-mb  54272 

一旦核心節點可以擁有54272/3392 = 16映射器。

因此,一個簇可以具有總的並行16 * 5 = 80映射器。

所以,如果你的工作就像1000名映射器旋轉起來,集羣可以啓動80名映射器與預配置的內存和堆的節點和其他地圖上被簡單地排隊。

如果你想要更多的並行映射器,你可能需要配置較少的內存(基於該數學)和減少堆的映射。