【问题标题】:How to limit the number of map tasks will be run simultaneously on each DataNode如何限制每个DataNode上同时运行map任务的数量
【发布时间】:2018-04-16 11:38:36
【问题描述】:

环境:

  • Hadoop 3.0.0
  • 1 个名称节点,5 个数据节点

我在mapred-site.yml上配置如下设置,以限制3同时运行的地图任务:

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>mapreduce.tasktracker.map.tasks.maximum</name>
    <value>3</value>
    <description>The maximum number of map tasks that will be run simultaneously by a task tracker.</description>
</property>
<property>
    <name>mapreduce.tasktracker.reduce.tasks.maximum</name>
    <value>3</value>
    <description>The maximum number of reduce tasks that will be run simultaneously by a task tracker.</description>
</property>

但是当我使用以下命令运行 TestDFSIO 基准测试时,实际运行的最大地图任务为8,似乎设置不起作用:

yarn jar /opt/hadoop-3.0.0/share/hadoop/mapreduce/hadoop-mapreduce- 
client-jobclient-3.0.0-tests.jar \
TestDFSIO -storagePolicy HOT -write \
-nrFiles 500 -fileSize 1000MB -resFile /tmp/DFSIO-write.out

任何帮助将不胜感激。

【问题讨论】:

  • 通过限制映射器,您限制了吞吐量。您是否要对某些东西进行基准测试?

标签: hadoop mapreduce hadoop-yarn


【解决方案1】:

该配置参数来自旧的 Hadoop 1.x。据我所知,您使用的是 3.0.0。试试这个:

<property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>3</value>
</property>

您应该在每个运行 NodeManager 的主机上的 yarn-site.xml 中设置它。

【讨论】:

  • 谢谢!是的,这些属性在YARN中已经不存在了(blog.cloudera.com/blog/2013/11/…也是这么说的),但是好像yarn.nodemanager.resource.cpu-vcores是设置容器的个数而不是map task。容器包括map taskreduce taskApplicationMaster
  • 有没有办法限制DataNode上map task的确切数量。
  • 不确定您要达到的目标。如果您希望将映射器的数量限制为例如3,但容器的数量,例如6,然后不,没有直接的方法。
  • 我想设置每个DataNode可以同时运行的map taskreduce task的确切最大数量,例如3个map task和1个recude task
  • @Honghe 如果您限制 NodeManager JVM 的最大可用资源,然后设置单个 YARN 容器的最大可用资源,那么您实际上限制了在该节点上运行的容器总数。据我所知,您不能指定 map 或 reduce 容器
猜你喜欢
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
  • 1970-01-01
  • 2016-04-22
  • 2011-01-04
相关资源
最近更新 更多