温馨提示×

centos hbase数据迁移方案

小樊
39
2025-12-21 18:16:05
栏目: 智能运维

CentOS 下 HBase 数据迁移方案

一、方案总览与选型

  • 离线全量迁移(推荐):基于 Snapshot 快照克隆/导出,或 Export/Import MapReduce 作业,适合一次性搬迁、版本升级、跨环境迁移。快照几乎不拷贝数据,速度快;Export/Import 通用性强。
  • 近实时同步:基于 HBase Replication 复制,适合不停机持续同步,先追平历史再切换。
  • 离线大规模批量导入:先 Export 再转换为 HFile,用 LoadIncrementalHFiles 批量加载,写入吞吐高、对线上影响小。
  • 停服全量拷贝:集群停机后用 Hadoop DistCp 直拷 HBase 表目录,再在目标集群恢复,适合允许停机的场景。

二、标准操作步骤

  • 离线 Snapshot 迁移(推荐)

    1. 在目标集群用 hbase shell 创建与源一致的表结构(库名/表名/列族一致)。
    2. 在源集群创建快照:snapshot ‘src_table’, ‘snap1’。
    3. 可选克隆到目标做校验:clone_snapshot ‘snap1’, ‘verify_tbl’(不产生数据拷贝,仅创建链接,便于快速校验)。
    4. 将快照拷贝到目标 HDFS(/hbase 根目录保持一致):
      hadoop distcp -m 50 hdfs://src-nn:8020/hbase/.hbase-snapshot/snap1 hdfs://tgt-nn:8020/hbase/.hbase-snapshot/
      hadoop distcp -m 50 hdfs://src-nn:8020/hbase/archive hdfs://tgt-nn:8020/hbase/archive
    5. 在目标集群恢复快照:restore_snapshot ‘snap1’;如需重命名,先 clone_snapshot 再 restore/切换。
    6. 校验数据:count/scan 抽样对比。
  • Export/Import MapReduce

    1. 源集群导出:
      hbase org.apache.hadoop.hbase.mapreduce.Export src_table /export/src_table
    2. 跨集群传输(若不在同一 HDFS):
      hadoop distcp hdfs://src-nn:8020/export/src_table hdfs://tgt-nn:8020/export/src_table
    3. 目标集群导入(表需先存在且结构一致):
      hbase org.apache.hadoop.hbase.mapreduce.Import src_table /export/src_table
    4. 校验数据一致性与 Region 分布。
  • Replication 近实时迁移

    1. 双方开启复制:在 hbase-site.xml 设置 hbase.replication=true,并配置 ZooKeeper 信息。
    2. 目标集群创建同结构表。
    3. 在源集群添加复制对端并启动:
      add_peer ‘peer1’, ‘zk1:2181:/hbase’
      enable_table_replication ‘src_table’
    4. 监控复制延迟与状态,追平后短暂停写,切换读写到目标集群,停止复制。
  • Bulk Load 批量导入(高吞吐)

    1. 源集群 Export 得到 HFile 输入:
      hbase org.apache.hadoop.hbase.mapreduce.Export src_table /export/src_table
    2. 转换为 HFile(示例,按实际列族/参数调整):
      hbase org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2 \ -D mapreduce.job.output.key.class=org.apache.hadoop.hbase.KeyValue \ -D mapreduce.job.output.value.class=org.apache.hadoop.hbase.KeyValue \ -D hbase.table.name=target_table \ /export/src_table /export/hfiles
    3. 按目标表 Region 边界执行 LoadIncrementalHFiles:
      hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \ -D hbase.table.name=target_table \ /export/hfiles target_table
    4. 校验。
  • 停服 DistCp 拷贝

    1. 停写源表(flush/major_compact 可选)。
    2. 直拷表目录(含 .regioninfo、列族目录、hfiles 等):
      hadoop distcp -m 50 hdfs://src-nn:8020/hbase/data/default/src_table hdfs://tgt-nn:8020/hbase/data/default/src_table
    3. 目标集群使用 HBase 工具或脚本恢复表元数据(如 add_table.rb 等),再校验。

三、方法对比与适用场景

方法 停机要求 速度与成本 一致性 适用场景
Snapshot 克隆/拷贝 不停机 快(元数据级),网络/存储有开销 高(时间点一致) 版本升级、跨环境迁移、快速克隆
Export/Import 不停机 中(MR 作业),可并行 高(导出时点一致) 通用离线迁移、跨版本/跨发行版
Replication 不停机 近实时,带宽持续占用 最终一致 不停机迁移、双写到切换
Bulk Load 不停机 写入吞吐高,准备阶段有计算成本 高(导入时点一致) 超大数据量、对写入性能敏感
DistCp 停服 需停写 快(直拷),需停机窗口 高(停机时点一致) 允许停机的全量迁移

四、迁移前后关键检查与注意事项

  • 前置检查
    • 双方 HBase/Hadoop 版本兼容ZooKeeper 地址可达HDFS 权限与配额充足。
    • 目标表结构(列族、TTL、压缩、版本数、预分区)与源表一致;如不一致先调整再导入。
    • 规划 时间窗口/带宽/并发度,避免影响线上。
  • 一致性校验
    • 行数对比(count)、抽样 scan/随机 get、重要业务主键集合校验;必要时对比 Checksum/Md5
  • 性能与稳定性
    • Snapshot/Export/Import 可通过 -m 并发 map 数 调整;Bulk Load 前先 major_compact 减少文件数。
    • 长链路迁移建议 分批/分表 执行,便于回滚与定位问题。
  • 切换与回滚
    • Replication 场景先 追平延迟→短暂停写→切读到目标→观察→停复制;异常可切回源。
    • 保留 快照/导出目录 一段时间作为回滚点,清理前再次校验。

0