HDFS高可用相关命令(HaAdmin)介绍

更新时间:2025-02-28 02:36:31

本文为您介绍HDFS高可用的相关命令HaAdmin。

背景信息

Hadoop 2.0.0之前,NameNodeHDFS集群中都是以单节点的形式存在。每个集群只有一个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

查看NameNodeactivestandby

执行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的主备状态