问题描述:
在集群模式下更改节点后,启动集群发现 datanode一直启动不起来。
我集群配置:有5个节点,分别为master slave1-5 。
在master以hadoop用户执行:start-all.sh
jps查看master节点启动情况:
NameNode
JobTracker
SecondaryNameNode
均已经正常启动,利用 master:50070 , Live Nodes 为0, 随进入 slave1:
ssh slave1, 输入命令 jps ,发现只有 TaskTracker 而没有DataNode。随后看日志
上网查找解决方法,最后终于解决了,解决方法如下:
1. 先执行stop-all.sh暂停所有服务
2. 将所有Salve节点上的tmp(即 hdfs-site.xml 中指定的 dfs.data.dir 文件夹,DataNode存放数据块的位置)、 logs 文件夹删除 , 然后重新建立tmp , logs 文件夹
3. 将所有Salve节点上的/usr/hadoop/conf下的core-site.xml删除,将master节点的core-site.xml文件拷贝过来,到各个Salve节点
scp /usr/hadoop/conf/core-site.xml hadoop@slave1:/usr/hadoop/conf/
4. 重新格式化: hadoop namenode -format
5. 启动:start-all.sh
此外也可能遇见slave的Datanode错误:
错误1,hadoop datanode 问题 INFO org.apache.hadoop.ipc.RPC: Server at /:9000 not available yet, Zzzzz..
解决方法见:http://blog.sina.com.cn/s/blog_893ee27f0100zoh7.html,
错误2,slave节点的DataNode不能连接master, 日志信息为为: INFO org.apache..ipc.Client: Retrying connect to server: master/172.16.0.100:9000. Already tried 0 time(s);
解决办法:
1、ping master能通,telnet master 9000不能通,说明开启了防火墙
2、关闭master主机防火墙,可以通过/sbin/iptables -F清除所有规则来暂时停止防火墙
如果想清空的话,先执行 /sbin/iptables -P INPUT ACCEPT,然后执行 /sbin/iptables -F
注:这是我碰到的情况,不见得是你遇到的问题,基本上从以下几个方面解决问题:
1. 检查各个xml文件是否配置正确
2. java环境变量配置是否正确
3. ssh是否无密码互通
4, Hadoop离开安全模式,hadoop dfsadmin -safemode leave。
也可以参考这个:http://blog.sina.com.cn/s/blog_76fbd24d01017qmc.html