测试环境好久没去关注,今天要测试东西,发现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 之类爆类似信息,应该也是这样的步骤