寻求帮助
可怜可怜我,帮帮忙吧
自己用三台虚拟机搭建的Hadoop,live datanode只有一个;
看图
但是我启动的时候是正常的启动,ssh配置也是通的:
master:
slave1:
clusterID一致,就是不知道问题出在哪了。
生怕问得不够清楚:再附上hdfs-site.xml配置:
去看下datanode的日志 既然都起来了 却不能与namenode交互 日志里应该有相应的错误信息
live nodes点进去看看
首先关闭集群
所有节点上把这个 /usr/local/hadoop/dfs 目录删掉
然后重新格式化一下namenode: hdfs namenode -format
重新启动集群
试一下这个!
检查两个slave的日志看看,你jps看到的状态只是在运行但是不一定正常,也许在不停的重试最后超时挂掉
1.运行jps后未显示datenode
未显示datanode的原因一般都是多次格式化HDFS的原因:即多次执行 hdfs namenode -format 的结果。多次格式化会使得name和date下的clusterID不一样。因为每次格式化后name下的clusterID都会被改变,但是data下的clusterID只会在第一次格式化的时候生成,再次格式化的时候其值不会改变。
解决方法:先检查以下两个clusterID是否相同。
cat /usr/local/hdfs/dfs/name/current/VERSION
cat /usr/local/hdfs/dfs/data/current/VERSION
执行jps后,如果没有datanode则这两者的clusterID是不一样的。接下来,需要将data下的clusterID改成name下的clusterID。
修改方法如下:打开此文件,使用命令:
vi /usr/local/hdfs/dfs/data/current/VERSION
打开后点击“i”进入编辑模式,将data下的clusterID修改成与name下的clusterID一样,点击“esc -> :wq”保存并退出。此时先使用stop-all.sh停止所有服务,在重新启动服务 start-all.sh,可以看到datanode出现。
原因
可能是防火墙端口未开放导致的
解决方法
好的,我设法找出问题并找到了解决方法。
问题:
我的从节点没有与主节点通信。因此,我使用以下命令检查了我的机器(Ubuntu)上的防火墙设置
sudo ufw status verbose
命令的输出
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
解决方案:
所以,我的机器拒绝任何传入的请求。所以,我禁用了我的防火墙来验证这个假设。
sudo ufw disable
在禁用防火墙之前,telnet <my_ip_1> 54310
给了我连接超时。但是禁用防火墙后,它工作正常。然后我禁用了所有机器上的防火墙并再次运行 hadoop 的 PI 示例。有效。
然后我重新启用了所有机器上的防火墙
sudo ufw enable
我为来自我自己的 IP 地址的传入请求添加了一些防火墙规则,例如
sudo ufw allow from XXX.XXX.XXX.XXX
或者,如果您想允许 IP 范围为 0-255,那么
sudo ufw allow from XXX.XXX.XXX.0/24
因为,我有 3 台机器。因此,对于每台机器,我添加了其他 2 台机器的 IP 地址。一切都很顺利。
另外
如果ufw
禁用后还不起作用,
尝试下面:
但是“ufw”没有帮助。我需要执行这些命令:
sudo iptables -L -v
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
如有问题及时沟通