Hbase常用可靠的數據遷移方案

常用的HBASE數據遷移目前的方案有非常多種,本文主要介紹兩種一種為Hadoop手動數據遷移,另一種為Snapshot數據遷移

Hbase常用可靠的數據遷移方案

原理不多介紹,直接實戰

一、Hadoop層手動數據遷移

需要注意:

1.Hadoop/hbase版本也要注意是否一致,如果版本不一致,最終load表時會報錯

2.遷移實時寫的表,最好是停止集群對錶的寫入,在以下方式需要遷移的表為Test

步驟說明:將需要遷移的數據表傳輸到臨時目錄,再copyFromLocal到hdfs修復元數據

第一步:新建個臨時文件夾 /opt/hbaseDataTest/Test

第二步:在需要遷移的集群.hadoop/bin目錄下 執行

./hadoop fs -copyToLocal /hbase/data/default/Test /opt/hbaseDataTest/Test

第三步:在目標的集群.hadoop/bin目錄下 執行

./hadoop fs -copyFromLocal /opt/hbaseDataTest/Test /hbase/data/default/Test

第四步:在hbase/bin 執行

./hbase hbck -fixMeta 修復meta表數據

第五步: 在hbase/bin 執行

./hbase hbck -fixAssignments 重新分配數據到各個RegionServer

第六步:檢查表數據是否OK

二. Snapshot數據遷移方式

HBase快照(snapshot)顧名思義就是在某個時刻對某個HBase表的數據做了快速備份,就像拍照一下,讓數據停留在那個時刻不再變動,後面用來做數據的恢復或者遷移。HBase在0.94版本開始提供了快照功能,0.95版本以後默認開啟快照功能。

HBase的snapshot其實就是一組metadata信息的集合(文件列表),通過這些metadata信息的集合,就能將表的數據回滾到snapshot那個時刻的數據。

簡單概括HBase快照的使用場景如下:

1.HBase表的定期快速備份

2.升級前的HBase數據備份

3.集群間的數據遷移

4.構建測試環境數據

5.做數據恢復

遷移步驟

第一步:遷移snapshot

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \

-snapshot snapshot_src_table \

-copy-from hdfs://src-hbase-root-dir/hbase \

-copy-to hdfs://dst-hbase-root-dir/hbase \

-mappers 20 \

-bandwidth 1024

第二步:恢復snapshot

命令 :restore_snapshot ‘snapshotName’

備註:需要對錶進行過disable才能進行restore_snapshot的操作,如果這個還在寫入數據,需要採用第三步bulkload的方式導入

第三步:將snapshot使用bulkload的方式導入

hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \

-Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024 \

hdfs://dst-hbase-root-dir/hbase/archive/datapath/tablename/filename tablename

備註:這種方式需要將所有的文件進行遍歷並全部通過bulkload導入,上面的只是一個文件的導入,這種方式不需要disable表。

其他snapshot操作

1.創建snapshot : snapshot 'tableName', ‘snapshotName'

2.查看snapshot : list_snapshots

3.查找以alrm開頭的snapshot : list_snapshots 'alrm.*'

4.刪除snapshot: delete_snapshot 'snapshotName'

三、總結

本文介紹兩種常用HBase數據遷移方案,總結起來:

Hadoop手動數據遷移: 比較簡單坑比較少 ,比較大數據量效率可能比較低

Snapshot: 比較常用 , 應用靈活,採用快照技術,效率比較高

具體場景還是具體選擇,想了解更多信息可以關注一下微信公眾號,回覆1024可以領取大數據學習資料,每日更新大數據學習文章。

Hbase常用可靠的數據遷移方案


分享到:


相關文章: