配置了三台datanode,启动hdfs集群后只有一台启动成功

本文介绍了一个HDFS集群中DatANode启动失败的问题排查过程。由于使用rsync同步脚本时参数设置不当,导致所有节点上的DatANode VERSION文件相同,进而引发集群中仅能启动一个DatANode的情况。通过清理数据目录并重新格式化NameNode解决了该问题。

配置了三台datanode,启动hdfs集群后只有一台启动成功…

本人是大数据初学者,集群规划为hadoop01(namenode、datanode),hadoop02(datanode),hadoop03(datanode),之前集群配置都没问题,hive,spark都ok;但过了段时间后start-dfs.sh启动hdfs集群时只能启动一台datanode,而且关掉再启动时启动成功的那台datanode不确定,一会儿是hadoop01,一会儿是hadoop02,一会儿是hadoop03。想想没什么误操作,也没什么骚操作,但就是只能启动一台datanode;之后检查配置文件也没问题,然后查看datanode的VERSION文件时,终于知道哪里出错了。

原来是在学习hbase时,hadoop01配置好hbase,使用xsync脚本分发给其他两台节点hadoop02和hadoop03时,传的参数是/opt/module/,导致同在module目录下的hadoop目录也被分发了。。。三台机器的module目录下的内容一毛一样,尤其是hadoop中datanode的VERSION文件。。。。。。。。

在/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current的VERSION文件里有datanode的版本等信息,它们只有集群ID是一样的,其它不一样;因为是学习环境,hdfs没啥数据,直接把hadoop家目录里的logs和data目录删掉,格式化namenode,重新启动集群就ok了。
在这里插入图片描述

#####正常启动的集群中各个datanodeVERSION文件内容
#####hadoop01节点的datanode的VERSION文件内容
#Sun Nov 22 21:27:38 CST 2020
storageID=DS-dc6e37f1-531d-44a4-bcca-df79f6c91d4b
clusterID=CID-93ce2e8d-2963-4aff-b296-2ee2fb325c9f
cTime=0
datanodeUuid=b9e81c7e-28b3-47c0-87f5-5000cd978c11
storageType=DATA_NODE
layoutVersion=-56

#####hadoop02节点的datanode的VERSION文件内容
#Sun Nov 22 21:27:39 CST 2020
storageID=DS-dae5286a-5d6c-4d3f-b5ab-abb1f0eb7860
clusterID=CID-93ce2e8d-2963-4aff-b296-2ee2fb325c9f
cTime=0
datanodeUuid=02cc2c95-d0a5-4898-9be9-f5094aa29aa8
storageType=DATA_NODE
layoutVersion=-56

#####hadoop03节点的datanode的VERSION文件内容
#Sun Nov 22 21:27:39 CST 2020
storageID=DS-2973c073-e73d-4964-99cb-45e04a186cd0
clusterID=CID-93ce2e8d-2963-4aff-b296-2ee2fb325c9f
cTime=0
datanodeUuid=95839a2f-c21b-4004-80ff-6a9048b33e1d
storageType=DATA_NODE
layoutVersion=-56

#集群里datanode的clusterID是相同的,storageID和datanodeUuid是不一样的

我使用rsync分发文件导致把hadoop01的datanodeVERSION文件也分发给了hadoop02和hadoop03,它们三个的VERSION文件一模一样,当然只能启动一个datanode而且还不一定是启动的哪台。。。。。。

