Hbaseの災害復旧とバックアップ

Hbaseの災害復旧とバックアップ

I.はじめに

この記事では主に、Hbase一般的に使用される3つの簡単な災害復旧バックアップソリューションつまりCopyTableExport / ImportSnapshotを紹介します。それらは次のように導入されます。

2、CopyTable

2.1はじめに

CopyTableは、既存のテーブルから新しいテーブルにデータをコピーでき、次の特徴があります。

  • 時間間隔、行間隔、テーブル名の変更、列ファミリー名の変更、削除されたデータをコピーするかどうかなどの機能をサポートします。
  • コマンドを実行する前に、元のテーブルと同じ構造の新しいテーブルを作成する必要があります。
  • CopyTable操作は、HBaseクライアントAPIに基づいて、つまり書き込みにscan使用されるクエリを使用put実行さます

2.2コマンドフォーマット

Usage: CopyTable [general options] [--starttime=X] [--endtime=Y] [--new.name=NEW] [--peer.adr=ADR] <tablename>

2.3一般的なコマンド

  1. 同じクラスター内のCopyTable
hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=tableCopy  tableOrig
  1. 異なるクラスターのCopyTable
# 两表名称相同的情况
hbase org.apache.hadoop.hbase.mapreduce.CopyTable \
--peer.adr=dstClusterZK:2181:/hbase tableOrig

# 也可以指新的表名
hbase org.apache.hadoop.hbase.mapreduce.CopyTable \
--peer.adr=dstClusterZK:2181:/hbase \
--new.name=tableCopy tableOrig
  1. 以下は、開始時刻と終了時刻、クラスターアドレスを指定し、指定された列ファミリーのみをコピーする、公式による比較的完全な例です。
hbase org.apache.hadoop.hbase.mapreduce.CopyTable \
--starttime=1265875194289 \
--endtime=1265878794289 \
--peer.adr=server1,server2,server3:2181:/hbase \
--families=myOldCf:myNewCf,cf2,cf3 TestTable

2.4その他のパラメーター

あなたは--helpより多くのサポートパラメータ見ることができます

# hbase org.apache.hadoop.hbase.mapreduce.CopyTable --help

3、エクスポート/インポート

3.1はじめに

  • ExportHDFSへのデータのエクスポートとHDFSImportからのデータのインポートをサポートしますExportまた、エクスポートされたデータの開始時刻と終了時刻の指定もサポートされているため、増分バックアップに使用できます。
  • ExportエクスポートCopyTableし、HBasescan操作に依存します

3.2コマンドフォーマット

# Export
hbase org.apache.hadoop.hbase.mapreduce.Export <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]

# Inport
hbase org.apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir>
  • エクスポートされたoutputdirディレクトリは事前に作成できません。プログラムは自動的に作成します。エクスポートが完了すると、エクスポートされたファイルの所有権は、exportコマンドを実行したユーザーによって所有されます。
  • デフォルトでCellは、バージョン履歴に関係なく、最新バージョンのみをエクスポートします複数のバージョンをエクスポートするに<versions>は、目的のパラメーターのバージョン番号置き換える必要があります。

3.3一般的なコマンド

  1. エクスポートコマンド
hbase org.apache.hadoop.hbase.mapreduce.Export tableName  hdfs 路径/tableName.db
  1. インポートコマンド
hbase org.apache.hadoop.hbase.mapreduce.Import tableName  hdfs 路径/tableName.db

四、スナップショット

4.1はじめに

HBaseのスナップショット機能を使用すると、パフォーマンスのオーバーヘッドをほとんど発生させずに、テーブルのコピー(コンテンツとメタデータを含む)を取得できます。スナップショットにはテーブルメタデータとHFiles情報のみが保存されるためです。スナップショットclone動作がスナップショットから新しいテーブルを作成し、スナップショットのrestore操作内容は、スナップショット・テーブル・ノードに戻ります。cloneまたrestore、基になるHFile(データファイルを含むHBaseテーブル)は変更されず、変更されたメタデータ情報テーブルのみが変更されるため、操作でデータをコピーする必要はありません。

4.2構成

HBaseスナップショット機能はデフォルトではオンになっていません。スナップショットを開く場合はhbase-site.xml、次の構成ファイルエントリ追加する必要があります。

<property>
    <name>hbase.snapshot.enabled</name>
    <value>true</value>
</property>

4.3一般的なコマンド

すべてのスナップショットコマンドは、HbaseShellインタラクティブコマンドラインで実行する必要があります。

1.スナップショットを撮る

# 拍摄快照
hbase> snapshot '表名', '快照名'

デフォルトでは、データの更新はスナップショットを作成する前にメモリで実行されます。メモリ内のデータがスナップショットに含まれていることを確認します。ただし、データをメモリに含めたくない場合は、SKIP_FLUSHオプションを使用して更新を無効にすることができます

# 禁止内存刷新
hbase> snapshot  '表名', '快照名', {
    
    SKIP_FLUSH => true}

2.スナップショットの一覧表示

# 获取快照列表
hbase> list_snapshots

3.スナップショットの削除

# 删除快照
hbase> delete_snapshot '快照名'

4.スナップショットからテーブルのクローンを作成します

# 从现有的快照创建一张新表
hbase>  clone_snapshot '快照名', '新表名'

5.スナップショットを復元します

テーブルをスナップショットノードに復元します。復元操作では、最初にテーブルを無効にする必要があります

hbase> disable '表名'
hbase> restore_snapshot '快照名'

ここで、HBaseがレプリケーションベースのマスタースレーブレプリケーションで構成されている場合、レプリケーションはログレベルで機能し、スナップショットはファイルシステムレベルで機能するため、復元後、レプリカとマスターサーバーは異なる状態になることに注意してください。 。このとき、最初に同期を停止し、すべてのサーバーが一貫したデータポイントに復元された後で、同期を再確立できます。

参照

  1. CopyTableを使用したオンラインApacheHBaseバックアップ
  2. ApacheHBase™リファレンスガイド

おすすめ

転載: blog.csdn.net/weixin_44302240/article/details/112345949