摘自:http://qindongliang.iteye.com/blog/2366547
Hbase的數(shù)據(jù)備份策略有:
- Distcp
- CopyTable
- Export/Import
- Replication
- Snapshot
下面介紹這幾種方式:
一行楞、Distcp(離線備份)
直接備份HDFS數(shù)據(jù)调榄,備份前需要disable表,在備份完成之前 服務(wù)不可用對在線服務(wù)類業(yè)務(wù)不友好
二哟忍、CopyTable(熱備)
執(zhí)行命令前铅搓,需要創(chuàng)建表瑟押,支持時間區(qū)間、row區(qū)間星掰,改變表名稱多望,改變列簇名稱,指定是否copy刪除數(shù)據(jù)等功能蹋偏,例如:
hbase org.apache.hadoop.hbase.mapreduce.CopyTable -starttime=1265875194289 --endtime=1265878794289 --peer.adr= dstClusterZK:2181:/hbase --families=myOldCf:myNewCf,cf2,cf3 TestTable
1便斥、同一個集群不同表名稱
hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=tableCopy srcTable
2、跨集群copy表
hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=dstClusterZK:2181:/hbase srcTable
三威始、Export/Import(熱備+離線)
通過Export導(dǎo)出數(shù)據(jù)到目標(biāo)集群的hdfs枢纠,再在目標(biāo)集群執(zhí)行import導(dǎo)入數(shù)據(jù),Export支持指定開始時間和結(jié)束時間,因此可以做增量備份晋渺。
四镰绎、Replication(實時)
通過Hbase的replication機制實現(xiàn)Hbase集群的主從模式實時同步
五、Snapshot(備份實時木西,恢復(fù)需要disable) 個人覺得這是備份里面最經(jīng)濟劃算的一個畴栖,可以每天在固定時間點對hbase表數(shù)據(jù)進(jìn)行快照備份,然后如果出現(xiàn)問題了八千,可以直接恢復(fù)到某個時間點上的數(shù)據(jù)吗讶,適合修復(fù)指標(biāo)計算錯誤的場景,然后從某個時間點上重新修復(fù)恋捆。 下面詳細(xì)說下使用方式:
(1)先建立一個測試表 Java代碼
create 'test','cf'
(2)添加數(shù)據(jù) Java代碼
> put 'test','a','cf:c1',1
> put 'test','a','cf:c2',2
> put 'test','b','cf:c1',3
> put 'test','b','cf:c2',4
> put 'test','c','cf:c1',5
> put 'test','c','cf:c2',6
(3)創(chuàng)建快照
hbase snapshot create -n test_snapshot -t test
(4)查看快照
list_snapshots
(5)導(dǎo)出到HDFS Java代碼
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot test_snapshot -copy-to hdfs://user/back/xxx
(6)從快照恢復(fù)數(shù)據(jù)到原表中
restore _snapshot 'test_snapshot'
(7)從快照中恢復(fù)到一個新表中
clone_snapshot 'test_snapshot','test_2'