一、领域
| 领域 | 说明 | Approved |
Y | 金融 | 涉及收银台、支付网关、对账等金融领域 |
|
Y | 大数据 | 涉及业务数据化、数据资产化和数据业务化等大数据领域 |
|
Y | 算法 | 算法、策略等 |
|
Y | 营销 | 营销体系 |
|
Y | 基础架构 | 基础组件 |
|
Y | QA | 涉及质量保障、系统稳定性、测试工具等相关 |
|
Y | SRE | 涉及CI/CD工具、系统保障等相关 |
|
二、背景
现有cdh/hbase/tsdb 和kafka 依赖的zk集群共存,相互影响较大
hbase/tsdb资源占用较多,共涉及8台物理机,3 台SSD物理主机,5台大数据物理机
hbase 数据不均衡,数据在40T左右,hdfs01 02 03 和04 05 数据不均匀
hbase/tsdb 数据多数未压缩,未开启同步功能
hbase 健康检查存在异常,存在RIT 问题
ES-op-log 有向hdfs 备份数据需要,目前保存时间大约1个月
clouder-manager 无法登陆
和线上业务相关,hbase /tsdb 故障疑似会影响线上业务
三、目标
核心目标 保障线上业务稳定性
节约资源, 对hbase 表进行压缩,实现hbase稳定高效服务
业务拆分,降低风险 ,避免影响线上kafka 集群
业务拆分,降低风险 ,避免影响线上kafka 集群
四、价值评估
线上业务最主要的Kafka集群更加稳定,避免因资源竞争引起的服务稳定性问题。
迁移完成后增加LBS轨迹服务的稳定性。
五、检测标准
数据迁移完成后,对同步的表进行逐个count比对以及随机同一rowKey下的数据值比对
六、详细设计(执行方案)
1.搭建新的hbase集群,并对regionServer内存等进行重新分配
2.cdh配置打开新老集群的 hbase.replication, 且同步cdh上老集群的非默认配置至新集群 (需重启)
3.配置集群间所有机器的hosts
4.进入老集群的hbase shell, 将需要同步的表中所有的column family的 REPLICATION_SCOP设为1
alter '$table_name',{NAME=>'columnFamilyName1',REPLICATION_SCOP=>'1'},{NAME=>'columnFamilyName2',REPLICATION_SCOP=>'1'}
5.在老集群添加一条disabled 的复制链路,提前把主集群正在写入的Hlog堵在复制队列中
add_peer '$peer_id', CLUSTER_KEY => "x.x.x.x:2181:/hbase"
disable_peer '$peer_id'
6.在老集群对$table_name做一个SnapShot, 并用hbase内置的 ExportSnapshot工具把快照拷贝至新集群上
snapshot '$table_name', '$snapshotName'
list_snapshots
vim /etc/passwd
hbase用户末尾修改为/bin/bash (此举是为了hbase用户的登录)
su hbase 切换至hbase用户
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot $snapshotName -copy-to hdfs://x.x.x.x:8022/hbase/ -mappers 8 -bandwidth 200
7.待拷贝完成后,从快照中恢复一个表至新集群
a.老集群集群 desc '$table_name'
b.去除建表语句中的", TTL => 'FOREVER' ",并且设置COMPRESSION => 'Snappy', 新集群 create '$table_name','ddl'
c.新集群 disable '$table_name'
d.新集群 restore_snapshot '$snapshotName'
e.新集群 enable '$table_name'
8.打开步骤5中的 add_peer
enable_peer '$peer_id'
9.待同步延迟为0时整个同步过程完成
10.数据校验
11.将老集群的读写切换至新集群
12.老集群机器资源释放回收