hadoop:namenode/datanode启动失败 incompatible错误解决

在测试环境中,HDFS由于NameNode和DataNode的namespaceID或clusterID不一致导致服务无法启动。通过检查和同步各节点的配置,特别是dfs.namenode.name.dir和dfs.datanode.data.dir下的VERSION文件,确保namespaceID和clusterID相同,解决了启动问题。此外,确保block-poolID的一致性,并在调整后备份并删除多余目录的VERSION文件,最终成功启动所有HDFS服务。

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

测试环境好久没去关注,今天要测试东西,发现hdfs挂了
小伙子们只管自己开发用的kafka\zookeeper没挂,开发后台应用就不管其它组件了
年轻人不讲武德

然后ambari前端启动hdfs全部服务

datanode都ok,就是两个namenode 死活起不来

查看后台日志,就是 namespaceID incompatible

[namenode都挂了,hdfs就是没用了,把启动了的datanode等相关组件先关了,以免影响]

查资料,hdfs-site.xml 中的
dfs.namenode.name.dir 中各个节点可能不一致(网上都是datanode,但是namenode也是一样,有两台activety和standy的要同步的嘛)

看了,是个多目录

同一节点,多目录下 VERSION中 namenodeID clusterID都不一样
另一个namenode,也是

常规,根据时间戳,回到老的,或者想要最新数据,弄最新的也行

但还是为了更靠谱一点,查看每隔datanode中 VERSION

但是datanode 里面存储的目录就不一样了 ,是 dfs.datanode.data.dir
也是个多目录的

因为都是启动成功了的,所以多目录,多节点都是一样的

可以看到 datanode与namenode中 的 clusterID异同

大概推断用那个弄成同一个 的namespaceID clusterID

[datanode都是ok的,可能是小伙子们乱配配置文件,没有统一更新或启动成功,导致namenode节点上 的不一致了 ,所以]用datanode中的clusterID 找namenode中对应的namespaceID]

修改两台namenode 下的VERSION中 namespaceID clusterID

先启动namenode 起不起来

硕士 poolId 不一样了,哈哈,还是 多目录作怪,同节点 多目录 信息都要一样

查看的 第一个目录 当时就是和 datanode 一样的 ,那么就以它为准

然后想到这个多目录,应该就是多次同步记录变化过程,让检验更严格一点来的

那么我直接删除第一个目录下 后面其它目录的文件, 重启应当就是 按顺序 没有就不会去检验,有的就要去检验是否一致

为了不出错,先备份所有 多级目录VERSION

然后删除 两个namenode 的 除了 第一个目录下 其它目录的 VERSION
[还要注意,两个namenode的第一目录VERSION中的 block-poolID是不是一致,我的是本来就一致,脑袋想一想都知道校验同步的,应该是一致的,但也有可能不是,为什么?因为standy的是要通过journal节点慢慢同步主的FSImage和Editlog的,block-poolID中间可能会有变化]

两个namenode,我也忘了那个是activity,随便一台启动 ,最后发现是 standy

然后启动另一个 ,都是成功

再启动 datanode , journal, zkfailover之类的都ok

完结

扩展,datanode journal 之类爆类似信息,应该也是这样的步骤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值