我想我的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>
1条答案
按热度按时间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%以上的内存。
希望这有帮助:)。。