这是加入青训营的第11天。
1、HDFS概述
本文将以Apache HDFS为蓝本,重点介绍HDFS的原理和应用场景,帮助同学加深对大规模数据分布式存储系统的理解。本文将包括三个方面
- HDFS架构原理
- HDFS关键设计
- HDFS应用场景
二、HDFS架构原理
-
分布式存储系统的基本概念,这些概念基本上每个分布式存储系统都会涉及到。
- 容错能力
- 一致性模型
- 可扩展性
- 节点体系模式
- 数据放置策略
- 单机存储引擎
-
HDFS组件
- Client/SDK:读写操作的发起点,HDFS很多读写逻辑都是在SDK中实现的。
- NameNode:元数据节点,是HDFS的中枢节点,也是服务的入口。
- DataNode:数据节点,存放实际用户数据。
三、关键设计
-
NameNode目录树设计,重点理解EditLog的设计,可类比关系型数据库中的Transaction Log概念。
- 仅在内存中修改:fsimage
- 需要立即保存到硬盘:EditLog
-
NameNode数据放置:数据分散在各个节点上,如何定位找到它们?
- 文件和数据块的映射关系
- 数据块的放置分布策略
-
DataNode设计:数据如何落盘存放?
- 数据块路径
- 启动扫盘获得本机文件块列表
-
Client读写链路的异常处理
- Server端异常
- Client端异常
- 慢节点
-
控制面建设:保障系统稳定运行
- HouseKeeping组件:比如Balancer,Mover等, 这些组件不运行不会马上影响读写操作,但是长时间会积累系统性问题,例如读写不均衡导致IO热点等。
- 可观测性设施:比如系统指标监控设施等,帮助快速发现定位问题。
- 运维体系建设:从最基本的命令行手工操作,脚本自动化再到完善的运维平台。
四、应用场景
-
大数据技术中的应用
-
HDFS在大数据技术体系中的角色
-
演示:PySpark读取分析HDFS上的文件
- 数据如何产生
- 数据如何读取
- 数据如何保存
-
ETL:数据如何产生、传输
-
OLAP:如何高效地读取分析数据
-
-
存储底座
- HBase
- 机器学习
- 通用场景