这是我参与「第四届青训营 」笔记创作活动的的第5天
在学习了数据处理的各种方法之后,开始思考数据是如何管理和存放的?
了解HDFS之前,需要认识著名的Hadoop的体系结构。
计算框架:MapReduce **Spark虽然不属于Hadoop,但是联系紧密
调度层:YARN
存储层:HDFS
一、简单介绍
HDFS(Hadoop Distributed File System)位于Hadoop存储层,是一个分布式文件系统,具有以下特性: 分布式、容错、高可用、高吞吐、可扩展、廉价。
HDFS在使用中可以通过命令行交互也可以通过Web UI调用。
二、架构原理
HDFS的三大件:Client/SDK、NameNode、DataNode
- Client/SDK:读写操作的发起点,HDFS很多读写逻辑都是在SDK中实现的。
- NameNode:元数据节点,是HDFS的中枢节点,也是服务的入口。
- DataNode:数据节点,存放实际用户数据。
三、关键设计
分布式存储系统涉及:容错能力、一致性模型、可扩展性、节点体系、数据放置、单机存储引擎。
1.目录树维护
完整存放在内存中,定时存放在硬盘上,修改只会修改内存中的目录树。
为了保证一致性,用目录树的修改日志EditLog。
2.数据块维护
维护数据块所在的节点信息,数据块存放时的存放策略很重要。
文件在NameNode分割成block,DataNode以block为单位对数据进行存取
3.HDFS写异常
(1)Lease Recovery
文件写了一半,client挂掉导致副本不一致,Lease无法释放。
(2)Pipeline Recovery
文件写入过程中,DataNode挂掉。
Pipeline重新构建。
4.Client读异常
(1)节点Failover
读取文件过程中,DataNode出现异常挂掉或者DataNode读取过程非常缓慢。
5.旁路系统
- Balancer:均衡DataNode的容量
- Mover:确保副本放置符合策略要求
6.控制面建设
可观测性设施比如系统指标监控,运维体系建设搭建完善的运维平台。
四、应用场景
HBase、机器学习、通用存储应用
五、总结
HDFS作为通用存储场景,存在以下优缺点。
优点:
- 数据冗余、硬件容错
- 处理流式的数据访问
- 适合存储大文件
- 可以构建在廉价的机器上
缺点:
- 低延迟的数据访问
- 小文件索引,过多的小文件会对NameNode造成压力