TANKENQI.cn

July 4, 2024

新旧 Hbase 集群间数据迁移

database2.3 min to read

Hbase 表是基于 hadoop HDFS 构建,所以 Hbase 的迁移可从两个维度来看,基于 hadoop HDFS 的 distcp 的迁移方式和基于 Hbase 表结构的 Hbase 层面提供的相关工具迁移。

3f768ac65819cd9b20166b0505876ad1

如上图所示,HBase 迁移有多种方案,其中基于 Snapshot 的迁移方式是推荐的迁移方案。

下面给出 Snapshot 方式进行数据迁移的方式,迁移背景是,两个无法通信的 Hbase 集群之间进行数据迁移

下面例子中以迁移一张名为 OGE_Vector_Fact_Table 的表为例

1 创建快照

hbase shell> snapshot 'OGE_Vector_Fact_Table', 'OGE_Vector_Fact_Table_snapshot'

2 复制快照和表的数据到新集群

# 复制快照hadoop distcp hdfs://old-cluster/hbase/.hbase-snapshot/OGE_Vector_Fact_Table_snapshot hdfs://new-cluster/hbase/.hbase-snapshot/# 复制表数据hadoop distcp hdfs://old-cluster/hbase/data/default/OGE_Vector_Fact_Table hdfs://new-cluster/hbase/data/default/# 附:新集群上查看快照hbase shell> list_snapshots# 附:删除快照hbase shell> delete_snapshot 'OGE_Vector_Fact_Table_snapshot'

转移快照

# 将快照从旧集群hdfs上拷贝至本机,然后将该文件夹转移至另一个服务器集群上hadoop fs -copyToLocal /hbase/.hbase-snapshot/OGE_Vector_Fact_Table_snapshot /mnt/oge/hbase-snapshot# 在新集群机器上将快照文件夹上传至hdfshadoop fs -copyFromLocal /mnt/oge/hbase-snapshot/OGE_Vector_Fact_Table_snapshot /hbase/.hbase-snapshot

转移表数据

# 将快照从旧集群hdfs上拷贝至本机,然后将该文件夹转移至另一个服务器集群上hadoop fs -copyToLocal /hbase/data/default/OGE_Vector_Fact_Table /mnt/oge/hbase-data# 在新集群机器上将表数据上传至hdfshadoop fs -copyFromLocal /mnt/oge/hbase-data/OGE_Vector_Fact_Table /hbase/data/default

3 恢复快照

hbase shell> clone_snapshot 'OGE_Vector_Fact_Table_snapshot', 'OGE_Vector_Fact_Table'
hbase shell> scan 'OGE_Vector_Fact_Table'> count 'OGE_Vector_Fact_Table'

4 其他说明

通过比较两个目录的内容,你可以看到是否有任何差异。请注意,快照和数据归档操作会影响这些目录的内容。

在HBase中,restore_snapshotclone_snapshot 在恢复数据时有不同的用法和目的: