HBase跨集群遷移調(diào)研方案回顧
遷移目的
HBase跨集群平滑遷移
方案
方案一
雙寫:replication
歷史數(shù)據(jù):Snapshot——>exportSnapshot——>clone_snapshot——>copyTable
方案二
雙寫:replication
歷史數(shù)據(jù):Snapshot——>exportSnapshot——>bulkload
操作命令
snapshot
#制作snapshot
hbase> snapshot 'myTable', 'myTableSnapshot-122112'
#顯示所有snapshot
hbase> list_snapshots
#發(fā)送snapshot到其他集群
$ bin/hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot MySnapshot -copy-to hdfs://srv2:8082/hbase -mappers 16 -bandwidth 200
#在目標(biāo)集群clone snapshot
hbase> clone_snapshot 'myTableSnapshot-122112', 'myNewTestTable'
#在目標(biāo)機(jī)還原snapshot
hbase> disable 'myTable'
hbase> restore_snapshot 'myTableSnapshot-122112'
hbase> enable 'myTable'
#目標(biāo)集群copy table
$ bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable --starttime=1265875194289 --endtime=1265878794289 --peer.adr=server1,server2,server3:2181:/hbase --families=myOldCf:myNewCf,cf2,cf3 TestTable
#目標(biāo)機(jī)器執(zhí)行bulkload snapshot
bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles <hdfs://storefileoutput> <tablename>
replication
#Add a new replication peer which serial flag is true
hbase> add_peer '1', CLUSTER_KEY => "server1.cie.com:2181:/hbase", SERIAL => true
#Set a replication peer’s serial flag to true(數(shù)據(jù)順序)
hbase> set_peer_serial '1', true
#驗(yàn)證replication數(shù)據(jù)
$ HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase classpath` "${HADOOP_HOME}/bin/hadoop" jar "${HBASE_HOME}/hbase-mapreduce-VERSION.jar" verifyrep --starttime=<timestamp> --endtime=<timestamp> --families=<myFam> <ID> <tableName>
優(yōu)缺點(diǎn)
方案一:開啟replication,snapshot需要先clone到新表,然后再copyTable到舊表
缺點(diǎn):restore_snapshot會(huì)覆蓋replication新數(shù)據(jù);通過MR執(zhí)行,速度慢,不如bulkload執(zhí)行效率高
優(yōu)點(diǎn):表級(jí)操作
方案二:開啟replication,snapshot通過bulkload到數(shù)據(jù)表,不會(huì)覆蓋新數(shù)據(jù)
優(yōu)點(diǎn):導(dǎo)入數(shù)據(jù)數(shù)據(jù)速度非常快;在新版本中已經(jīng)支持整表bulkload方案(CDH-6.0及以上,hBase2.0)
缺點(diǎn):舊版本不支持整表bulkload方案,需要代碼添加功能;再整表bulkload時(shí)默認(rèn)最大HFILE個(gè)數(shù)32,需要根據(jù)需要調(diào)整修改。參數(shù):
hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily
最終方案
目標(biāo)
采用方案:方案二:
通過bulkload整表導(dǎo)入從集群導(dǎo)入的snapshot快照,完成數(shù)據(jù)遷移;
目標(biāo):平滑遷移,雙寫基礎(chǔ)上,盡可能簡(jiǎn)潔操作,流程短,效率高;