HBase集群数据在线迁移方案探索
💡
原文中文,约12500字,阅读约需30分钟。
📝
内容提要
订单本地化系统已将一个月的订单的读写切换至jimkv存储,对应的HBase集群已下线。计划将存储全量数据的HBase集群中的数据迁移到jimkv,彻底下线该HBase集群。HBase客户端提供了Shell命令行接口、Java API编程接口、Thrift/REST API编程接口和MapReduce编程接口。HBase客户端访问数据行之前,需要通过元数据表定位目标数据所在RegionServer。Master负责HBase系统的管理工作,RegionServer用来响应用户的IO请求。HBase底层依赖HDFS组件存储实际数据。使用Snapshot功能可以进行全量/增量备份和数据迁移。
🎯
关键要点
- 订单本地化系统将一个月的订单读写切换至jimkv存储,HBase集群已下线。
- 计划将存储全量数据的HBase集群中的数据迁移到jimkv,彻底下线该HBase集群。
- HBase客户端提供Shell命令行接口、Java API、Thrift/REST API和MapReduce编程接口。
- HBase Master负责管理系统,RegionServer响应用户IO请求,HBase依赖HDFS存储数据。
- WAL用于实现数据高可靠性和主从复制,BlockCache提升读取性能。
- Region是数据表的分片,HBase通过水平切分管理Region。
- hbase:meta表存储集群所有Region信息,MetaCache缓存Region信息以减轻hbase:meta表压力。
- HBase客户端提供Scan API用于批量扫描数据,Scan API适用于少量数据扫描。
- TableScanMR和SnapshotScanMR用于大数据量扫描,前者是Scan API的并行化,后者直接在客户端扫描HDFS文件。
- Hadoop层数据迁移使用DistCp,HBase层数据迁移使用copyTable和Export/Import。
- Snapshot备份技术不拷贝数据,速度快且保证数据一致性,适用于全量/增量备份和数据迁移。
- 使用Snapshot时需注意集群权限和超时问题,建议增大scan缓存以减少RPC请求次数。
- 离线批量读取时建议禁用缓存以避免影响实时业务。
➡️