温馨提示×

HBase在CentOS上的数据迁移步骤是什么

小樊
31
2025-12-13 20:47:15
栏目: 智能运维

HBase在CentOS上的数据迁移步骤

一、迁移方式概览与选择

  • 离线全量快照迁移(ExportSnapshot + ImportSnapshot):对线上影响最小,适合一次性迁移或跨版本迁移,依赖HDFS网络带宽与存储。
  • 在线持续复制(Replication):先全量后增量,适合业务不停写,逐步追平增量。
  • Export/Import MapReduce:通用但较重,适合中小规模或跨集群一次性迁移。
  • Bulk Load(Export → HFile → LoadIncrementalHFiles):写入性能最佳,适合超大规模与性能敏感场景。
  • DistCp直拷HDFS数据:底层文件级拷贝,适合底层HFile迁移或特殊需求。
    选择建议:离线迁移优先用快照;不停写优先复制;追求极致导入性能用Bulk Load

二、离线全量迁移步骤(快照方式,推荐)

  • 前置检查
    • 确认源/目标集群的HBase版本兼容HDFS可达,必要时在目标集群预先创建同名表结构(列族、版本、TTL一致)。
    • 在源集群确认已开启快照:hbase.snapshot.enabled=true
    • 确保运行迁移任务的YARN可用(建议把作业提交到目标集群,减少对线上影响)。
  • 源集群创建快照
    • hbase shell
      • create ‘source_table’, ‘cf1’, ‘cf2
      • snapshot ‘source_table’, ‘snap_20251213
  • 导出快照到目标HDFS
    • hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot
      -snapshot ‘snap_20251213
      -copy-to ‘hdfs://target-nn:8020/hbase/.hbase-snapshot/snap_20251213
  • 目标集群恢复快照
    • hbase shell
      • disable ‘source_table
      • restore_snapshot ‘snap_20251213
      • enable ‘source_table
  • 校验与清理
    • hbase shell: count ‘source_table’、scan 抽样校验
    • 迁移完成后可删除临时快照与导出目录(谨慎操作)。
      说明:ExportSnapshot会在后台以DistCp方式拷贝底层HFile,速度快、对业务影响低。

三、在线迁移步骤(复制方式)

  • 源/目标集群开启复制
    • hbase shell: enable ‘replication’
  • 目标集群创建目标表(结构一致,列族开启复制作用域)
    • hbase shell
      • create ‘target_table’, ‘cf1’, ‘cf2
      • alter ‘target_table’, {NAME => ‘cf1’, REPLICATION_SCOPE => ‘1’}
      • alter ‘target_table’, {NAME => ‘cf2’, REPLICATION_SCOPE => ‘1’}
  • 建立复制关系并启动
    • hbase shell
      • add_peer ‘peer1’, ‘zk1:2181:/hbase
      • enable_table_replication ‘target_table
  • 监控与追平
    • hbase shell: status ‘replication’ 查看延迟与进度
    • 追平后可将业务切换到目标集群,再执行 disable_peer ‘peer1’ 停止复制。
      说明:复制为最终一致性,适合不停写场景;切换前建议再次校验关键数据。

四、高性能批量导入步骤(Bulk Load)

  • 导出表数据到HDFS
    • hbase org.apache.hadoop.hbase.mapreduce.Export ‘source_table’ ‘/data/export/source_table’
  • 转换为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
      ‘/data/export/source_table’ ‘/data/hfiles/target_table’
  • 使用LoadIncrementalHFiles加载到目标表
    • hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles
      -D hbase.table.name=‘target_table
      ‘/data/hfiles/target_table’ ‘target_table
      说明:Bulk Load绕过RegionServer写入路径,直接生成HFile并由Region加载,适合超大规模高吞吐导入。

五、关键注意事项与常见问题

  • 版本与兼容性:跨大版本迁移需评估HBase/HDFS/RPC兼容性;必要时先升级底层HDFS或采用快照方式降低风险。
  • 权限与安全:确认HDFS/HBase账号权限一致;若一端开启Kerberos而另一端未开启,需按环境做安全策略适配或临时关闭认证(不建议生产)。
  • 一致性控制:离线迁移建议先flush/disable表;在线迁移使用复制并在切换前停写校验。
  • Region规划:目标表Region数量与split keys尽量与源表一致,减少后续热点与合并/分裂压力。
  • 资源与窗口:迁移为MapReduce/DistCp作业,需保障YARN/内存/带宽;选择业务低峰执行并实时监控。
  • 校验:迁移后通过count/scan抽样/校验和等方式核对数据一致性与行数。
    以上要点可显著降低迁移风险并提升成功率。

0