如何与hadoop 2.x并行运行MapReduce任务?

Met*_*est 4 java hadoop mapreduce bigdata cloudera-cdh

我希望我的地图和减少任务并行运行.然而,尽管尝试了包中的每一个技巧,它们仍然按顺序运行.我从如何在Elastic MapReduce上的Hadoop 2.4.0中设置每个节点的并发运行任务的精确最大数量,使用以下公式,可以设置并行运行的任务数.

min (yarn.nodemanager.resource.memory-mb / mapreduce.[map|reduce].memory.mb, 
 yarn.nodemanager.resource.cpu-vcores / mapreduce.[map|reduce].cpu.vcores)
Run Code Online (Sandbox Code Playgroud)

但是,我这样做了,你可以从我在下面使用的yarn-site.xmlmapred-site.xml中看到.但任务仍按顺序执行.请注意,我使用的是开源Apache Hadoop,而不是Cloudera.转移到Cloudera会解决问题吗?另请注意,我的输入文件足够大,dfs.block.size也应该不是问题.

纱的site.xml

    <configuration>
    <property>
      <name>yarn.nodemanager.resource.memory-mb</name>
      <value>131072</value>
    </property>
    <property>
      <name>yarn.nodemanager.resource.cpu-vcores</name>
      <value>64</value>
    </property>
    </configuration>
Run Code Online (Sandbox Code Playgroud)

mapred-site.xml中

    <configuration>
    <property>
      <name>mapred.job.tracker</name>
      <value>localhost:9001</value>
    </property>

    <property>
      <name>mapreduce.map.memory.mb</name>
      <value>16384</value>
    </property>

    <property>
      <name>mapreduce.reduce.memory.mb</name>
      <value>16384</value>
    </property>

    <property>
        <name>mapreduce.map.cpu.vcores</name>
        <value>8</value>
    </property>

    <property>
        <name>mapreduce.reduce.cpu.vcores</name>
        <value>8</value>
    </property>
    </configuration>
Run Code Online (Sandbox Code Playgroud)

sur*_*iva 5

Container是为在culster的每个节点上执行Map/Reduce任务而保留的逻辑执行模板.

yarn.nodemanager.resource.memory-mb属性告诉YARN资源管理器为节点中要调度的所有容器保留大量的ram内存,以执行Map/Reduce任务.这是将为每个容器保留的内存的最大上限.

但在你的情况下,在节点空闲内存几乎是11GB,并且已配置yarn.nodemanager.resource.memory-mb到几乎128GB(131072),mapreduce.map.memory.mbmapreduce.reduce.memory.mb为16GB.Map/Reduce容器所需的上限大小为16Gb,高于11GB的可用内存*.这可能是您在节点中仅为一个容器分配执行的原因.

我们将减少的价值mapreduce.map.memory.mb,mapreduce.reduce.memory.mb性能比空闲内存的值来获得一个以上的容器上并行运行.

另外还要看一些增加可用内存的方法,因为它已经使用了90%以上.

希望这可以帮助 :) ..