HBase跨集群數據同步


一、通過快照進行拷貝
 
1、在源集群執行如下命令:
(1)進入Hbase shell客戶端(hbase shell)
snapshot 'iflyol:OsspDataAnaSysDayCube','OsspDataAnaSysDayCube_iflyol'
 
2、在源集群執行(hadoop賬戶):
/usr/server/hbase/bin/hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
> -snapshot 'OsspDataAnaSysDayCube_iflyol' \
> -copy-from hdfs://{namenode1}:9000/hbase \
> -copy-to hdfs://{namenode2}:9000/hbase \
> -mappers 20 \
> -bandwidth 2048
 
3、在目標集群執行
clone_snapshot 'OsspDataAnaSysDayCube_iflyol','iflyol:OsspDataAnaSysDayCube'
 
4、刪除源集群和目標集群上面的snapshot
 delete_snapshot 'OsspDataAnaSysDayCube_iflyol'
 
二、通過export/import進行拷貝
 
 
 
 
三、通過distcp加Load遷移HBase數據(以下命令都在新集群執行,此方法速度最快)
hadoop distcp \
-Dmapreduce.job.name=distcphbase \
-Dmapreduce.job.queuename=default \
-skipcrccheck \
-update \
-m 1000 \
hdfs://{namenode1}:9000/hbase/data/iflyol/OsspDataAnaSysDayCube \
hdfs://{namenode2}:9000/user/${dir}/OsspDataAnaSysDayCube
 
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024 hdfs://{namenode2}:9000/user/${dir}/OsspDataAnaSysDayCube 'iflyol:OsspDataAnaSysDayCube'
 
 
================以下腳本供參考==============
source ~/.bashrc
 
tablename=$1
filename=$1
 
echo "開始同步HBase數據到新集群"
hadoop distcp -Dmapreduce.job.name=distcp_hbase_$tablename -Dmapreduce.job.queuename=spark -skipcrccheck -update -m 1000 hdfs://{namenode1}:9000/hbase/data/iflyol/$tablename hdfs://{namenode2}:9000/user/${dir}/$tablename
 
echo "HBase數據同步完畢!"
 
echo "開始導入HBase數據"
for region in `hadoop fs -du -s -h /user/${dir}/$tablename/* |awk -F '/' '{print $NF}'`;
do
echo $region
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024 hdfs://{namenode2}:9000/user/${dir}/$tablename/$region iflyol:$tablename
done
echo "HBase數據導入完畢!"
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM