Hadoop - 使用YARN时,MapReduce运行速度极慢

时间:2014-04-23 22:18:59

标签: hadoop amazon-ec2 yarn

我知道还有另一个问题,但还没有答案,所以我会尝试更详细地询问。

我正在使用Hadoop 2.2.0在我已在Amazon 2 EC2实例上设置的2节点群集上运行map-reduce作业;主节点是中型实例,从节点也是中型实例。它运行速度非常慢,需要17分钟,但是当我在没有纱线的同一集群上运行相同的工作时,它会在1分钟内运行。这是我的mapred-site.xml的样子:

    <configuration>
      <property> 
        <name>mapreduce.framework.name</name> 
        <value>yarn</value> 
      </property>
    </configuration>

如果我将mapreduce.framework属性更改为“local”,那么该文件只显示为:

    <configuration>
      <property> 
        <name>mapreduce.framework.name</name> 
        <value>local</value> 
      </property>
    </configuration>

然后我可以在不到一分钟的时间内运行相同的map-reduce作业。但是,我想使用YARN,以便我可以通过webapp跟踪map-reduce作业。当我将mapreduce.framework属性设置为yarn运行作业时,运行相同的工作需要17分钟以上。我无法想象YARN会将地图缩减工作放慢到如此极端的水平。

我也使用“top”来跟踪我的CPU使用率,似乎当我用yarn运行它时,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>

我设置的方式有问题吗?还有其他人遇到过这个问题吗?任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

我希望我还记得我读到的地方,所以我可以给你一个参考。除非你有大尺寸的簇,否则你不会受益于纱线。