linux – YarnApplicationState:ACCEPTED:等待AM容器分配,启动和注册

前端之家收集整理的这篇文章主要介绍了linux – YarnApplicationState:ACCEPTED:等待AM容器分配,启动和注册前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Hadoop生态系统的新手.

我最近在单节点集群上尝试了Hadoop(2.7.1)而没有任何问题,并决定转向具有1个namenode和2个datanode的多节点集群.

但是我面临一个奇怪的问题.无论我尝试运行什么工作,都会遇到以下消息:

在网络界面上:

YarnApplicationState: ACCEPTED: waiting for AM container to be allocated,launched and register

在cli中:

16/01/05 17:52:53 INFO mapreduce.Job: Running job: job_1451083949804_0001

他们甚至没有开始,在这一点上,我不确定我需要做出哪些改变才能使其发挥作用.

这是我试图解决的问题:

>在所有节点上禁用防火墙
>设置较低的资源限制
>在不同的机器,路由器和发行版下进行配置

我真的很感激任何帮助(即使是一分钟的提示)正确的方向.

我已按照这些说明(配置):

> Running Hadoop on Ubuntu Linux (Multi-Node Cluster)
> How To Setup Multi Node Hadoop 2 (YARN) Cluster

解决方法

我终于解决了这个问题.发布详细步骤以供将来参考. (仅适用于测试环境)

Hadoop(2.7.1)多节点集群配置

>确保您拥有一个没有主机隔离的可靠网络.静态IP分配是优选的,或者至少具有非常长的DHCP租用.另外,所有节点(Namenode / master& Datanodes / slaves)都应该有一个具有相同密码的公共用户帐户;如果您不这样做,请在所有节点上创建此类用户帐户.在所有节点上使用相同的用户名和密码会使事情变得不那么复杂.
> [在所有计算机上]首先为单节点群集配置所有节点.您可以使用我在here上发布的脚本.
>在新终端中执行这些命令

[在所有机器上]↴

stop-dfs.sh;stop-yarn.sh;jps
rm -rf /tmp/hadoop-$USER

[仅限Namenode / master]↴

rm -rf ~/hadoop_store/hdfs/datanode

[仅限Datanodes / slaves]↴

rm -rf ~/hadoop_store/hdfs/namenode

> [在所有计算机上]为群集中的所有节点添加IP地址和相应的主机名.

sudo nano /etc/hosts

主机

xxx.xxx.xxx.xxx master
xxx.xxx.xxx.xxy slave1
xxx.xxx.xxx.xxz slave2
# Additionally you may need to remove lines like "xxx.xxx.xxx.xxx localhost","xxx.xxx.xxx.xxy localhost","xxx.xxx.xxx.xxz localhost" etc if they exist.
# However it's okay keep lines like "127.0.0.1 localhost" and others.

> [在所有机器上]配置iptables

允许您计划通过防火墙用于各种Hadoop守护程序的默认或自定义端口

要么

更容易,禁用iptables

>关于发行版的RedHat(Fedora,CentOS)

sudo systemctl disable firewalld
sudo systemctl stop firewalld

>像Debian这样的Debian(Ubuntu)

sudo ufw disable

> [仅限Namenode / master]获取从Namenode(主站)到所有Datnode(从站)的ssh访问.

ssh-copy-id -i ~/.ssh/id_rsa.pub $USER@slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub $USER@slave2

通过运行ping slave1,ssh slave1,ping slave2,ssh slave2等来确认.你应该有一个正确的响应. (记住通过键入exit或关闭终端退出每个ssh会话.为了更安全,我还确保所有节点都能够相互访问,而不仅仅是Namenode / master.)
> [在所有机器上]编辑core-site.xml文件

nano /usr/local/hadoop/etc/hadoop/core-site.xml

核心的site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>master:9000</value>
        <description>NameNode URI</description>
    </property>
</configuration>

> [在所有机器上]编辑yarn-site.xml文件

nano /usr/local/hadoop/etc/hadoop/yarn-site.xml

纱的site.xml

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</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>
</configuration>

> [在所有机器上]修改从属文件,删除文本“localhost”并添加从属主机名

nano /usr/local/hadoop/etc/hadoop/slaves

奴隶

slave1
slave2

(我想只在Namenode / master上使用它也可以工作,但我在所有机器上都这样做了.还要注意,在这个配置中,master只表现为资源管理器,这就是我的意图.)
> [在所有机器上]修改hdfs-site.xml文件,将属性dfs.replication的值更改为> 1(至少到集群中的从站数量;这里我有两个从站,所以我将它设置为2)
> [仅限Namenode / master](重新)通过namenode格式化HDFS

hdfs namenode -format

> [可选]

>从master的hdfs-site.xml文件删除dfs.datanode.data.dir属性.
>从所有slave的hdfs-site.xml文件删除dfs.namenode.name.dir属性.

测试(仅在Namenode / master上执行)

start-dfs.sh;start-yarn.sh

echo "hello world hello Hello" > ~/Downloads/test.txt

hadoop fs -mkdir /input

hadoop fs -put ~/Downloads/test.txt /input

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /input /output

等待几秒钟,映射器和减速器应该开始.

这些链接帮助我解决了这个问题:

> https://stackoverflow.com/a/24544207/2534513
> Hadoop YARN Installation: The definitive guide#Cluster Installation

猜你在找的Linux相关文章