HBaseのシリーズ(9) - HBaseの災害復旧とバックアップ

I.はじめに

本論文では、一般的に使用される3つの簡単なHBaseの災害復旧ソリューション、すなわち説明CopyTableエクスポート / インポートスナップショットを次のように彼らは、導入されました。

二、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.1はじめに

  • ExportHDFSへのエクスポートデータをサポートしてImportHDFSからデータをインポートするためのサポート。Exportまた、輸出指定された開始時刻と終了時刻データをサポートし、それが増分バックアップに使用することができます。
  • ExportエクスポートとCopyTableのHBase上などに依存するscan操作

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. Exportコマンド
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基礎となるHFiles(データファイルを含むHBaseのテーブル)は、唯一の修正メタデータ情報テーブルを変更していないため、操作は、すべてのデータをコピーする必要はありません。

4.2の設定

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

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

4.3共通コマンド

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

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の設定がコピーからプライマリReplicationに基づく場合レプリケーションログレベルの作業が、スナップショットファイルシステムレベルの仕事ので、ケースなので、還元後の異なる状態で、マスターサーバーのコピーが存在します。ことに留意すべきです。今度は、同期サーバーは、一貫して再構築同期にすべてのデータの復元ポイントを停止することができます。

参考資料

  1. CopyTableとオンラインのApache HBaseのバックアップ
  2. ApacheのHBaseの™リファレンスガイド

もっと大きなデータ系列は、GitHubのオープンソースプロジェクトを見つけることができますビッグデータははじめに

おすすめ

転載: www.cnblogs.com/heibaiying/p/11416170.html