- NameNode高可用性的2个备用NameNode
NameNode高可用性的2个备用NameNode
1、功能描述:
在Hdfs3.0以前版本中,一个hdfs只有两个namenode服务,一个是active状态,一个是standby 状态。当active namenode进程挂掉后,standby namenode会变成active状态,保证hdfs服务正常运行。但是这时如果这个standby namenode也挂掉了,则hdfs将无法提供服务。基于这种情况,hdfs3.0可以允许有一个active namenode,多个standby namenode,从而防止这种情况发生。
2、功能实现:
由于ambari界面没有直接提供该功能实现。需要我们通过ambari rest api来进行实现。
调整dfs.qjournal.write-txns.timeout.ms 到90s
2.1、安装相关组件
前置条件:先将主机注册到集群中。
在需要安装namenode的节点通过ambari rest api进行安装:
curl -u admin:admin1219 -i -H “X-Requested-By:ambari” -X POST ‘http://10.29.31.243:8080/
/api/v1/clusters/hbcm_ocdp/hosts/hbbdc-sc-rm-01/host_components/NAMENODE’
curl -u admin:admin1219 -i -H “X-Requested-By:ambari” -X PUT ‘http://10.29.31.243:8080/
/api/v1/clusters/hbcm_ocdp/hosts/hbbdc-sc-rm-01/host_components/NAMENODE’ -d ‘{“HostRoles”: {“state”: “INSTALLED”}}’
curl -u admin:admin1219 -i -H “X-Requested-By:ambari” -X POST ‘http://10.29.31.243:8080/
/api/v1/clusters/hbcm_ocdp/hosts/hbbdc-sc-rm-01/host_components/ZKFC’
curl -u admin:admin1219 -i -H “X-Requested-By:ambari” -X PUT ‘http://10.29.31.243:8080/
/api/v1/clusters/hbcm_ocdp/hosts/hbbdc-sc-rm-01/host_components/ZKFC’ -d ‘{“HostRoles”: {“state”: “INSTALLED”}}’
2.2、修改hdfs配置
dfs.ha.namenodes.hbcm_ocdp=nn1,nn2,nn3
dfs.namenode.http-address.hbcm_ocdp.nn3=hbbdc-sc-rm-01:50070
dfs.namenode.https-address.hbcm_ocdp.nn3=hbbdc-sc-rm-01:50470
dfs.namenode.rpc-address.hbcm_ocdp.nn3=hbbdc-sc-rm-01:8020
2.3、关闭hdfs、zkfc的自动重启
2.4、停止StandByNameNodeZKFC
2.5、停止ActiveNameNodeZKFC
2.6、FormatActiveNameNodeZKFC
2.7、启动ActiveNamenodeZKFC
2.8、启动原来namenode对应的StandByNamenodeZKFC
启动原来namenode对应的StandByNamenodeZKFC
2.9、在新加namenode同步元数据
su ocdc
hdfs namenode -bootStrapstandby
2.10、启动新增namenode服务
2.11、启动新增namenode节点ZKFC
注意:⚠️生产环境可以考虑第二个standbynamenode启动完后执行下面的操作(轮询重启)
2.12、重启journalnode
需一个一个重启journal,待一个journal正常后再重启下一个journalnode
2.13、轮询重启datanode
重启所有zkfc,使配置刷到本地磁盘。然后停止zkfc服务,重新format zkfc:
sudo su ocdc -l -c ‘hdfs zkfc -formatZK’
启动zkfc,在新加namenode节点执行:
sudo su ocdc -l -c ‘hdfs namenode -bootStrapstandby’
重启hdfs服务即可。
如果成功,显示如下:
3、回退测试:
3.1、删除还原添加的参数
删除如下属性:
dfs.namenode.http-address.ocdp40.nn3=host-10-25-176-98:50070
dfs.namenode.https-address.ocdp40.nn3=host-10-25-176-98:50470
dfs.namenode.rpc-address.ocdp40.nn3=host-10-25-176-98:8020
还原如下属性:
dfs.ha.namenodes.ocdp40=nn1,nn2
3.2、停止新增StandByNameNodeZKFC
3.3、停止新增NameNode
3.4、Rolling Restart The Datanodes
4.3、停止StandByNameNodeZKFC
4.4、停止ActiveNameNodeZKFC
4.8、重启StandByNamenode
4.3、启动StandByNameNodeZKFC
4.3、启动ActiveNameZKFC
4.10、重启ActiveNameNode
4.10、删除新安装的hdfs组件
curl -u admin:admin1219 -i -H ‘X-Requested-By: ambari’ -X DELETE ‘host-10-25-176-90:8080/api/v1/clusters/ocdp40/hosts/host-10-25-176-98/host_components/NAMENODE’
curl -u admin:admin1219 -i -H ‘X-Requested-By: ambari’ -X DELETE ‘host-10-25-176-90:8080/api/v1/clusters/ocdp40/hosts/host-10-25-176-98/host_components/ZKFC’
4.11、重启journalnode
需一个一个重启journal,待一个journal正常后再重启下一个journalnode