我希望我的映射和reduce任务并行运行。然而,尽管他们使出了浑身解数,但他们仍在按顺序运行。我在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)
但是,我做到了,正如您在下面使用的yarn site.xml和mapred site.xml中看到的那样。但这些任务仍然按顺序运行。请注意,我使用的是开源Apache Hadoop,而不是Cloudera。转移到Cloudera能解决问题吗?还要注意,我的输入文件足够大,dfs.block.size也不应该成为问题。
纱线站点.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>
映射的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>
Container是为在culster的每个节点上执行Map/Reduce任务而保留的逻辑执行模板。
yarn.nodemanager.resource.memory-mb
属性告诉YARN资源管理器为要在节点中调度以执行Map/Reduce任务的所有容器保留那么多ram内存。这是为每个容器保留的内存的最大上限。
但在您的情况下,节点中的可用内存几乎是11GB,并且您已经将yarn.nodemanager.resource.memory-mb
配置为几乎128GB(131072),mapreduce.map.memory.mb
&CCD_ 4为16GB。Map/Reduce容器所需的上限大小为16Gb,高于11GB的可用内存*。这可能是因为在节点中只分配了一个容器来执行。
我们将减少mapreduce.map.memory.mb
、mapreduce.reduce.memory.mb
属性的值,而不是空闲内存的值,以使多个容器并行运行。
还可以看到一些增加可用内存的方法,因为它已经使用了90%以上。
希望这能有所帮助:)。。