hadoop启动发现datanode启动失败,查看日志提示java.io.IOException: Incompatible clusterIDs

今天有个学生问我一个问题,说自己搭建的hadoop环境,在启动后通过jps指令查看进程发现DateNode进程消失了,不知道是什么原因,下面看看我们是如何来解决的!

第一步:DataNode进程启动失败需要确定启动失败的原因,可以到logs目录查看对应的datanode日志信息。

如果你没有自定义配置日志输出目录,那就默认在${HADOOP_HOME}/logs目录下,通过指令或者下载datanode相关日志文件到本地查看异常信息,这里我们发现异常如下:

java.io.IOException: Incompatible clusterIDs in /opt/modules/hadoop-2.5.0/data/tmp/dfs/data: namenode clusterID = CID-2904e8aa-ff11-4ae7-a64e-c1c8269d1905; datanode clusterID = hadoop-senior.nixuange.com
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:477)
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:226)
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:254)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:975)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:946)
	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:278)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:220)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:812)
	at java.lang.Thread.run(Thread.java:745)

第二步:发现异常原因

我们通过异常信息发现发生异常的原因在于namenode 的clusterID 和datanode clusterID 不一致导致的。

namenode clusterID = CID-2904e8aa-ff11-4ae7-a64e-c1c8269d1905; datanode clusterID = hadoop-senior.nixuange.com

第三步:解决方案

方案1:直接删除hdfs目录,重新格式化hdfs,不过不建议这一种,原因就是太暴力,不适用于生产环境。

方案2:推荐使用

1)查看hdfs-site.xml配置

找到dfs.name.dir(元数据保存目录)和dfs.data.dir(hdfs数据保存目录)的配置(hadoop3.x可能是dfs.namenode.name.dir和dfs.datanode.data.dir,在官方文档有默认值

2)到主节点的${dfs.name.dir}/current下查看VERSION文件,查看clusterID

到从节点的${dfs.data.dir}/current下查看VERSION文件,查看clusterID

发现,两者确实不一样!

3)修改从节点VERSION文件的clusterID与主节点一致

4)保存退出,重启hadoop,发现DataNode进程正常启动。

补充:

1)如果不会搭建hadoop环境可以参考我的大数据系列教程中的问章:

大数据系列教程003-hadoop伪分布式环境搭建步骤

2)clusterID不一致原因:

 当我们执行文件系统格式化时,会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径)中保存一个current/VERSION文件,记录clusterID,标识了所格式化的 namenode的版本。如果我们频繁的格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径)的current/VERSION文件只是你第一次格式化时保存的namenode的ID,因此就会造成datanode与namenode之间的id不一致。

 

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java.io.IOException: Permission denied 是一个Java的异常错误,它表示在执行某个操作时,程序无法获取到所需的权限。根据引用中的描述,这个错误通常出现在Android 7.0及以上版本的手机上,因为这些版本的系统要求应用程序在运行时必须获取相应的权限。 在Android 7.0及以上的版本中,应用程序需要通过动态权限申请的方式来获取存储权限。你可以在应用管理中找到你的app,检查是否已经开启了存储权限。如果没有开启,可以使用一些代码来动态请求权限,以确保应用可以正常访问所需的存储空间。 另外,根据引用中的描述,java.io.IOException: Permission denied 错误也可能与文件操作相关。在进行文件读写等操作时,如果没有相应的权限,就会出现这个异常。因此,你可能需要检查你的代码中是否有对文件的操作,并确保已经获取了正确的权限。 总之,java.io.IOException: Permission denied 错误通常与权限相关,你需要确保你的应用已经获取到了所需的权限,以及在进行文件操作时需要注意权限问题,以避免出现这个异常。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java.io.IOException: Permission denied](https://blog.csdn.net/wan903531306/article/details/78078524)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [报错:java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries....](https://download.csdn.net/download/weixin_42196279/15528823)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [java.io.IOException:Permission denied](https://blog.csdn.net/qq_41861832/article/details/127649888)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值