Hbase常用可靠的数据迁移方案

常用的HBASE数据迁移目前的方案有非常多种,本文主要介绍两种一种为Hadoop手动数据迁移,另一种为Snapshot数据迁移

Hbase常用可靠的数据迁移方案

原理不多介绍,直接实战

一、Hadoop层手动数据迁移

需要注意:

1.Hadoop/hbase版本也要注意是否一致,如果版本不一致,最终load表时会报错

2.迁移实时写的表,最好是停止集群对表的写入,在以下方式需要迁移的表为Test

步骤说明:将需要迁移的数据表传输到临时目录,再copyFromLocal到hdfs修复元数据

第一步:新建个临时文件夹 /opt/hbaseDataTest/Test

第二步:在需要迁移的集群.hadoop/bin目录下 执行

./hadoop fs -copyToLocal /hbase/data/default/Test /opt/hbaseDataTest/Test

第三步:在目标的集群.hadoop/bin目录下 执行

./hadoop fs -copyFromLocal /opt/hbaseDataTest/Test /hbase/data/default/Test

第四步:在hbase/bin 执行

./hbase hbck -fixMeta 修复meta表数据

第五步: 在hbase/bin 执行

./hbase hbck -fixAssignments 重新分配数据到各个RegionServer

第六步:检查表数据是否OK

二. Snapshot数据迁移方式

HBase快照(snapshot)顾名思义就是在某个时刻对某个HBase表的数据做了快速备份,就像拍照一下,让数据停留在那个时刻不再变动,后面用来做数据的恢复或者迁移。HBase在0.94版本开始提供了快照功能,0.95版本以后默认开启快照功能。

HBase的snapshot其实就是一组metadata信息的集合(文件列表),通过这些metadata信息的集合,就能将表的数据回滚到snapshot那个时刻的数据。

简单概括HBase快照的使用场景如下:

1.HBase表的定期快速备份

2.升级前的HBase数据备份

3.集群间的数据迁移

4.构建测试环境数据

5.做数据恢复

迁移步骤

第一步:迁移snapshot

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \

-snapshot snapshot_src_table \

-copy-from hdfs://src-hbase-root-dir/hbase \

-copy-to hdfs://dst-hbase-root-dir/hbase \

-mappers 20 \

-bandwidth 1024

第二步:恢复snapshot

命令 :restore_snapshot ‘snapshotName’

备注:需要对表进行过disable才能进行restore_snapshot的操作,如果这个还在写入数据,需要采用第三步bulkload的方式导入

第三步:将snapshot使用bulkload的方式导入

hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \

-Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024 \

hdfs://dst-hbase-root-dir/hbase/archive/datapath/tablename/filename tablename

备注:这种方式需要将所有的文件进行遍历并全部通过bulkload导入,上面的只是一个文件的导入,这种方式不需要disable表。

其他snapshot操作

1.创建snapshot : snapshot 'tableName', ‘snapshotName'

2.查看snapshot : list_snapshots

3.查找以alrm开头的snapshot : list_snapshots 'alrm.*'

4.删除snapshot: delete_snapshot 'snapshotName'

三、总结

本文介绍两种常用HBase数据迁移方案,总结起来:

Hadoop手动数据迁移: 比较简单坑比较少 ,比较大数据量效率可能比较低

Snapshot: 比较常用 , 应用灵活,采用快照技术,效率比较高

具体场景还是具体选择,想了解更多信息可以关注一下微信公众号,回复1024可以领取大数据学习资料,每日更新大数据学习文章。

Hbase常用可靠的数据迁移方案


分享到:


相關文章: