0

Elastic MapReduceジョブを作成し、そのパフォーマンスを最適化しようとしています。

現時点では、インスタンスあたりのマッパーの数を増やしようとしています。私はmapred.tasktracker.map.tasks.maximum=Xを介してこれを行っています

elastic-mapreduce --create --alive --num-instance 3 \
 --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop \
 --args -s,mapred.tasktracker.map.tasks.maximum=5

小さなインスタンスごとにXを2以上に設定しようとするたびに、初期化が失敗し、そこから、hadoopがマップタスクごとに800mのメモリを割り当てたと結論付けます。私にはそれは過度に思えます。トップス400mにしたいのですが。

各マップタスクに使用するメモリを減らすようにHadoopに指示するにはどうすればよいですか?

4

1 に答える 1

3

mapred.child.java.optsプロパティを確認してください。デフォルトは-Xmx200mです。これは、map/reduceタスクごとに200MBのヒープを意味します。

EC2smallには1.7GBのメモリがあるようです。これは、TaskTrackerノードのHadoopプロセスによるデフォルト設定のメモリです。「Hadoop:TheDefinitiveGuide」に感謝します

Datanode 1,000 MB
Tasktracker 1,000
MBTasktracker子マップタスク400MB(2 * 200 MB)
Tasktracker子マップタスク400 MB(2 * 200 MB)

合計で2,800MBになります。

これに加えて、OSメモリがあります。より適切な構成を選択するか、デフォルト設定を変更してください。参考までに、さまざまなノードのH/W構成に関する推奨事項を以下に示します。

于 2011-09-26T17:18:13.883 に答える