

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

# HBase の以前のバージョンからの移行
<a name="emr-hbase-migrate"></a>

HBase の以前のバージョンからデータを移行するには、Apache HBase リファレンスガイドの「[Upgrading](https://hbase.apache.org/book.html#upgrading)」および「[HBase version number and compatibility](https://hbase.apache.org/book.html#hbase.versioning)」を参照してください。HBase の 1.0 バージョンより以前のバージョンからアップグレードする場合は、要件に特にご注意ください。

## Amazon EMR バージョン 7.4.0 以降への移行
<a name="emr-hbase-migrate-versions"></a>

**注記**  
7.4.0 より前の EMR リリースから 7.3.0 より大きいリリースに移行する場合は、このガイドラインに従ってください。

Amazon のストアファイル追跡機能が有効になっている EMR バージョンを現在実行していて、バージョン 6.2.0〜7.3.0 に含まれている場合、7.3.0 以降の EMR バージョンで利用可能な OSS ストアファイル追跡を使用するバージョンにアップグレードするには、以下のステップに従います:

1. 既存のクラスターの場合:

   1. `hbase:storefile` テーブルを無効にします。

   1. `hbase:storefile` テーブルをドロップします。

   1. `hbase:meta` をフラッシュします。

   1. メタデータが更新されるまで待ちます。

1. 新しいクラスターで:

   1. ルートディレクトリと同じ Amazon S3 ディレクトリを設定します。

   1. `DefaultStoreFileTracker` 実装でクラスターを起動します:

      ```
      {
        "Classification": "hbase-site",
        "Properties": {
          hbase.store.file-tracker.impl: "org.apache.hadoop.hbase.regionserver.storefiletracker.DefaultStoreFileTracker"
         }
      }
      ```

   1. テーブルまたは列ファミリーレベルで、以下のコマンドを使用してストアファイルトラッカーを変更します:

      1. テーブルの、またはテーブル列ファミリーの Store File Tracker を変更します:

         ```
         hbase> change_sft 't1','FILE'
         hbase> change_sft 't2','cf1','FILE'
         ```

      1. 指定された正規表現 (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 以降に移行する
<a name="emr-hbase-migrate-s3-read-replica"></a>

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

1. `readonly_state`

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

   出力:
   + INACTIVE - クラスターは読み取り専用モードで、書き込みは非アクティブです。
   + ACTIVE - クラスターは読み取りオペレーションと書き込みオペレーションの両方をサポートします。

1. `readonly_switch`

   切り替えプロセスの設定可能なオプションを使用して、読み取り専用モードを有効または無効にします。

   構文:

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

   パラメータ :
   + readonly (必須) - 読み取り専用モードを有効 (true) または無効にする (false) ブール値
   + force\$1flush (オプション) - アクティブモードから読み取り専用モードに切り替える前にデータを強制的にフラッシュします (デフォルト: true)
   + force\$1refresh\$1meta (オプション) - 読み取り専用モードからアクティブモードに切り替えるときにメタテーブルの更新を強制します (デフォルト: true)
   + force\$1refresh\$1hfile (オプション) - 読み取り専用モードからアクティブモードに切り替えるときに HFile の更新を強制します (デフォルト: true)

### 移行手順
<a name="emr-hbase-migrate-s3-steps"></a>

現在 Amazon S3 クラスターで EMR 6.0.0\$1 HBase を実行していて、EMR 7.12.0 以降のクラスターに移行する場合は、次の手順に従います。

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

   ```
   sudo -u hbase hbase hbck > hbck_report.txt
   ```

1. ソースクラスターに SPLIT 状態のリージョンがないことを確認します。

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

      ```
      major_compact <table_name>
      ```

   1. 圧縮の完了後に `catalogjanitor_run` HBase シェルで を実行する

1. ソースクラスターと同じ Amazon S3 の場所を指すリードレプリカとして設定された新しい EMR 7.12.0\$1 クラスターを作成します。リードレプリカクラスターの設定方法の詳細については、この[ブログ](https://aws.amazon.com/blogs/big-data/setting-up-read-replica-clusters-with-hbase-on-amazon-s3/)を参照してください。OSS Store ファイル追跡にアップグレードする場合は、上記のステップで説明した DefaultStoreFileTracker 設定で新しいクラスターを起動します。

1. マスターノードが完全に初期化されるまで待ちます。テーブルを読み取ってデータアクセシビリティを検証し、新しいクラスターが読み取り専用モードであることを確認します。

   ```
   hbase:001:0> readonly_state
   Took 0.4612 seconds
   => "INACTIVE"
   ```

1. ソースクラスターのバランシングと圧縮を無効にします。

   ```
   echo "balance_switch false" | hbase shell
   echo "compaction_switch false" | hbase shell
   ```

1. リードレプリカクラスター UI に重複/不整合が表示されていないことを確認し、リージョンが OPEN ステータスを示し、適切に割り当てられていることを確認します。

1. FileBasedTracker に変更する場合は、上記のセクションで説明したリードレプリカクラスターのコマンドを使用してストアファイルの追跡を変換します。

1. ソースクラスターを指すジョブを停止し、すべてのテーブルをフラッシュして、ソースクラスターをシャットダウンします。続行する前に、完全な終了を待ちます。

   ```
   echo "flush 'usertable'" | hbase shell
   echo "flush 'hbase:meta'" | hbase shell
   echo "flush 'hbase:namespace'" | hbase shell
   ```

1. リードレプリカクラスターをアクティブモードに切り替えて、書き込みオペレーションを有効にします。このステップを完了すると、新しいクラスターは読み取りオペレーションと書き込みオペレーションの両方をサポートし、移行は完了します。

   ```
   hbase:010:0> readonly_switch false
   Took 38.1568 seconds
   ```

1. 新しいクラスターの書き込みを検証し、すべてのリージョンがリクエストを処理していることを確認します。

**注記**  
任意の時点で Amazon S3 の場所を指すアクティブなクラスターは 1 つだけです。したがって、リードレプリカをアクティブに切り替えるのは、ソースクラスターが終了した後のみです。