一个“可以用”的系统和“好用”的系统,差距就是“高可用”和“高扩展性”!
这是我参与「第四届青训营」笔记创作活动的第4天,笔记内容为《HDFS的高可用机制分析之“数据存储高可用”》,内容主要为“数据存储高可用”。
数据存储高可用
单机存储——RAID(Redundant Array of Independent Disks)
提供RAID功能的NAS设备
特点:
- 廉价
- 高性能 -大容量 -高可用
RAID 方案讲解
- RAID 0 条带华
- RAID 1: 冗余
- RAID 2: 容错校验
HDFS 多副本
Hadoop 的多副本放置
优点:
- 读写路径简单
- 副本修复简单
- 高可用
Erasure Coding 的原理
图:Reed Solomon 算法原理
业界常用Reed Solomon算法
将数据分段,通过特殊的编码方式存储额外的校验块,并条带化的组成块,存储在 DN 上和多副本比较
- 读写速度:顺序读更快
- 成本:存储成本低
- 修复速度:有额外计算开销
- 读写路径的实现:更复杂
网络架构
机架的样子
网络拓补
副本放置策略——机架感知
HDFS 的多机架放置
- trade-off: 一个本地,一个远端
案例:字节跳动的 HDFS 多机房实践
字节跳动的 HDFS 集群,从单机房演进到双机房,再从双机房演进到更多的机房。
多机房解决的问题:
- 容量问题
- 容灾问题
HDFS 双机房放置的设计:
- 写入时,每个数据块在两个机房至少各有一个副本,数据实时写入到两个机房。
- 读取时,优先读取本地副本,避免大量的跨机房读取。
多机房容灾实践
多机房部署的组件:
- Zookeeper
- Bookeeper
- NameNode
- DataNode
容灾期间的策略:
- 容灾期间,限制跨机房写入
- 容灾期间,限制跨机房副本复制
总结:HDFS的高可用确保了业务能稳定运行,使在其上存储的数据随时可以访问。