HBase回滾:版本恢復(fù)

2018-02-27 15:22 更新

HBase回滾

當(dāng)你在試著升級 HBase 的時候,你可能會遇到升級失敗的問題,并且想要將其恢復(fù)成之前的版本。本節(jié)就介紹如何執(zhí)行回滾以將 HBase 恢復(fù)為到較早的版本。請注意,這應(yīng)該只在主要版本和一些次要版本之間需要。您應(yīng)該始終能夠在相同次要版本的 HBase Patch 版本之間進(jìn)行降級。這些說明可能要求您在開始升級過程之前注意相關(guān)的事項,因此請務(wù)必事先閱讀本節(jié)。

HBase回滾注意事項

回滾與降級:

本節(jié)介紹如何對 HBase 次要版本和主要版本之間的升級執(zhí)行回滾。在本文檔中,回滾指的是采取??升級后的集群并將其恢復(fù)到舊版本的過程,同時丟失升級后發(fā)生的所有更改。相比之下,群集降級會將升級后的群集恢復(fù)到舊版本,同時保留升級后寫入的任何數(shù)據(jù)。我們目前僅提供回滾 HBase 集群的說明。此外,只有在執(zhí)行升級之前遵循這些說明,回滾才有效。

當(dāng)這些指令談?wù)摶貪L與降級的先決條件群集服務(wù)(即HDFS)時,您應(yīng)該將服務(wù)版本與退化的降級案例視為相同。

復(fù)制:

除非您正在執(zhí)行全部服務(wù)回滾,否則 HBase 群集將會丟失任何配置的對等 HBase 復(fù)制。如果您的集群配置為 HBase 復(fù)制,那么在按照這些說明進(jìn)行操作之前,您應(yīng)該記錄所有復(fù)制節(jié)點。執(zhí)行回滾之后,您應(yīng)該將每個記錄的對等點添加回群集。另外要注意,自升級后寫入群集的數(shù)據(jù)可能已經(jīng)或可能未被復(fù)制到任何對等方。

數(shù)據(jù)地點:

除非您正在執(zhí)行全部服務(wù)回滾,否則通過回滾過程可能會破壞Region Server的所有局部位置。在群集有時間通過緊湊排列恢復(fù)數(shù)據(jù)位置之前,您應(yīng)該期望性能的降級。或者,您可以強(qiáng)制壓縮來加速此過程,但要以生成群集負(fù)載為代價。

可配置的位置:

以下說明假設(shè) HBase 數(shù)據(jù)目錄和 HBase znode 的默認(rèn)位置。這兩個位置都是可配置的,您應(yīng)該在繼續(xù)操作之前驗證群集中使用的值。如果您有不同的值,只需將默認(rèn)值替換為在配置中找到的 HBase 數(shù)據(jù)目錄,它是通過密鑰 "HBase" (rootdir) 配置的,并且具有默認(rèn)的 "/HBase"。* HBase znode通過密鑰'zookeeper.znode.parent'進(jìn)行配置,默認(rèn)值為'/ hbase'。

所有服務(wù)回滾

如果您要執(zhí)行 HDFS 和 ZooKeeper 服務(wù)的回滾,那么 HBase 的數(shù)據(jù)將在此過程中回滾。

要求

  • 能夠回滾 HDFS 和 ZooKeeper

升級前

在升級前不需要額外的步驟。作為一項額外的預(yù)防措施,您可能希望使用 distcp 將 HBase 數(shù)據(jù)備份到要升級的群集之外。為此,請本節(jié)內(nèi)容中的按照“HDFS降級后回滾”的“升級前”部分中的步驟操作,但它是復(fù)制到另一個 HDFS 實例,而不是在同一實例中。

執(zhí)行回滾

  1. 停止 HBase
  2. 執(zhí)行 HDFS 和 ZooKeeper 的回滾(HBase 應(yīng)該保持停止?fàn)顟B(tài))
  3. 將安裝的 HBase 版本更改為以前的版本
  4. 啟動 HBase
  5. 驗證 HBase 內(nèi)容 - 使用 HBase shell 列出表格并掃描一些已知值。

HDFS 回滾和 ZooKeeper 降級后回滾

如果您將回滾 HDFS,但通過 ZooKeeper 降級,那么 HBase 將處于不一致的狀態(tài)。在完成此過程之前,您必須確保集群未啟動。

要求

  • 能夠回滾 HDFS
  • 能夠降級 ZooKeeper

升級前

