【问题标题】:How to decide on number of parallel mapers/reducers along with Heap memory?如何确定并行映射器/减速器的数量以及堆内存?
【发布时间】:2012-11-06 23:23:31
【问题描述】:

假设我有一个 EMR 作业在 11 个节点的集群上运行:m1.small 主节点,而 10 个 m1.xlarge 从节点。

现在一个 m1.xlarge 节点有 15 GB 的 RAM。

然后如何决定可以设置的并行映射器和缩减器的数量?

我的工作是内存密集型的,我希望将越来越多的堆分配给 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 个 mapper 和 2 个 reducer)共享还是每个进程都获得 4GB?

【问题讨论】:

    标签: hadoop mapreduce elastic-map-reduce emr


    【解决方案1】:

    他们每人将获得 4gb。

    您应该检查任务跟踪器和数据节点的堆设置是什么,然后您就会知道有多少内存要分配给子节点(实际的映射器/减速器)。

    那么这只是一个平衡行为。如果您需要更多内存,则需要更少的映射器/减速器,反之亦然。

    还要记住你的 CPU 有多少个内核,你不希望单个内核上有 100 个映射任务。要进行调整,最好随着时间的推移监控堆使用情况和 cpu 使用情况,以便您可以调整旋钮。

    【讨论】:

    • 好的,所以对于 m1.xlarge,我们有 15 GB 的 RAM,但我说 2 个映射器和 2 个减速器,那么总共将达到 16 GB,这样做是不是坏主意并拥有它在边缘?
    • 试试看 :-) 如果你得到 OOME,那么你将不得不降低堆空间。在这一点上,它是反复试验。对集群设置进行刻录测试的一种好方法是使用 contrib tera-sort mapreduce 作业,这样您就可以对运行时进行基准测试。考虑到你有多少内存,你可能还想将 io.sort.mb 更新为更高的值。
    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 2016-02-06
    • 2010-10-23
    • 2013-10-23
    • 1970-01-01
    • 2014-09-20
    • 2013-11-09
    • 1970-01-01
    相关资源
    最近更新 更多