HDFS集群正常启动,但Web页面仅有一个DataNode 主节点的问题

博客详细记录了Hadoop集群中,除主节点外的DataNode无法正常启动的问题及解决过程。通过调整各节点core-site.xml配置,特别是fs.defaultFS属性,使所有节点指向同一NameNode,成功解决了LivedataNodes只显示一个节点的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问题描述

三台虚拟机(分别是hadoop02,hadoop03,hadoop04)集群所有数据节点都已经正常启动了,而通过命令hadoop dfsadmin -report 显示的 Live datanodes却只有1个。
问题描述图1
通过web页面查看http://hadoop02:50070,在Live Node那一栏也显示只有1个节点,而且只有主节点hadoop02。Live Nodes为1,Dead Nodes为0,没有显示其他节点存活。
问题描述图2

2.解决过程与我的解决办法

2.1解决过程

上网查找了很多办法,包括:

  1. 重新格式化namenode,再正确配置clusterID,storageID和 datanodeUuid;
  2. 检查 /etc/hosts 正确配置;
  3. 检查防火墙是否关闭 firewall-cmd --state,查看selinux状态 getenforce

    等等均无法正常解决该问题。
2.2我的解决办法
2.2.1问题发现

经过不断寻找调试与求证,发现了问题所在:
第二节点hadoop03和第三节点hadoop04核心文件core-site.xml文件系统配置,
与主节点hadoop02的core-site.xml文件配置不同

具体情况如下:
主节点hadoop02的core-site.xml
问题发现1
第二节点hadoop03的core-site.xml
问题发现2
第三节点hadoop04的core-site.xml
问题发现3

2.2.2问题解决

在hadoop安装目录下,输入
vi etc/hadoop/core-site.xml
将三个节点的核心文件core-site.xml配置为完全相同
主要是第2和第3节点的配置属性fs.defaultFS的值均为主节点hadoop02的value值

	```core-site.xml
	<configuration>
		    <property>
		        <name>hadoop.tmp.dir</name>
				        <value>/root/hadoop/app/hadoop-2.7.6/dir/data</value>
				        <description>Abase for other temporary directories.</description>
		    </property>
		    <property>
				        <name>fs.defaultFS</name>
				        <value>hdfs://hadoop02:9000</value>
		    </property>
	</configuration>
	```

配置修改完成后重启 dfs
stop-dfs.sh
start-dfs.sh
节点启动完成后,命令hadoop dfsadmin -report 显示的 Live datanodes为3,达到预期
问题解决1
Web页面查看http://hadoop02:50070,在Live Node那一栏显示3个节点,,达到预期
问题解决2
以上,问题解决,希望可以帮助到大家

### 解决Hadoop HDFS集群启动时无主节点问题 当遇到`java.io.IOException: Incompatible clusterIDs`错误时,表明NameNode和DataNode之间的Cluster ID不匹配[^1]。这通常发生在重新初始化或恢复旧的HDFS实例之后。 #### 方法一:手动同步Cluster IDs 为了修复这个问题,可以通过以下方式使所有数据节点上的Cluster ID与名称节点一致: 1. 停止当前正在运行的所有Hadoop服务。 2. 删除所有DataNodes上的存储目录并保留配置文件不变。 3. 使用相同版本的Hadoop重新格式化NameNode: ```bash hadoop namenode -format ``` 4. 启动整个集群以确保新的Cluster ID被传播到所有的DataNodes。 这种方法会清除现有的HDFS元数据以及任何已有的文件系统结构;因此只应在测试环境中考虑此方法,在生产环境下应谨慎操作。 #### 方法二:调整配置参数 另一种更安全的方法是在不影响现有数据的情况下更改配置设置来强制让DataNodes接受来自NameNode的新Cluster ID: 编辑 `hdfs-site.xml` 文件加入如下属性: ```xml <property> <name>dfs.namenode.shared.edits.dir</name> <value>/path/to/shared/edits/dir</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> ``` 重启所有节点的服务后尝试再次连接至HDFS. 对于实际部署而言,建议遵循最佳实践将`dfs.name.dir` 和 `dfs.data.dir` 移出临时路径之外,并且为关键组件提供冗余备份机制以防止硬件故障造成的数据丢失[^2]. 此外,确认是否正确设置了必要的环境变量如JAVA_HOME等,并验证防火墙规则允许各节点间的通信端口畅通无阻。 最后值得注意的是,如果仍然无法解决问题,则可能是因为缺少某些必需的服务进程未启动。在一个正常运作的Hadoop集群中,以下是几个重要的守护程序及其功能描述[^3]: - **NameNode**: 负责管理文件系统的命名空间及客户端请求处理. - **Secondary NameNode**: 定期合并fsimage和editlogs日志文件帮助减轻NameNode负担. - **DataNode**: 存储实际的数据块并向NameNode报告状态更新. - **ResourceManager**: 管理资源分配给应用程序执行 (YARN架构). - **NodeManager**: 运行于各个工作节点负责监控本地容器资源使用情况.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值