在升級前不需要額外的步驟。作為一種額外的預(yù)防措施,您可能希望使用 distcp 將 HBase 數(shù)據(jù)備份到要升級的群集之外。為此,請本節(jié)內(nèi)容中的按照“HDFS降級后回滾”的“升級前”部分中的步驟操作,但它將復(fù)制到另一個HDFS實例,而不是在同一實例中。

執(zhí)行回滾

  1. 停止 HBase
  2. 執(zhí)行 HDFS 回滾和 ZooKeeper 降級(HBase 應(yīng)該保持停止?fàn)顟B(tài))
  3. 將安裝的 HBase 版本更改為以前的版本
  4. 清除與 HBase 相關(guān)的 ZooKeeper 信息。警告:此步驟將永久銷毀所有復(fù)制對等點。
    清理 ZooKeeper 中的 HBase 信息:
    [hpnewton@gateway_node.example.com ~]$ zookeeper-client -server zookeeper1.example.com:2181,zookeeper2.example.com:2181,zookeeper3.example.com:2181
    Welcome to ZooKeeper!
    JLine support is disabled
    rmr /hbase
    quit
    Quitting...
  5. 啟動 HBase
  6. 驗證 HBase 內(nèi)容 - 使用 HBase shell 列出表格并掃描一些已知值。

HDFS 降級后回滾

如果您要執(zhí)行 HDFS 降級,則無論ZooKeeper是否通過回滾、降級或重新安裝,您都需要遵循這些指示信息。

要求

  • 可以降級 HDFS
  • 升級前群集必須能夠運行 MapReduce 作業(yè)
  • HDFS 超級用戶訪問
  • 在 HDFS 中至少有兩個 HBase 數(shù)據(jù)目錄的副本空間

升級前

在開始升級過程之前,您必須對 HBase 的支持?jǐn)?shù)據(jù)進(jìn)行完整備份。以下說明介紹了在當(dāng)前HDFS實例中備份數(shù)據(jù)的過程。或者,您可以使用 distcp 命令將數(shù)據(jù)復(fù)制到另一個 HDFS 群集。

  1. 停止 HBase 群集
  2. 將 HBase 數(shù)據(jù)目錄復(fù)制到備份位置, 方法是使用 distcp 命令作為 HDFS 超級用戶 (下面顯示在啟用安全的群集上);
    使用distcp備份HBase數(shù)據(jù)目錄:
    [hpnewton@gateway_node.example.com ~]$ kinit -k -t hdfs.keytab hdfs@EXAMPLE.COM
    [hpnewton@gateway_node.example.com ~]$ hadoop distcp /hbase /hbase-pre-upgrade-backup
  3. Distcp 將啟動一個 mapreduce 作業(yè)來處理以分布式方式復(fù)制文件。檢查 distcp 命令的輸出,以確保此作業(yè)成功完成。

執(zhí)行回滾

  1. 停止 HBase
  2. 執(zhí)行 HDFS 的降級和 ZooKeeper 的降級/回滾(HBase 應(yīng)該保持停止?fàn)顟B(tài))
  3. 將安裝的 HBase 版本更改為以前的版本
  4. 將 HBase 數(shù)據(jù)目錄從升級前恢復(fù)為 HDFS 超級用戶 (如下所示在啟用安全的群集上)。如果您將數(shù)據(jù)備份到另一個 HDFS 群集而不是本地,則需要使用distcp 命令將其復(fù)制回當(dāng)前的 HDFS 群集。
    恢復(fù) HBase 數(shù)據(jù)目錄:
    [hpnewton@gateway_node.example.com ~]$ kinit -k -t hdfs.keytab hdfs@EXAMPLE.COM
    [hpnewton@gateway_node.example.com ~]$ hdfs dfs -mv /hbase /hbase-upgrade-rollback
    [hpnewton@gateway_node.example.com ~]$ hdfs dfs -mv /hbase-pre-upgrade-backup /hbase
  5. 清除與 HBase 相關(guān)的 ZooKeeper 信息。警告:此步驟將永久銷毀所有復(fù)制對等點。
    清理 ZooKeeper 中的 HBase 信息:
    [hpnewton@gateway_node.example.com ~]$ zookeeper-client -server zookeeper1.example.com:2181,zookeeper2.example.com:2181,zookeeper3.example.com:2181
    Welcome to ZooKeeper!
    JLine support is disabled
    rmr /hbase
    quit
    Quitting...
  6. 啟動 HBase
  7. 驗證 HBase 內(nèi)容 - 使用 HBase shell 列出表格并掃描一些已知值。

相關(guān)教程

ZooKeeper教程

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號