HBaseスナップショット機能を使用すると、パフォーマンスへの影響を最小限に抑えながら、テーブルの軽量バックアップを取得できます。 HBase Shellまたはコマンドラインを使用して、HBaseサービスを含むE-MapReduce(EMR)クラスターでスナップショットを作成、インポート、またはエクスポートできます。 スナップショットを使用して、新しいテーブルを作成したり、テーブルデータを復元したりできます。 このトピックでは、HBaseスナップショットの使用方法について説明します。
スナップショットの作成
hbase shell コマンドを実行して、HBaseに接続します。 詳細については、「HBase Shellの使用」トピックのHBaseへの接続セクションをご参照ください。 HBaseに接続した後、次のコマンドを実行して、table1のスナップショットtable1-snapshotを作成します。 snapshot コマンドでTTLSKIP_FLUSH、スナップショット、または パラメーターを構成して、ビジネス要件に基づいて制限を追加できます。
snapshot 'table1', 'table1-snapshot'スナップショット名は一意である必要があります。 list_snapshots コマンドを実行して、既存のすべてのスナップショットを表示できます。
スナップショットの複製によるテーブルの作成
clone_snapshot コマンドを実行して、スナップショットを複製し、スナップショットと同じデータを含むテーブルを作成できます。
たとえば、hbase shell コマンドを実行してHBaseに接続した後、次のコマンドを実行して、table1-snapshotからtable2という名前のテーブルを作成できます。
clone_snapshot 'table1-snapshot', 'table2'スナップショットを使用したテーブルデータの復元
restore_snapshot コマンドを実行して、スナップショットが作成された時点のテーブルデータを復元できます。 スナップショットを使用してテーブルデータを復元する前に、テーブルを無効にする必要があります。
たとえば、hbase shell コマンドを実行してHBaseに接続した後、次のコマンドを実行して、table1を無効にし、table1-snapshotを使用してtable1のデータを復元し、table1を再度有効にすることができます。
disable 'table1'
restore_snapshot 'table1-snapshot'
enable 'table1'スナップショットのインポート
コマンドラインを使用して、他のパスにあるHBaseスナップショットをインポートできます。 スナップショットをインポートする場合は、スナップショットの名前とソースパス、スナップショットを保存する宛先アドレス、およびインポートタスクのマッパー数を指定する必要があります。
たとえば、次のコマンドを実行して、DataServingクラスターのOSS-HDFSサービスから別のDataServingクラスターのOSS-HDFSサービスにスナップショットをインポートできます。
hbase snapshot export \
-snapshot 'table1-snapshot' \
-copy-from oss://${OSS-HDFS サービスのエンドポイント}/oss-dir \
-copy-to oss://${OSS-HDFS サービスのエンドポイント}/hbase \
-mappers 2パラメーター | 説明 |
| インポートするスナップショットの名前。 例:table1-snapshot。 |
| インポートするスナップショットのソースアドレスと、スナップショットを保存する宛先アドレス。 オブジェクトストレージサービス(OSS)コンソールのバケットの[概要] ページのポートセクションで、OSS-HDFSサービスのエンドポイントをコピーできます。 詳細については、「OSS-HDFSをHBaseのストレージバックエンドとして使用する」トピックの手順セクションをご参照ください。 |
| インポートするスナップショットのソースアドレスと、スナップショットを保存する宛先アドレス。|
| インポートタスクのマッパー数。 この例では、このパラメーターは 2 に設定されています。 重要 スナップショットのインポート時にこのパラメーターを構成しない場合、HBaseはテーブルサイズに基づいて値を計算します。 値が大きすぎると、HBaseで実行されているタスクに影響します。 |
スナップショットのエクスポート
コマンドラインを使用して、クラスターから別のクラスターのHadoop Distributed File System(HDFS)またはOSS-HDFSサービスにスナップショットをエクスポートできます。 スナップショットをエクスポートする場合は、エクスポートするスナップショットの名前と宛先パス、およびエクスポートタスクのマッパー数を指定する必要があります。
たとえば、次のコマンドを実行して、現在のクラスターから別のクラスターのOSS-HDFSサービスにtable1-snapshotをエクスポートできます。 スナップショットを別のクラスターのHDFSサービスにエクスポートする場合は、-copy-to パラメーターを対応するHDFSパスに設定する必要があります。
hbase snapshot export \
-snapshot 'table1-snapshot' \
-copy-to oss://${OSS-HDFS サービスのエンドポイント}/oss-dir \
-mappers 2スナップショットの削除
hbase shell コマンドを実行してHBaseに接続した後、次のコマンドを実行してtable1-snapshotを削除できます。
delete_snapshot 'table1-snapshot'参照
詳細については、Apache HBaseの公式WebサイトにあるApache HBaseリファレンスガイドをご参照ください。