目录
一、问题引出
启用HDFS HA过程中,被人为的中断或意外的中断导致Secondary NameNone还没有被删除。我是 namenode 启动花了 15 分钟 后 我就强制退出了, 真的是手贱啊,查了网上的文章失败后 可以retry 就可以了,自己挖坑自己填。
参考文档:https://www.jianshu.com/p/bc2c6ebef51c
没办法只好想着 回滚之前的操作,当时 只安装了 三台机器的JournalNode ,还有就是多了 一台 NameNode, 没有 ZKFC,具体的话可以我使用了如下的方式进行了查询。
1. 角色查看
#查看namenode主机信息
curl -u admin:admin -i http://namenode:8080/api/v1/clusters/sfyp/host_components?HostRoles/component_name=NAMENODE
#查看secondarynamenode主机信息
curl -u admin:admin -i http://namenode:8080/api/v1/clusters/sfyp/host_components?HostRoles/component_name=SECONDARY_NAMENODE
#查看journalnode主机信息
curl -u admin:admin -i http://namenode:8080/api/v1/clusters/sfyp/host_components?HostRoles/component_name=JOURNALNODE
#查看zkfc主机信息
curl -u admin:admin -i http://namenode:8080/api/v1/clusters/sfyp/host_components?HostRoles/component_name=ZKFC
HDFS 信息查看 ,然后这个没有什么卵用
ZKFC 信息查看
SECONDARY_NAMENODE
为什么 要查看 这些?
其实就是为了 后面的删除 做准备,清楚在那台机器上面安装 以上四个 组件。
二、解决步骤
我做的就是把 多出来的 NameNode 清理掉,因为 不清理掉,你发现 你想在原有的机器上 选 HA 也就是选 你打算 装 snamenode 的节点 已经选不了,后面的 JournalNode我清除不了,我也就没管,ZKFC 我也没装。
1. 清理额外的NAMENODE
#获取NAMENODE节点信息
curl -u admin:admin -H "X-Requested-By: ambari" -X GET http://namenode:8080/api/v1/clusters/sfyp/host_components?HostRoles/component_name=NAMENODE
#选择额外的namenode节点删除
curl -u admin:admin -H "X-Requested-By: ambari" -X DELETE http://namenode:8080/api/v1/clusters/sfyp/hosts/snamenode/host_components/NAMENODE
2. 恢复secondary_namenode
#step1
curl -u admin:admin -H "X-Requested-By: ambari" -X POST -d '{"host_components" : [{"HostRoles":{"component_name":"SECONDARY_NAMENODE"}}] }' http://namenode:8080/api/v1/clusters/sfyp/hosts?Hosts/host_name=snamenode
#step2 启用SECONDARY_NAMENODE
curl -u admin:admin -H "X-Requested-By: ambari" -X PUT -d '{"RequestInfo":{"context":"Enable Secondary NameNode"},"Body":{"HostRoles":{"state":"INSTALLED"}}}' http://namenode:8080/api/v1/clusters/sfyp/hosts/snamenode/host_components/SECONDARY_NAMENODE
#step3
curl -u admin:admin -H "X-Requested-By: ambari" -X GET "http://namenode:8080/api/v1/clusters/sfyp/host_components?HostRoles/component_name=SECONDARY_NAMENODE&fields=HostRoles/state"
secondary_namenode 查看
3. NameNodeHA 启动
因为之前,HA 启动 的过程做了一半,当我清理掉 多余的 namenode 就可以继续 在原来的节点 ,配置 HA了。