如何与Hadoop2.x并行运行mapreduce任务?

huwehgph  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(618)

我想我的Map和减少任务并行运行。然而,尽管尝试了包中的每一个技巧,它们仍然是按顺序运行的。在弹性mapreduce上的hadoop2.4.0中,我读到了如何设置每个节点并发运行的任务的精确最大数量,使用下面的公式,可以设置并行运行的任务的数量。

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

但是,我做到了,正如您从下面使用的yarn-site.xml和mapred-site.xml中所看到的。但是任务仍然是按顺序运行的。注意,我使用的是开放源码的apachehadoop,而不是cloudera。转移到cloudera能解决问题吗?另外请注意,我的输入文件足够大,dfs.block.size也不应该成为问题。
yarn-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>

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>
o2g1uqev

o2g1uqev1#

容器是为在culster的每个节点上执行map/reduce任务而保留的逻辑执行模板。
这个 yarn.nodemanager.resource.memory-mb 属性告诉yarn资源管理器为要在节点中调度以执行map/reduce任务的所有容器保留大量的ram内存。这是为每个容器保留的最大内存上限。
但是在您的情况下,节点中的可用内存几乎是11gb,您已经配置了 yarn.nodemanager.resource.memory-mb 几乎达到128gb(131072), mapreduce.map.memory.mb & mapreduce.reduce.memory.mb 为16gb。map/reduce容器所需的上限大小为16gb,高于11gb的可用内存*。这可能是节点中只分配了一个容器来执行的原因。
我们将降低 mapreduce.map.memory.mb , mapreduce.reduce.memory.mb 属性的值来获得多个并行运行的容器。
还可以看看一些增加可用内存的方法,因为它已经使用了90%以上的内存。
希望这有帮助:)。。

相关问题