背景
老的集群A机器设备太老了,hbase读写性能差,需要迁移到新集群B。
问题
由于集群A和集群B不通,不能使用hdfs distcp、hbase快照、Replication同步、hbase导入导出等方式去做迁移
get方式
基于以上问题只能使用hdfs get的方式将数据get下来到机器上,再将get下来的数据put到新集群B,然后再通过元数据修复,上线region来解决。
kerberos报错
由于两个集群都是认证集群,我写了个脚本get后再put数据到新集群,但是发现有个5个多T的hbase表,get到3.6T的时候报错了。发现是kerberos认证信息过期,认证报错。
由于集群是生产环境,机器不能随便更改服务端配置,不能修改kerberos。所以只能想别的办法。
解决
1、不再使用shell脚本方式get再put。
2、直接nohup hdfs get xxxxx xxx & >./xxx.log
3、添加crontab定时任务,由于认证是24小时过期,直接添加了5小时执行一次认证。
目前为止get数据正常。