### 网络配置问题 虚拟机集群三台机器启动后只能访问第一台,最常见的原因是网络配置不正确。在虚拟化环境中,网络模式通常有桥接模式、NAT模式和仅主机模式。如果使用桥接模式,则每台虚拟机都会获得一个独立的IP地址,可以直接在局域网中通信;如果使用NAT模式,则虚拟机共享宿主机的IP地址,虚拟机之间通信需要通过内部网络实现;如果使用仅主机模式,则虚拟机只能在内部网络中通信,无法访问外部网络[^2]。 - **检查虚拟机IP地址**:确保三台虚拟机的IP地址配置正确,并且在同一子网中。例如,三台机器的IP应分别为`192.168.3.100`(Namenode)、`192.168.3.110`(Datanode1)、`192.168.3.120`(Datanode2)[^2]。 - **确认网络模式**:检查虚拟机是否配置为桥接模式或NAT模式,并确保三台机器处于相同的网络环境中,以便实现彼此之间的通信。 - **检查防火墙设置**:确保三台机器上的防火墙规则允许必要的端口通信,例如Hadoop使用的`9000`端口(HDFS)、`50070`端口(HDFS Web UI)、`8088`端口(YARN Web UI)等。可以使用以下命令关闭防火墙进行测试: ```bash systemctl stop firewalld ``` ### SSH免密登录配置问题 Hadoop集群要求各个节点之间能够通过SSH免密登录进行通信。如果没有正确配置SSH免密登录,可能会导致主节点无法连接到从节点,从而只能访问第一台机器。 - **生成SSH密钥对**:在主节点上执行以下命令生成SSH密钥对(如果尚未生成): ```bash ssh-keygen -t rsa -P '' ``` - **分发公钥**:将主节点的公钥复制到所有从节点上,确保免密登录可用: ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.3.110 ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.3.120 ``` - **验证免密登录**:尝试从主节点SSH到从节点,确保无需输入密码即可登录。 ### Hosts文件配置问题 在Hadoop集群中,每台机器的`/etc/hosts`文件需要正确配置主机名和IP地址映射,否则可能导致节点之间无法通过主机名解析彼此的IP地址,从而无法通信。 - **配置`/etc/hosts`文件**:确保三台机器的`/etc/hosts`文件中包含以下内容: ``` 192.168.3.100 master 192.168.3.110 slave01 192.168.3.120 slave02 ``` - **配置主机名**:确保每台机器的主机名正确设置,可以使用以下命令修改主机名: ```bash hostnamectl set-hostname master ``` ### Hadoop配置文件问题 Hadoop配置文件(如`core-site.xml`、`hdfs-site.xml`、`yarn-site.xml`、`mapred-site.xml`)中涉及节点通信的参数需要正确配置,否则可能导致节点之间无法正常通信。 - **检查`workers`文件**:确保`$HADOOP_HOME/etc/hadoop/workers`文件中包含所有从节点的主机名: ``` slave01 slave02 ``` - **检查HDFS配置**:确保`hdfs-site.xml`中的`dfs.replication`参数设置为合理的副本数(通常为2或3),并且`dfs.namenode.http-address`和`dfs.namenode.rpc-address`指向正确的主机名和端口。 - **检查YARN配置**:确保`yarn-site.xml`中的`yarn.resourcemanager.hostname`指向ResourceManager所在的主机名,并且`yarn.nodemanager.aux-services`配置正确。 ### 数据节点版本一致性问题 在某些情况下,如果Hadoop的数据节点(Datanode)的`VERSION`文件内容不一致,可能会导致部分数据节点无法正常注册到NameNode,从而只有一台数据节点生效。这是因为在使用`xsync`脚本同步配置文件时,可能将`/opt/module/hadoop/data`目录下的`VERSION`文件也同步到其他节点,导致所有数据节点的`VERSION`文件内容相同,从而引发冲突[^4]。 - **删除并重新生成VERSION文件**:进入每台数据节点的`/opt/module/hadoop/data`目录,删除旧的`VERSION`文件,并重新启动Hadoop集群,让系统自动生成新的`VERSION`文件。 ### 日志排查 如果上述方法都无法解决问题,可以通过查看Hadoop的日志文件进一步排查。Hadoop的日志文件通常位于`$HADOOP_HOME/logs`目录下,重点关注`hadoop-<user>-namenode-<hostname>.log`和`hadoop-<user>-datanode-<hostname>.log`文件,查找是否有连接失败、权限问题或配置错误的提示。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值