背景:需要把阿里云的客戶數(shù)據(jù)遷移到騰訊云環(huán)境;騰訊云環(huán)境已經(jīng)部分新客戶的數(shù)據(jù)。
為了保證遷移到騰訊云的歷史客戶,依然能訪問到他們的歷史數(shù)據(jù);需要注意遷移后不能覆蓋騰訊云環(huán)境的表數(shù)據(jù)(即增量遷移),同時要求不能停表停服務(wù)。
方案選型:
1.distcp 需要停表停服務(wù);
2.Import/Export 比較穩(wěn)妥,先下載文件,后傳到騰訊云環(huán)境;
3.snapshot 速度快,需要目標(biāo)集群沒有該表;
4.從歸檔的歷史數(shù)據(jù)通過代碼寫入,工作量大;
5.replication 方式,只能實現(xiàn)主集群變更,實時同步給目標(biāo)集群;
實施:
1.將阿里云環(huán)境的user表最近兩年的版本號為1的數(shù)據(jù)下載為壓縮文件;
nohup hbase org.apache.hadoop.hbase.mapreduce.Export \
-D mapreduce.output.fileoutputformat.compress=true \
-D mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec \
-D mapreduce.output.fileoutputformat.compress.type=BLOCK \
-Ddfs.client.socket-timeout=240000000 \
-Dipc.client.connect.timeout=40000000 \
-Dmapreduce.task.timeout=1800000 \
-D hbase.client.scanner.caching=20000 \
-D hbase.export.scanner.batch=2000 \
-D hbase.export.scanner.caching=20000 \
-D mapreduce.map.memory.mb=1024 \
-D mapreduce.reduce.memory.mb=1024 \
-D yarn.app.mapreduce.am.resource.mb=1024 \
user /data/hbaseExportBak/user/user_2022-07-07/ 1 1622476800000 1657209600000 &> /var/lib/hadoop-hdfs/2022-07-07.log &
?2.將下載的文件distcp導(dǎo)入到騰訊云的hdfs集群;
3.將數(shù)據(jù)直接導(dǎo)入到騰訊云的灰度環(huán)境,此時報 memorystore 被寫滿的錯誤f,同時hbase發(fā)生告警,原因是寫的數(shù)據(jù)太多,直接刷滿了memorystore;因此,不建議,直接這樣寫入hbase;
hbase org.apache.hadoop.hbase.mapreduce.Import \
-Ddfs.client.socket-timeout=240000000 \
-Dipc.client.connect.timeout=40000000 \
-Dmapreduce.task.timeout=1800000 \
-D mapreduce.map.memory.mb=5120 \
-D mapreduce.reduce.memory.mb=5120 \
-Dmapreduce.task.timeout=1800000 \
-D yarn.app.mapreduce.am.resource.mb=5120 \
user /data/hbaseExportBak/user/user_2021-07-07/
4.增加參數(shù) -Dimport.bulk.output ,采用bulkload方式導(dǎo)入,先將export出來的數(shù)據(jù),轉(zhuǎn)為HFile文件,然后批量寫入hbase;
?hbase org.apache.hadoop.hbase.mapreduce.Import \
-D hadoop.tmp.dir=/data/hbase-tmp/ \
-Ddfs.client.socket-timeout=240000000 \
-Dipc.client.connect.timeout=40000000 \
-Dmapreduce.task.timeout=1800000 \
-D mapreduce.map.memory.mb=5120 \
-D mapreduce.reduce.memory.mb=5120 \
-Dmapreduce.task.timeout=1800000 \
-D yarn.app.mapreduce.am.resource.mb=5120 \
-Dimport.bulk.output=/data/hbaseExportBak/user/userHFile/user_2022/ \
user /data/hbaseExportBak/user/2022-07-07/
操作往往不是那么順利的,在進行上述操作時出現(xiàn)本地磁盤寫滿的問題,因為hbase hadoop.tmp.dir 參數(shù)是運維搭建時是默認(rèn)的;這樣會起一個mr拉取hdfs的數(shù)據(jù),默認(rèn)先下載到本地磁盤目錄,然后在本地轉(zhuǎn)換完成再傳到import.bulk.output 對應(yīng)的目錄,然后再清空本地寫入的數(shù)據(jù);因此,你需要選擇一個允許大量數(shù)據(jù)的文件目錄;或者手動添加參數(shù)修改?hadoop.tmp.dir 目錄為hdfs的目錄,這樣就不會占用本地的磁盤;
5.將轉(zhuǎn)換為HFile文件的目錄(/data/hbaseExportBak/user/userHFile/user_2022/)bulkload導(dǎo)入到hbase ;
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \
-Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=102400 \
/data/hbaseExportBak/user/userHFile/user_2021/ user文章來源:http://www.zghlxwxcb.cn/news/detail-617363.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-617363.html
到了這里,關(guān)于HBase數(shù)據(jù)遷移(阿里云到騰訊云實戰(zhàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!