View a markdown version of this page

從舊 HBase 版本遷移 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

從舊 HBase 版本遷移

若要從舊版 HBase 遷移資料,請參閱 Apache HBase 參考指南中的 UpgradingHBase version number and compatibility。您可能需要特別注意從 HBase 1.0 之前的版本升級的需求。

遷移至 Amazon EMR 7.4.0 版或更新版本

注意

如果您要從早於 7.4.0 的 EMR 版本遷移至大於 7.3.0 的版本,請遵循這些準則。

如果您目前正在執行已啟用 Amazon 存放區檔案追蹤功能的 EMR 版本,該功能包含在 6.2.0 到 7.3.0 版中,並且想要升級到 OSS 存放區檔案追蹤的版本,該版本可在 7.3.0 之後的 EMR 版本上使用,請遵循下列步驟:

  1. 在現有叢集中:

    1. 停用hbase:storefile資料表。

    2. 捨棄hbase:storefile資料表。

    3. 排清 hbase:meta

    4. 等待中繼資料更新。

  2. 在新叢集中:

    1. 設定與根目錄相同的 Amazon S3 目錄。

    2. 使用 DefaultStoreFileTracker實作啟動叢集:

      { "Classification": "hbase-site", "Properties": { hbase.store.file-tracker.impl: "org.apache.hadoop.hbase.regionserver.storefiletracker.DefaultStoreFileTracker" } }
    3. 在資料表或資料欄系列層級,使用下列命令來變更存放區檔案追蹤器:

      1. 變更資料表或資料表資料欄系列的存放檔案追蹤器:

        hbase> change_sft 't1','FILE' hbase> change_sft 't2','cf1','FILE'
      2. 變更與指定規則表達式 (regex) 相符的所有資料表的存放檔案追蹤器:

        hbase> change_sft_all 't.*','FILE' hbase> change_sft_all 'ns:.*','FILE' hbase> change_sft_all 'ns:t.*','FILE'

使用僅供讀取複本叢集將 Amazon S3 叢集上的 HBase 遷移至 Amazon EMR 7.12.0 版或更新版本

從 EMR 7.12.0 開始,您可以將 Amazon S3 叢集上的僅供讀取複本 HBase 從唯讀模式切換為作用中模式,同時啟用讀取和寫入操作。此功能是透過兩個新的 HBase shell 命令提供。

  1. readonly_state

    擷取叢集目前的讀寫操作狀態。

    輸出:

    • 非作用中 - 叢集處於唯讀模式,寫入處於非作用中狀態。

    • ACTIVE - 叢集支援讀取和寫入操作。

  2. readonly_switch

    啟用或停用具有切換程序可設定選項的唯讀模式。

    語法:

    readonly_switch <readonly>,<force_flush>,<force_refresh_meta>,<force_refresh_hfile>

    參數:

    • readonly (必要) - 要啟用 (true) 或停用 (false) 唯讀模式的布林值

    • force_flush (選用) - 在從作用中模式切換到唯讀模式之前強制資料排清 (預設值:true)

    • force_refresh_meta (選用) - 從唯讀模式切換到作用中模式時強制重新整理中繼資料表 (預設值: true)

    • force_refresh_hfile (選用) - 從唯讀模式切換到作用中模式時強制 HFile 重新整理 (預設值: true)

遷移步驟

如果您目前正在 Amazon S3 叢集上執行 EMR 6.0.0+ HBase,且想要遷移至 EMR 7.12.0 或更新版本的叢集,請依照下列步驟執行:

  1. 使用 hbck 報告或來自 HBase 主使用者介面的停滯程序,確保您的來源叢集處於穩定狀態,沒有不一致。

    sudo -u hbase hbase hbck > hbck_report.txt
  2. 確保來源叢集上沒有 SPLIT 狀態的區域:

    1. 如果有區域處於 SPLIT 狀態,請在個別資料表上執行主要壓縮,並等待它們完成

      major_compact <table_name>
    2. 壓縮完成後在 HBase shell catalogjanitor_run中執行

  3. 建立新的 EMR 7.12.0+ 叢集,設定為指向與來源叢集相同 Amazon S3 位置的僅供讀取複本。如需如何設定僅供讀取複本叢集的詳細資訊,請參閱此部落格。如果您想要升級至 OSS Store 檔案追蹤,請使用上述步驟所述的 DefaultStoreFileTracker 組態啟動新叢集。

  4. 等待主節點完全初始化。透過讀取資料表並確認新叢集處於唯讀模式來驗證資料可存取性

    hbase:001:0> readonly_state Took 0.4612 seconds => "INACTIVE"
  5. 在來源叢集上停用平衡和壓縮:

    echo "balance_switch false" | hbase shell echo "compaction_switch false" | hbase shell
  6. 確保僅供讀取複本叢集 UI 中沒有出現重疊/不一致,並確認區域顯示 OPEN 狀態且已正確指派。

  7. 如果您想要變更為 FileBasedTracker,請使用上節提及的僅供讀取複本叢集上的命令來轉換存放區檔案追蹤。

  8. 停止指向來源叢集的任務、排清所有資料表,然後關閉來源叢集。等待完全終止再繼續。

    echo "flush 'usertable'" | hbase shell echo "flush 'hbase:meta'" | hbase shell echo "flush 'hbase:namespace'" | hbase shell
  9. 將僅供讀取複本叢集切換至作用中模式,以啟用寫入操作。完成此步驟後,您的新叢集將同時支援讀取和寫入操作,且遷移已完成。

    hbase:010:0> readonly_switch false Took 38.1568 seconds
  10. 驗證新叢集上的寫入,並確保所有區域都在處理請求。

注意

在任何時間點,只能有一個作用中叢集指向 Amazon S3 位置。因此,只有在來源叢集終止之後,才能將僅供讀取複本切換為作用中。