HBase資料備份恢復的幾種機制總結

2021-09-30 10:41:01 字數 3348 閱讀 6034

1、

replication,

通過類似mysql 主從複製方式進行複製,基於hlog

在應用場景個人感覺比較重要的一點是可以隔離計算分析型的操作和實時性操作帶來的影響。

對於ddl操作不做複製,過實時讀取hlog中的entry來解析變更的資料然後傳送到從集群中去。

2、distcp,

表資料檔案的copy

./hadoopdistcp  hdfs://wxlab58:9100/hbase/lsmp_lottery_new_3/ hdfs://wxlab24:9100/hbase/lsmp_lottery_new_3/

dfs.permissions

false

或者                      

$ hadoop fs-chmod 777 /user/hadoop

然後在目的hbase上執行./hbase org.jruby.mainbin/add_table.rb /hbase/lsmp_lottery_new_3,更新元資料表meta

生成meta資訊後,重啟hbase

3、copytable

,熱備,scan和put的mapreduce操作,無法保證一致性,

增量copy, –starttime and –endtime arguments

只copy部分cf,–families=srccf1,srccf2

$bin/hbase org.apache.hadoop.hbase.mapreduce.copytable [--starttime=x][--endtime=y] [--new.name=new] [--peer.adr=adr] tablename

$hadoop_home/bin/hadoopjar $hbase_home/hbase-

0.92.1.jarcopytable --families=n  --peer.adr=l-master1:2181:/

hbase--new.name=hly_temp2    hly_temp 4、

export

,把錶資料匯出到hdfs檔案中(mapreduce操作)

資料被寫到了相應的目錄,乙個region乙個檔案。預設為sequencefile。可以選擇對輸出進行壓縮等。

bin/hbaseorg.apache.hadoop.hbase.mapreduce.export []

$hadoop_home/bin/hadoopjar $hbase_home/hbase-

0.92.1.jarexport -d mapred.output.compress=true -d mapred.output.

compression.codec=org.apache.hadoop.io.compress.bzip2codec-d

mapred.output.compression.type=block hly_temp  /backup/hly_temp

5、import

,基於dump的hdfs檔案,進行資料恢復(mapreduce操作)

bin/hbaseorg.apache.hadoop.hbase.mapreduce.import

$hadoop_home/bin/hadoopjar $hbase_home/hbase-

0.92.1.jarimport hly_temp /backup/hly_temp

6、bulkload tool

,bulkload對於新增表的大量的資料效率很高,繞過put操作的wal、compact&flush、gc等資源開銷。

乙個region乙個hfile,在bulk load時候,自動把hfile mv到對應region的目錄下。 a

、通過mapreduce,生成hfile,後bulkload

htabletable = new htable(conf, tablename);

job.setreducerclass(putsortreducer.class);

pathoutputdir = new path(args[2]);

fileoutputformat.setoutputpath

(job,outputdir);

job.setmapoutputkeyclass

(immutablebyteswritable.class);

job.setmapoutputvalueclass(put.class);

hfileoutputformat.configureincrementalload(job, table);

hadoop jar hbase-version.jar completebulkload /user/todd/myoutput mytable

或者loadincremental.dobulkload把hfile load到hbase表中。

b、importtsv通過mapreduce,直接匯入到表中

$hadoop_home/bin/hadoopjar $hbase_home/hbase-

0.92.1.jarimporttsv \                     

-dimporttsv.columns=hbase_row_key,t:v01,t:v02,t:v03,t:v04,t:v0

5,t:v06,t:v07,t:v08,t:v09,t:v10,t:v11,t:v12,t:v13,t:v14,t:v15,t:v1

6,t:v17,t:v18,t:v19,t:v20,t:v21,t:v22,t:v23,t:v24\

hly_temp\

/user/hac/input/2-1 c

、importtsv通過mapreduce生成hfile,後bulkload到表中

$hadoop_home/bin/hadoop jar$hbase_home/hbase-

0.92.1.jar importtsv \

-dimporttsv.bulk.output=/user/hac/output/2-1\

-dimporttsv.columns=hbase_row_key,t:v01,t:v02,t:v03,t:v04,

t:v05,t:v06,t:v07,t:v08,t:v09,t:v10,t:v11,t:v12,t:v13,t:v14,

t:v15,t:v16,t:v17,t:v18,t:v19,t:v20,t:v21,t:v22,t:v23,t:v24\

hly_temp \

/user/hac/input/2-1

$hadoop_home/bin/hadoop jar$hbase_home/hbase-

0.92.1.jar completebulkload \

/user/hac/output/2-1 \

hly_temp

hbase備份恢復

usage import options by default import will load data directly into hbase.to instead generate hfiles of data to prepare for a bulk data load,pass the ...

HBase 備份及恢復

注意事項 1.hbase版本需要保持一致,否則資料無法恢復 本方案使用export及import方法,還有其他方法可以實現,暫不涉及。1.備份,以表為單位進行匯出 bin hbase org.apache.hadoop.hbase.mapreduce.export table name dst pa...

hbase 備份及恢復

b 1,hbase自帶的備份恢復工具 b hbase org.apache.hadoop.hbase.mapreduce.export table1 home fred table1 hbase org.apache.hadoop.hbase.mapreduce.import table1 home...