Ash*_*ngh 7 linux hadoop mapreduce distributed-computing hadoop-yarn
我是Hadoop生态系统的新手.
我最近在单节点集群上尝试了Hadoop(2.7.1)而没有任何问题,并决定转向具有1个namenode和2个datanode的多节点集群.
但是我面临一个奇怪的问题.无论我尝试运行什么工作,都会遇到以下消息:
在网络界面上:
YarnApplicationState: ACCEPTED: waiting for AM container to be allocated, launched and register
Run Code Online (Sandbox Code Playgroud)
在cli中:
16/01/05 17:52:53 INFO mapreduce.Job: Running job: job_1451083949804_0001
Run Code Online (Sandbox Code Playgroud)
他们甚至没有开始,在这一点上,我不确定我需要做出哪些改变才能使其发挥作用.
这是我试图解决的问题:
我真的很感激任何帮助(即使是一分钟的提示)正确的方向.
我已按照这些说明(配置):
我终于解决了这个问题.发布详细步骤以供将来参考.(仅适用于测试环境)
Hadoop(2.7.1)多节点集群配置
在新终端中执行这些命令
[在所有机器上] ↴
stop-dfs.sh;stop-yarn.sh;jps
rm -rf /tmp/hadoop-$USER
Run Code Online (Sandbox Code Playgroud)
[仅限Namenode/master] ↴
rm -rf ~/hadoop_store/hdfs/datanode
Run Code Online (Sandbox Code Playgroud)
[仅限Datanodes/slaves] ↴
rm -rf ~/hadoop_store/hdfs/namenode
Run Code Online (Sandbox Code Playgroud)[在所有计算机上]为群集中的所有节点添加IP地址和相应的主机名.
sudo nano /etc/hosts
Run Code Online (Sandbox Code Playgroud)
主机
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.
Run Code Online (Sandbox Code Playgroud)[在所有机器上]配置iptables
允许您计划通过防火墙用于各种Hadoop守护程序的默认或自定义端口
要么
更容易,禁用iptables
在RedHat上喜欢发行版(Fedora,CentOS)
sudo systemctl disable firewalld
sudo systemctl stop firewalld
Run Code Online (Sandbox Code Playgroud)像Debian这样的Debian(Ubuntu)
sudo ufw disable
Run Code Online (Sandbox Code Playgroud)[on 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
Run Code Online (Sandbox Code Playgroud)
通过运行确认的事情ping slave1,ssh slave1,ping slave2,ssh slave2等你应该有一个适当的反应.(请记住通过键入exit或关闭终端退出每个ssh会话.为了更安全,我还确保所有节点都能够相互访问,而不仅仅是Namenode/master.)
[在所有机器上]编辑core-site.xml文件
nano /usr/local/hadoop/etc/hadoop/core-site.xml
Run Code Online (Sandbox Code Playgroud)
核心的site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>master:9000</value>
<description>NameNode URI</description>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)[在所有机器上]编辑yarn-site.xml文件
nano /usr/local/hadoop/etc/hadoop/yarn-site.xml
Run Code Online (Sandbox Code Playgroud)
纱的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>
Run Code Online (Sandbox Code Playgroud)[在所有机器上]修改从属文件,删除文本"localhost"并添加从属主机名
nano /usr/local/hadoop/etc/hadoop/slaves
Run Code Online (Sandbox Code Playgroud)
奴隶
slave1
slave2
Run Code Online (Sandbox Code Playgroud)
(我想只在Namenode/master上使用它也可以工作,但无论如何我在所有机器上都这样做.还要注意,在这个配置中,master只表现为资源管理器,这就是我的意图.)
dfs.replication> 1(至少为集群中的从属数量;此处我有两个从属设备,因此我将其设置为2)[仅限Namenode/master](重新)通过namenode格式化HDFS
hdfs namenode -format
Run Code Online (Sandbox Code Playgroud)dfs.datanode.data.dir从master的hdfs-site.xml文件中删除属性.dfs.namenode.name.dir从所有slave的hdfs-site.xml文件中删除属性.测试(仅在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
Run Code Online (Sandbox Code Playgroud)
等待几秒钟,映射器和减速器应该开始.
这些链接帮助我解决了这个问题:
| 归档时间: |
|
| 查看次数: |
7225 次 |
| 最近记录: |