learn from 从0开始学大数据(极客时间)
1. HDFS 架构
DataNode 负责数据的存储、读写,HDFS 将文件分割成若干数据块(Block),每个 DataNode 存储一部分数据块,文件就分布存储在整个 HDFS 服务器集群中
NameNode 负责分布式文件系统的元数据(MetaData) 管理,也就是文件路径名、数据块的 ID 以及存储位置等信息,相当于操作系统中文件分配表(FAT)的角色
2. HDFS 的高可用设计
- 数据存储故障容错 对 DataNode 上的数据块,计算并存储校验和(CheckSum)。 读取时,重新计算读出数据的校验和,如果校验抛出异常,程序捕获异常后就到其他 DataNode 上读取备份数据
- 磁盘故障容错 DataNode 监测到本机某块磁盘损坏,将该块磁盘上存储的所有 BlockID 报告给 NameNode,NameNode 检查在哪些 DataNode 上有备份,复制备份到其他服务器上,保证备份数量
- DataNode 故障容错 DataNode 会通过心跳和 NameNode 保持通信,如果 DataNode 超时未发送心跳,NameNode 就认为 DataNode 已经宕机失效,进行查找、复制一份到其他服务器
- NameNode 故障容错 NameNode 是整个 HDFS 的核心,记录着 HDFS 文件分配表信息, NameNode 故障,整个 HDFS 系统集群都无法使用
常用的保证系统可用性的策略:
- 冗余备份:数据备份,请求分发发哦任何一个数据中心
- 失效转移:数据无法访问时,转移请求到备份数据所在服务器
- 降级限流:大量请求到达,计算资源有限,拒绝部分请求(限流),关闭部分功能(降级),如双11关闭评价,保证下单功能