这是我参与「第四届青训营 」笔记创作活动的的第6天。
写在前面
在硕士期间的学习过程中学习过HDFS的架构和使用场景,但是结合业务实际的架构介绍还是第一次,很有理论联系实际的价值。在实习中也应用过课程中讲过的PySpark读写HDFS.
笔记内容
关键点
- HDFS的设计与实现
- HDFS的产品化体系建设
- HDFS多场景应用
- 分布式存储系统通用基本概念
一、HDFS基本介绍
Hadoop Distributed File System
- 分布式文件系统
- 大容量
- 高可靠
- 低成本
- 分布式存储系统
- 对象存储
- Amazon S3
- 阿里云OSS
- MINIO
- Ceph
- 文件系统
- HDFS
- CubeFS
- Ceph
- Gluster
- 块存储
- Amazon EBS
- CurveBS
- Ceph
- LONGHORN
- 数据库
- Cassandra
- TiDB
- ...
- 对象存储
- HDFS功能特性
- 分布式
- 容错
- 高可用
- 高吞吐
- 可扩展
- 廉价
二、架构原理
HDFS组件
- Client/SDK
- 写流程
- 读流程
- NameNode 源数据节点
- 维护目录树
- 维护文件和数据块关系
- 维护文件块存放节点信息
- 分配新文件存放节点
- DataNode
- 数据块存取
- 心跳汇报
- 副本复制
三、关键设计
基本概念
- 容错能力
- 一致性模型
- 可扩展性
- 节点体系
- 数据防止
- 单机存储引擎
NameNode目录树维护
- fsimage
- 文件系统目录树
- 完整存放在内存
- EditLog
- 目录树的修改日志
NameNode数据放置
- 数据块信息维护
- 数据放置策略
DataNode
- 数据块的硬盘存放
- 启动扫盘
HDFS写异常处理
- Lease Recovery
- 情景
- Client要修改一个文件时,需要通过namenode上锁,锁就是租约(Lease)
- 情景
- Pipeline Recovery
- 情景
- 文件写入过程中datanode侧异常挂掉了
- 情景
Client读异常处理
- 情景
- 读取文件过程中DataNode侧异常挂掉了
- 解决方法
- 节点failover
旁路系统
- Balancer
- Mover
控制面建设
- 可观测性设施
- 运维体系建设
四、应用场景
- PySpark读写HDFS
- ETL概念
- OLAP查询引擎
- 通用存储场景