Hadoop-2.7.3集群(YARN)搭建

在上一篇《Hadoop-2.7.3集群(HDFS)搭建》之后,继续记录整理YARN的搭建。

1、修改mapred-site.xml

<configuration>
       <!--
       <property>
		<name>mapred.job.tracker</name>
		<value>chan.takchi:9001</value>
       </property>
       -->
       <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
       </property>
</configuration>


2、修改yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>chan-takchi</value>
        <description>The hostname of the RM.</description>
    </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>
    <property>
         <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
         <value>100</value>
    </property>
</configuration>


3、测试,运行wordcount,mr运行失败。


在页面上可以看到,任务会一直处在状态,"ACCEPTED: waiting for AM container to be allocated,launched and register with RM.",最终任务失败。

 

4、查看日志并分析

2017-01-18 01:58:03,700 INFO org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher: Error launching appattempt_1484732222847_0002_000001. Got exception: java.net.ConnectException: Call From ubuntu/127.0.1.1 to ubuntu:49135 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused


原因在于,RM和NM机器的hosts文件是一致的,而且yarn-site.xml里的yarn.nodemanager.hostname在没有指定的情况下采用的是主机的hostname,所以NM的地址为ubuntu:49135,而RM访问ubuntu时用的是本地hosts配置的ip,访问了自身49135端口,由于该端口并未打开,所以会访问失败。


5、解决方案


为每个NM配置一个不一样的域名并在yarn.nodemanager.hostname里指定。如果NM默认的hostname一样而yarn.nodemanager.hostname恰巧又没有指定其他域名的话,将会出现以下的情况(Node HTTP Address),无法区分哪一个NM在哪一个机器上。




最后给出能正确运行mr任务的yarn-site.xml配置,这样的一个缺点就是每个NM都要维护一份yarn-site.xml,除非默认的hostname不一样。

 

<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>chan-takchi</value>
        <description>The hostname of the RM.</description>
    </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>
    <property>
         <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
         <value>100</value>
    </property>
    <property>
         <name>yarn.nodemanager.hostname</name>
         <value>chan-takchi-01</value>
    </property>
</configuration>


NOTE:yarn.nodemanager.hostname对应的域名不要配置成“*.*.*”的样子,如“chan.takchi.01”,否则会在启动过程中报以下错误(上一篇文章中的hosts文件相应的域名都要改过来)。

 

Does not contain a valid host:port authority: chan.takchi.01:8040 (configuration property 'yarn.nodemanager.localizer.address')
相关文章
相关标签/搜索