全部產品
Search
文件中心

E-MapReduce:HDFS高可用相關命令(HaAdmin)介紹

更新時間:Mar 01, 2025

本文為您介紹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