自动将每个节点的最大映射任务数设置为核心数?

时间:2013-04-25 18:21:07

标签: hadoop

我正在设置一个hadoop集群,其中节点都是相当异构的,即它们每个都有不同数量的核心。目前,我必须手动编辑每个节点上的mapred-site.xml以填写{cores}

<property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
    <value>{cores}</value>
</property>

添加新节点时,有更简单的方法吗?大多数其他值都是默认值,并且最大映射任务是从节点到节点的唯一更改。

1 个答案:

答案 0 :(得分:3)

如果您对某些脚本编写感到满意,那么以下内容将为您提供每台计算机的“处理器”数量(这意味着不同的架构不同,但或多或​​少都是您想要的):

cat /proc/cpuinfo | grep processor | wc -l

然后,您可以使用sed或等效内容根据此输出更新mapred-site.xml文件。

所以把这一切放在一起:

CORES=`cat /proc/cpuinfo | grep processor | wc -l`
sed -i "s/{cores}/$CORES/g" mapred-site.xml

脚注,但您可能不希望将映射器的数量和每个还原器的数量配置为核心数量,更多的是您可能希望在两种类型之间拆分它们并拥有核心备用用于数据节点和任务跟踪器等。