hadoop多次(两次以上)初始化以后,无法启动DataNode节点(已解决)

当多次格式化Hadoop文件系统时,namenode和datanode的namespaceID会不一致,导致datanode无法启动。解决方法包括清理/hadoop.tmp.dir目录或保持namenode和datanode的clusterID一致。确保在执行format前删除对应目录,并启动dfs。
摘要由CSDN通过智能技术生成

1、问题描述:

  多次格式化文件系统时,会出现datanode无法启动

2、问题产生原因:

  执行文件系统格式化时(即执行命令$ bin/hadoop namenode -format 后),会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径)中保存一个hadoopData/name(我的路径配置在core-cite.xml中)文件,记录namespaceID,标识了所格式化的namenode的版本。如果我们频繁的格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径)的hadoopData/name文件(路径为usr/local/hadoop/tmp/dfs/data/hadoopData/name)只是你第一次格式化时保存的namenode的ID,因此就会造成namdenode 的 namespaceID 与 datanode的namespaceID 不一致,从而导致namenode和 datanode的断连。

3、解决方案:

第一种方法

 把/tmp下的Hadoop开关的临时文件删除,或者把/hadoop.tmp.dir目录清空(我是直接删除了:# rm -r /tmp,因为仅仅删除dir发现并没有效果,要根据具体情况解决问题,此处只是提供一个正确的思路)

【注:在每次执行hadoop namenode -format时,都会为NameNode生成namespaceID,,但是在hadoop.tmp.dir目录下的DataNode还是保留上次的namespaceID,因为namespaceID的不一致,而导致DataNode无法启动,所以只要在每次执行hadoop namenode -format之前,先删除hadoop.tmp.dir(路径为 /usr/local/hadoop/下的)tmp目录就可以启动成功,或者删除/usr/local/hadoop/tmp/dfs下的data目录,然后重新启动dfs(在hadoop安装路径 /usr/local/hadoop/ 下,运行命令./sbin/start-dfs.sh)即可。请注意是删除hadoop.tmp.dir对应的本地目录,即/usr/local/hadoop/下的tmp文件夹,而不是HDFS目录。

第二种方法(直接上图)

 

 

 

将slave1中的clusterID=???的这一行替换为master中的对应ID

slave2同理

总之保证主从机器之间的ID一致

注意(master进入的是name,slave进入的是data)

 

最后附上成功后的截图

   

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值