这是我参与「第四届青训营 」笔记创作活动的第8天,在第八节课中主要了解到了HDFS原理与应用有关的内容。
一、HDFS基本介绍
- Hadoop Distributed File System
- 分布式文件系统:大容量、高可靠、低成本
- HDFS功能特性:分布式、容错、高可用、高吞吐、可拓展、廉价
二、架构原理
HDFS组件
Client写流程
Client读流程
元数据节点NameNode:
- 维护目录树
- 维护文件和数据块的关系
- 维护文件块存放节点信息
- 分配新文件存放节点 数据节点DataNode:
- 数据块存取
- 心跳汇报
- 副本复制
三、关键设计
- 分布式存储系统基本概念:容错能力、一致性模型、可拓展性、节点体系、数据放置、单机存储引擎
NameNode目录树维护
fsimage:
- 文件系统目录树
- 完整的存放在内存中
- 定时存放到硬盘上
- 修改是只会修改内存中的目录树 Editlog:
- 目录树的修改日志
- client更新目录树需要持久化Editlog后才能表示更新成功
- Editlog可存放在本地文件系统,也可存放在专用系统上
- NameNode HA方案一个关键点就是如何EditLog共享
NameNode数据放置
- 数据块信息维护
- 数据放置策略
DataNode
数据块的硬盘存放:
- 文件在NameNode已分割成block
- DataNode以block为单位对数据进行存取 启动扫盘:
- DataNode需要知道本机存放了哪些数据块
- 启动时把本机硬盘上的数据块列表加载在内存中
HDFS写异常处理:Pipeline Recovery
- 情景
- 异常出现的时机:创建连接时,数据传输时,complete阶段
- 解决方法:Pipeline Recovery
HDFS写异常处理:Lease Recovery
- 租约、情景、解决方法
Client读异常处理
情景:读取文件的过程,DataNode侧出现异常挂掉了 解决方法:节点Failover
HDFS写异常处理:Plpeline Recovery
旁路系统
- Balancer:均衡DataNode的容量
- Mover:确保副本放置符合策略要求
控制面建设
- 可观测性设施:指标埋点、数据采集、访问日志、数据分析
- 运维体系建设:运维操作需要平台化、NameNode操作复杂、DataNode机器规模庞大、组件控制面API
四、应用场景
使用HDFS的公司
- 初窥大数据生态
- ETL:Extract,Transform,Load
- OLAP查询引擎
- HBase
- 机器学习
- 通用存储应用
- 对象存储、消息队列、冷数据层、海量日志、备份数据