2017-03-03 7 views
0

AWS EMRを使用してマップ削減ジョブを実行しています。私の入力セットには、それぞれ約15KBの1百万のファイルが含まれています。入力ファイルは非常に小さいので、これは膨大な数のマッパーにつながります。したがって、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マッパーのようにスピンアップした場合、clusterはそのあらかじめ設定されたメモリーとヒープを持つ80マッパーを起動でき、他のマッパーは単にキューアップされます。

さらに多くの並列マッパーが必要な場合は、(計算に基づいて)メモリを少なく設定し、マッパーのヒープを少なくすることができます。

関連する問題