天天看點

hadoop線上平滑遷移NameNode說明環境資訊遷移順序準備遷移過程提示

說明

由于 hdfs 的 namenode 如果沒有 active 的後,會導緻 hdfs 整個叢集不可用,是以遷移 namenode 還需要小心。

通過 hdfs ha 模式遷移 hdfs namenode,保證 hdfs 的高可用,本文以較常用的 hbase 作為上遊來舉例。

由于 zk 中存了 namenode 的 host name 與 ip,是以hostname不能變,隻能改變ip。

為保證 hbase 不受影響,也借助了 hbase 的 ha 模式。

環境資訊

  • 老 namenode:nno1、nno2
  • 新 namenode:nnn1、nnn2
  • datanode:dn1、dn2、dn3
  • hbase master:hm1、hm2
  • hbase regionserver:hr1、hr2、hr3
  • hdfs-site.xml:nn1->hdfsNameNode1:9000;nn2->hdfsNameNode2:9000
  • hosts:

nno1 hdfsNameNode1

nno2 hdfsNameNode2

遷移順序

  1. nno1->nnn1
  2. nno2->nnn2

準備

  • 確定 hdfs ha 模式是沒問題的,nno1 與 nno2 的 active 狀态可以正确切換(關閉 standy namenode 服務,另一台能正确變為active)

    提醒,如果 ha 模式切換失敗,可能原因:

  1. 確定 ssh 的登入是完成成功的,如果有授權失敗的日志,要關注。再就是配置好ssh免密後,需要登入一次,不然第一次要輸入 “yes”,hdfs 切換并不會自動輸入。
  2. 日志提示如下,該問題為機器上沒有安裝 fuser,所有 namenode 節點執行

    yum -y install psmisc

    即可

WARN org.apache.hadoop.ha.SshFenceByTcpPort: PATH=$PATH:/sbin:/usr/sbin fuser -v -k -ntcp 9000 via ssh: bash: fuser: command not found

WARN org.apache.hadoop.ha.NodeFencer: Fencing method org.apache.hadoop.ha.SshFenceByTcpPort(null) was unsuccessful.

  • 確定 hbase master 的 ha 模式是沒問題的(即關閉一台master,另一台back master可以立刻切換到master)

遷移過程

  1. 停止 nno1 namenode 服務與 zkfc 服務, 此時 nno2 為active,叢集正常

    nno1機器執行:

    hadoop-daemon.sh stop namenode

    hadoop-daemon.sh stop zkfc

  2. 修改 hdfs 與 hbase 所有機器的 hosts hdfsNameNode1 指向到 nnn1
  3. 将 nnn1、nnn2 設定到所有 hdfs 的機器免密,包括 nno2;将 nno2 設定到 nnn1 免密
  4. 将 hadoop 的檔案 scp 到 nnn1,nnn1 上
  • 配置 nnn1 的 hadoop 環境變量
  • 将該機器設定為 namenode standby 執行

    hdfs namenode -bootstrapStandby

    ,提示都輸入 “yes”,變為新的standby
  • 啟動 namenode

    hadoop-daemon.sh start namenode

  • 啟動 zkfc

    hadoop-daemon.sh start zkfc

  • 此時叢集中 nnn1 成為 nno2 的 standby
  1. 由于 hbase 記憶體中存儲了 hdfs namenode 節點資訊。需要重新開機 hbase 叢集,讓 hbase 擷取新的 hdfs 節點資訊
  • hm1 上,執行

    hbase-daemon.sh restart master

  • hm2 上,hm1啟動無異常,執行

    hbase-daemon.sh restart master

  • hmr* 上,依次執行

    graceful_stop.sh --restart --reload --debug ${regionser-num}

    ,注意:該重新開機為 hbase regionserver 平滑重新開機,故需要觀察 regionserver 的狀态 ok 才可以繼續下一台。
  1. nno2 停止 namenode 服務

    hadoop-daemon.sh stop namenode

    ,讓 nnn1 切換到 “active”,保證叢集正常
  2. nno2 停止 zkfc 服務

    hadoop-daemon.sh stop zkfc

  3. 此時 namenode 隻有 nnn1,遷移 nno2 與 nno1 一緻即可

提示

  1. 遷移過程不必操作太快,實時通過背景關注叢集狀态
  2. 如果 hdfs ha 模式有問題,優先重新開機 namenode 恢複機器為可用模式,以防止 hbase 叢集不可用導緻的業務問題

繼續閱讀