如何告诉hadoop分配多少内存给单个mapper作业



我创建了一个Elastic MapReduce作业,我正在尝试优化它的性能。

在这个时刻,我试图增加每个实例的映射器的数量。我通过mapred。tasktracker。map。tasks。max =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为每个map任务分配了800m的内存。对我来说,这似乎太过分了。我希望它是400米的顶部。

如何告诉hadoop为每个map任务使用更少的内存?

检查mapred.child.java.opts属性。默认为-Xmx200m,这意味着每个map/reduce任务有200MB的堆。

看起来EC2小有1.7 GB内存。下面是TaskTracker节点上Hadoop进程默认设置的内存。感谢"Hadoop:权威指南"

Datanode 1000mb
Tasktracker 1,000 MB
Tasktracker子map任务400mb (2 * 200mb)
Tasktracker子map任务400mb (2 * 200mb)

总容量为2800mb。

在此之上,有操作系统内存。要么选择更好的配置,要么更改默认设置。仅供参考,以下是针对不同节点的H/W配置的建议。

相关内容

  • 没有找到相关文章