2014-04-23 80 views
1

我知道还有另外一个问题,但目前还没有答案,所以我会试着更详细地提问。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> 

机智是否有问题按照我设置的方式?有没有人遇到这个问题?任何帮助将不胜感激,谢谢!

回答

0

我希望我还记得我在哪里阅读这个,所以我可以给你一个参考。除非您有大尺寸的群集,否则您不会从纱线中获益。