我知道还有另外一个问题,但目前还没有答案,所以我会试着更详细地提问。Haddoop - MapReduce在使用YARN时运行速度极其缓慢
我正在Amazon 2 EC2实例上设置的2节点群集上使用Hadoop 2.2.0运行map-reduce作业;主节点是一个介质实例,从节点也是一个介质实例。它的运行速度非常缓慢,需要17分钟,但是当我在同一个簇上运行同样精确的作业而没有纱线时,它会在1分钟内运行。这里是我的mapred-site.xml中的样子:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
如果我的mapreduce.framework属性更改为“本地的,所以该文件只读取:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>local</value>
</property>
</configuration>
然后我可以运行在不到一分钟的时间内完成相同的地图缩小工作。不过,我想使用YARN,这样我就可以通过webapp跟踪map-reduce作业。当我将mapreduce.framework属性设置为yarn时,运行作业需要17分钟以上才能运行完全相同的作业。我无法想象YARN会减缓地图缩减工作的速度,达到如此极端的水平。
我也使用“top”来跟踪我的CPU使用情况,看来当我用纱线运行它时,CPU使用率会在不同节点之间分开,但是当我更改时使用“local”运行的处理是在主节点上完成的。我不确定这是否有意义,因为在我看来,当CPU处理在不同节点之间分开时,它应该运行得更快,而不是更慢。有没有我忘记在Hadoop中进行配置以便更快地在群集上运行?
这里是我的配置文件的其余部分:
核心的site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://namenode:8020</value>
</property>
</configuration>
HDFS-site.xml中
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>file:/home/ubuntu/hadoop/hdfs/snn</value>
</property>
<property>
<name>fs.checkpoint.edits.dir</name>
<value>file:/home/ubuntu/hadoop/hdfs/snn</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/ubuntu/hadoop/hdfs/nn</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/ubuntu/hadoop/hdfs/nn</value>
</property>
</configuration>
纱的site.xml
<configuration>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>namenode:8031</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>namenode:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>namenode:8030</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>namenode:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>namenode:8088</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
机智是否有问题按照我设置的方式?有没有人遇到这个问题?任何帮助将不胜感激,谢谢!