因公司的hbase0.9.4迁移到云平台,但阿里云的emr的hbase是1.1版本,存在问题:hbase的版本间变化大,采用export/import方法时存在snappy支持问题,元信息错误等问题。
想到hbase有bulkload方式入库,查看了一下,hbase的hfile 文件在两版本间变化不大,在0.92版本就已经升级到hfile V2,故想到使用把旧版本hfile文件放到云hdfs上,使用一次bulkload加载到新表中完成数据迁移。具体步骤如下:
1、从旧hdfs取hfile,hadoop fs -get /hbase/adt_channel_compaign/ .
2、把文件传到新hdfs,tar -c 55b2c9c122638b57b6e7dc40755569e4 |lz4 | ssh -p22 hadoop@xx.xx.xx.xx "cd /data0/tmp; lz4 -d | tar x" , 然后 put 到hdfs
3、把表格创建好,执行buldload操作,如
export HADOOP_CLASSPATH=/usr/lib/hbase-current/lib/*:$HADOOP_CLASSPATH
export CALSSPATH=/usr/lib/hbase-current/lib:CALSSPATH
hadoop jar /usr/lib/hbase-current/lib/hbase-server-1.1.1.jar completebulkload /data/hfile/path table_name