在启动HDFS时,针对集群中namenode无法识别datanode的问题的解决方法

最近由于重装了系统,需要对之前搭建的集群要做些改动。在对每个虚拟机的网络进行正确的配置之后,重新执行hadoop/sbin/start-dfs.sh命令来启动HDFS,然而namenode却无法识别datanode。
后来通过对之前学过的知识进行回顾和梳理发现了问题的所在:
由于场景的改变造成了虚拟机IP地址的改变,在这里虽然在虚拟机中配置网络的IP也做了相应的改变,但是Hadoop集群中的一些自动生成旧文件的内容依旧和你以前的IP地址有关,这就造成NameNode无法识别之前的DataNode。
这里写图片描述
解决办法:
首先了解下namenode初始化工作目录的形成,我们在执行hdfs namenode -format 时只是初始化了namenode的工作目录,而datanode的工作目录是在datanode启动后自己初始化的。所以在这里首先要把各个DataNode下的工作目录进行删除(即HDFS的文件存储目录:hddata/dfs/current目录下的内容全部进行删除)。(如果某个DataNode的工作目录未进行删除,则通过相应的web网页去看HDFS的存储内存时依旧观察不到该DataNode)

其次namenode在format初始化的时候会形成两个标识:
blockPoolId:
clusterId:
这里写图片描述
新的datanode加入时,会获取这两个标识作为自己工作目录中的标识,一旦namenode重新format后,namenode的身份标识已变,而datanode如果依然持有原来的id,就不会被namenode识别。
所以只需要我们把各个DataNode上的工作目录进行删除后,然后在对hadoop的bin目录下执行namenode-format命令即可识别DataNode。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值