HDFS | 青训营笔记

78 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第5天

在学习了数据处理的各种方法之后,开始思考数据是如何管理和存放的?

了解HDFS之前,需要认识著名的Hadoop的体系结构。

计算框架:MapReduce **Spark虽然不属于Hadoop,但是联系紧密

调度层:YARN

存储层:HDFS

一、简单介绍

HDFS(Hadoop Distributed File System)位于Hadoop存储层,是一个分布式文件系统,具有以下特性: 分布式、容错、高可用、高吞吐、可扩展、廉价。

HDFS在使用中可以通过命令行交互也可以通过Web UI调用。

二、架构原理

HDFS的三大件:Client/SDK、NameNode、DataNode

image.png

  • 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作为通用存储场景,存在以下优缺点。

优点:

  1. 数据冗余、硬件容错
  2. 处理流式的数据访问
  3. 适合存储大文件
  4. 可以构建在廉价的机器上

缺点:

  1. 低延迟的数据访问
  2. 小文件索引,过多的小文件会对NameNode造成压力