如何决定并行Map器/还原器以及堆内存的数量?

vql8enpb  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(337)

假设我在11个节点的集群上运行一个emr作业:m1.small master节点,而10个m1.xlarge slave节点。
现在一个m1.xlarge节点有15gb的ram。
然后如何确定可设置的平行Map器和还原器的数量?
我的工作是内存密集型的,我希望有越来越多的堆分配给jvm。
另一个相关问题:如果我们设置以下参数:

<property><name>mapred.child.java.opts</name><value>-Xmx4096m</value></property>
 <property><name>mapred.job.reuse.jvm.num.tasks</name><value>1</value></property>
 <property><name>mapred.tasktracker.map.tasks.maximum</name><value>2</value></property>
 <property><name>mapred.tasktracker.reduce.tasks.maximum</name><value>2</value></property>

那么这个4gb是由4个进程(2个Map器和2个缩减器)共享,还是每个进程都有4gb?

vsaztqbk

vsaztqbk1#

它们将分别获得4gb。
您应该检查任务跟踪器和数据节点的堆设置,然后您就会知道您还有多少内存可以分配给子级(实际的Map器/还原器)。
那只是一种平衡。如果需要更多内存,则需要更少的Map器/还原器,反之亦然。
还要记住你的cpu有多少个内核,你不希望在一个内核上有100个map任务。为了进行调整,最好同时监视堆的使用情况和cpu的使用情况,这样就可以摆弄旋钮了。

相关问题