原老集群有100台服务器,新增90台服务器和原来的服务器构成新Hyperbase集群
最初考虑有两种方案distcp和snapshot,由于distcp进行数据迁移时不在HBase本身控制范围内,故选用snapshot方式
大概步骤:
1、老集群批量建snapshot
hbase shell list
选择dw复制出来文本里批量按行写命令
直接在hbase shell里执行全选的命令,shell自动按行执行
2、准备要迁移的snapshot name的文本数据,一行一个
#3、source TDH-client/init.sh
4、执行python命令:(调整参数)
python ss.py ss.txt hdfs://ip1/hyperbase1 hdfs://ip2/hyperbase1 2 10
5、新集群restore_snapshot
参数参考命令:
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot snapshot-t_522_yingxiang \
*-copy-from hdfs://172.18.9.30:8020/hbase \
*-copy-to hdfs://172.18.9.30:8020/aaa \
*-mappers 2 \
*-bandwidth 10
注:
mappers 2 指使用2个map
bandwidth 10 指带宽设为10
完全步骤:
1 python ss_c_r.py table ssc ssr ss
2 老集群批量建ssc
3 python ss.py ss hdfs://166.0.8.10:8020/hyperbase1 hdfs://166.0.12.10:8020/hyperbase1 400 1000
4 检查3是否全done,若有failed,将failed,将failed的手动写入ss_fail文件,在执行
python ss.py ss_fail hdfs://166.0.8.10:8020/hyperbase1 hdfs://166.0.12.10:8020/hyperbase1 400 1000
全部为done结束
5 新集群执行ssr(直接将文件内容粘贴出来,在hbase shell执行就行)