以下是在Ubuntu环境下进行HBase数据迁移的常见方法及操作要点:
CopyTable工具
hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=target_table source_table
(本地模式,适合小数据量)。hadoop jar hbase-server.jar org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=target_table source_table
。Export/Import工具
hbase org.apache.hadoop.hbase.mapreduce.Export table_name /hdfs/path
。hbase org.apache.hadoop.hbase.mapreduce.Import table_name /hdfs/path
。Snapshot快照迁移
hbase shell> snapshot 'table_name', 'table_snapshot'
。hadoop distcp hdfs://source-cluster/hbase/.hbase-snapshot/table_snapshot hdfs://target-cluster/hbase/.hbase-snapshot/
。hbase shell> clone_snapshot 'table_snapshot', 'table_name'
。flush 'table_name'
)。sudo -u hbase hadoop distcp -bandwidth 100 -m 50 hdfs://source/hbase/data/default/table_name hdfs://target/hbase/data/default/
。hbase backup create full ... -Dmapreduce.map.output.compress=true -Dmapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec
。hbase org.apache.hadoop.hbase.mapreduce.RowCounter
校验数据行数。场景 | 推荐工具 | 优势 |
---|---|---|
实时增量迁移 | 集群复制(Replication) | 低延迟,无需停机 |
大规模离线迁移 | Snapshot+DistCp | 高效稳定,支持大规模数据 |
跨版本/异构集群 | CopyTable(MapReduce模式) | 兼容性强,支持结构转换 |
hbase-site.xml
中hbase.rootdir
指向正确HDFS路径。