这是我参与「第四届青训营 」笔记创作活动的第6天
元数据高可用
服务高可用的需求
- 故障类型: 硬件故障、软件故障、人为故障
- 灾难:数据中心级别不可用 机房断电、机房空调停机、机房间网络故障、拥塞
- 故障不可避免,灾难时有发生。
- 如果HDFS系统不可用
- 无法核算广告账单,直接引发收入损失
- 无法生产数据报表,据驱动无从谈起
- 无法进行模型训练,用户体金越来越差
- 业务停止的损失极大,所以HDS系统的高可用性就至关重要。
HDFS NameNode高可用架构
- 组件介绍
- ActiveNamenode:主节点,提供服务,生产日志
- StandbyNamenode:备节点,消费日志
- ZooKeeper:为自动选主提供统一协调服务
- Book Keeper:提供日志存储服务
- ZKFC:NameNode探活、触发主备切换
- HA Client:提供了自动切换的客户端
- edit log:操作的日志
- 围绕三个问题来看高可用
- 节点状态如何保存
- 操作日志如何同步
- 如何故到自动切换
数据存储高可用
案例:字节跳动的HDFS多机房实践
- 字节跳动的HDFS集群,从单机房演进到双机房,再从双机房演进到更多的机房。
- 多机房解决的问题
- 容量问题
- 容灾问题
- HDFS双机房放置的设计
- 写入时,每个数据块在两个机房至少各有一个副本,数据实时写入 到两个机房
- 读取时,优先读本地的副本,避免了大量的跨机房读取
数据迁移工具-跨NN迁移
- DistCopy
- 基于MapReduce,通过一个个任务,将数据从一个NameNode拷 贝到另个NameNode。
- 需要拷贝数据,流量较大,速度较慢。
- FastCopy
- 开源社区☒的无需考贝数据的快速元数据迁移方案
- 前提条件:新旧集群的DN列表吻合
- 对于元据, 直接复制目录树的结构块信息
- 对于数据块, 直接要求DataNode从源BlockPool hardlink到目标 Blook Pool,没有数据拷贝
- hardlink:直接让两个路径指向同一块数据。