View a markdown version of this page

HBase の以前のバージョンからの移行 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

HBase の以前のバージョンからの移行

HBase の以前のバージョンからデータを移行するには、Apache HBase リファレンスガイドの「Upgrading」および「HBase 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 に含まれている場合、7.3.0 以降の EMR バージョンで利用可能な OSS ストアファイル追跡を使用するバージョンにアップグレードするには、以下のステップに従います:

  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. テーブルの、またはテーブル列ファミリーの Store File Tracker を変更します:

        hbase> change_sft 't1','FILE' hbase> change_sft 't2','cf1','FILE'
      2. 指定された正規表現 (regex) と一致するテーブルのすべての Store File Tracker を変更します。

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

Read-Replica クラスターを使用して Amazon S3 クラスターの HBase を Amazon EMR バージョン 7.12.0 以降に移行する

EMR 7.12.0 以降では、Amazon S3 クラスターのリードレプリカ HBase を読み取り専用モードからアクティブモードに切り替えて、読み取りオペレーションと書き込みオペレーションの両方を有効にできます。この機能は、2 つの新しい HBase シェルコマンドを通じて提供されます。

  1. readonly_state

    クラスターの現在の読み取り/書き込みオペレーション状態を取得します。

    出力:

    • INACTIVE - クラスターは読み取り専用モードで、書き込みは非アクティブです。

    • 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. HBase マスター UI の hbck レポートまたはスタックプロシージャを使用して、ソースクラスターが不整合のない安定した状態であることを確認します。

    sudo -u hbase hbase hbck > hbck_report.txt
  2. ソースクラスターに SPLIT 状態のリージョンがないことを確認します。

    1. SPLIT 状態のリージョンがある場合は、それぞれのテーブルでメジャー圧縮を実行し、完了するのを待ちます。

      major_compact <table_name>
    2. 圧縮の完了後に catalogjanitor_run HBase シェルで を実行する

  3. ソースクラスターと同じ Amazon S3 の場所を指すリードレプリカとして設定された新しい EMR 7.12.0+ クラスターを作成します。リードレプリカクラスターの設定方法の詳細については、このブログを参照してください。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 の場所を指すアクティブなクラスターは 1 つだけです。したがって、リードレプリカをアクティブに切り替えるのは、ソースクラスターが終了した後のみです。