1、背景
有一个hdfs高可用集群,因为某些操作,导致其中一个namenode的信息全部丢失了。最后只剩下一个完整的namenode信息和datanode信息。于是在在启动hdfs后发现独有的namenode始终处于standby状态。即使通过hdfs haadmin -transitionToActive命令也不能强制转换namenode为active。因此hdfs一直不能正常对外提供服务。
2、解决思路
高可用hdfs集群,至少要有两个namenode节点,如果只有一个namenode节点,那么无论怎么启动,namenode节点状态始终为standby。所以如果想将hdfs重新恢复可用,那么可以重新搭建一个namenode节点。然后将完整的namenode元数据重新导入到新namenode中。
3、解决步骤
3.1 准备一个新节点
安装好jdk等基础环境
3.2 关闭hdfs所有进程
3.3 将仅存namenode节点的安装文件夹拷贝到新节点
拷贝时要注意namenode和datanode的存储目录信息。如果namenode和datanode的存储路径就在安装文件夹内,那么拷贝到新节点时要注意删除datanode存储路径下的数据(不删也可以,只是新增的节点只能作为namenode使用,不能作为datanode使用)。
namenode和datanode的存储路径信息可以通过hdfs-site.xml配置文件中的dfs.namenode.name.dir、dfs.datanode.data.dir进行查看

文章描述了一种情况,即在一个HDFS高可用集群中,一个Namenode的信息丢失,导致集群无法正常工作。解决方法包括重新搭建Namenode节点,导入元数据,更新配置,格式化Zookeeper上的Namenode记录,并启动集群。作者还提出了是否可以从高可用状态降级为单Namenode状态的思考。
最低0.47元/天 解锁文章
2784

被折叠的 条评论
为什么被折叠?



