本文为您介绍HDFS高可用的相关命令HaAdmin。
背景信息
在Hadoop 2.0.0之前,NameNode在HDFS集群中都是以单节点的形式存在。每个集群只有一个NameNode,如果此NameNode不可用,整个集群都会变成不可用的状态,直到NameNode重新与集群建立连接。
单一NameNode主要从两个方面影响HDFS集群的可用性:
当发生一个计划之外的事件,例如机器宕机,集群将会处于不可用状态,直到手动重启NameNode。
有计划的维护事件,例如软件或硬件升级,也会使得集群存在一个不可用的窗口期。
HDFS高可用特性解决了上述问题,通过提供两个冗余的NameNode(以主动或被动的方式)进行热备,使得集群既可以从机器宕机中快速恢复,同时在计划维护时也能优雅地实现快速恢复。
使用限制
创建集群时,已开启服务高可用。
HDFS HA介绍
EMR高可用集群采用的是HDFS QJM HA,详细信息请参见Architecture。对应的HDFS的部署拓扑结构,请参见HDFS的部署拓扑。
HDFS HA常用命令
查看所有NameNode的状态
执行hdfs haadmin -getAllServiceState
命令,返回所有NameNode的高可用状态。
su - hdfs
hdfs haadmin -getAllServiceState
返回结果如下所示。
master-1-1.c-dadaf2f2bea8****.cn-hangzhou.emr.aliyuncs.com:8021 standby
master-1-2.c-dadaf2f2bea8****.cn-hangzhou.emr.aliyuncs.com:8021 active
master-1-3.c-dadaf2f2bea8****.cn-hangzhou.emr.aliyuncs.com:8021 standby
查看NameNode的active或standby
执行hdfs haadmin -getServiceState <serviceId>
命令,返回active或者standby。
查看nn1的状态
su - hdfs hdfs haadmin -getServiceState nn1
查看nn2的状态
su - hdfs hdfs haadmin -getServiceState nn2
查看nn3的状态
su - hdfs hdfs haadmin -getServiceState nn3
切换NameNode的主备状态
执行hdfs haadmin -failover <serviceId of current active> <serviceId of new active>
命令,切换NameNode的主备状态。
例如,如果nn1当前为Active NameNode,则执行以下命令后,nn2将成为新的Active NameNode。而如果nn2当前已为Active NameNode,则执行以下命令后,nn2仍将保持为Active NameNode。
su - hdfs
hdfs haadmin -failover nn1 nn2
执行成功后会返回如下结果。
Failover to NameNode at master-1-2.c-dadaf2f2bea8****.cn-hangzhou.emr.aliyuncs.com successful
- 本页导读 (1)
- 背景信息
- 使用限制
- HDFS HA介绍
- HDFS HA常用命令
- 查看所有NameNode的状态
- 查看NameNode的active或standby
- 切换NameNode的主备状态