hadoop集群出现两个datanode节点互相排斥的情况解决

在配置的3节点Hadoop集群中,发现datanode节点mini2和mini4存在互相排斥现象,即在管理界面中只能看到两者之一存活。经过排查,问题出在它们的datanodeUuid相同,导致节点冲突。解决方法是删除mini4的VERSION文件,重启datanode服务,问题得到解决。

我明明配置了3个节点的datanode,但是在
http://mini2:50070/dfshealth.html#tab-overview
的管理界面了只看到两天存活
Live Nodes 为 2,
Dead Nodes 为 0
我想就算有一台挂掉也不应该是这样,Dead Nodes 应该为 1才对,
然后我切换到Datanodes界面查看:
这里写图片描述

发现mini2和mini3存活, 我就刷新了几下, 发现变成了mini3和mini4存活了, 我一直刷呀刷,发现有mini2就没有mini4,有mini4就没有mini2, mini2与mini4互相排斥,
然后我上传了一个文件,结果mini2挂掉了 , 经过排查发现是我的
/root/apps/hadoop/tmp/dfs/data/current目录下了VERSION文件里:
这里写图片描述

Hadoop集群搭建过程中,DataNode节点丢失是一个常见问题。通常情况下,DataNode节点丢失可能是由于配置错误、多次格式化NameNode、网络问题或存储路径异常导致的。以下是恢复或重新配置DataNode的方法。 ### 1. 检查并修复DataNode ID不一致的问题 当Hadoop集群启动时,NameNode和DataNode之间需要通过唯一标识符(ID)进行通信。如果多次执行`hdfs namenode -format`命令,会导致DataNode的ID发生变化,从而与NameNode不匹配,最终导致DataNode无法注册到NameNode。 **解决方法:** - 进入DataNode所在节点,找到`hadoop.tmp.dir`指定的目录(通常在`core-site.xml`中定义)。 - 删除`data`文件夹下的内容,该文件夹用于存储DataNode的数据。 - 重新启动DataNode服务,系统会自动生成新的ID并与NameNode同步 [^4]。 ### 2. 检查Hadoop配置文件 确保所有节点的配置文件保持一致性,尤其是以下关键配置文件: - `core-site.xml` - `hdfs-site.xml` 确认以下参数正确设置: - `fs.defaultFS` 在`core-site.xml`中指向正确的NameNode地址。 - `dfs.datanode.data.dir` 在`hdfs-site.xml`中指定的DataNode数据存储路径是否有效且具有读写权限。 ### 3. 确保SSH免密登录正常 在集群环境中,NameNode需要通过SSH连接到各个DataNode节点以执行相关操作。如果SSH免密登录配置不正确,可能导致DataNode无法正常启动。 **验证步骤:** - 使用`ssh datanode-hostname`命令测试从NameNode到DataNode的连接。 - 如果提示输入密码,则说明SSH免密配置未生效,需重新配置 [^3]。 ### 4. 更新`slaves`文件 确保NameNode上的`slaves`文件(位于Hadoop安装目录下的`etc/hadoop/slaves`)中包含所有DataNode节点的主机名或IP地址。遗漏此步骤将导致NameNode无法识别新加入的DataNode节点 [^3]。 ### 5. 检查防火墙与端口开放情况 DataNode与NameNode之间的通信依赖于特定端口(如8020、9000等)。如果防火墙阻止了这些端口的通信,DataNode将无法连接到NameNode。 **解决方法:** - 执行`systemctl stop firewalld`临时关闭防火墙进行测试。 - 若确认是防火墙问题,可使用`firewall-cmd`命令开放相应端口 [^2]。 ### 6. 查看日志文件定位具体错误 DataNode启动失败的具体原因可以通过查看日志文件来定位。日志文件通常位于`logs/`目录下,重点关注`hadoop-datanode-<hostname>.log`文件。 常见的错误包括: - 存储路径不存在或权限不足。 - 磁盘空间不足。 - 网络连接超时。 ### 示例代码:检查DataNode状态 ```bash # 登录到DataNode节点后执行以下命令 jps # 正常情况下应看到 DataNode 进程 ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值