HDFS 原理与应用 | 青训营笔记

65 阅读3分钟

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

1. HDFS原理与应用

1.1 HDFS原理

HDFS(Hadoop Distributed File System)是一个分布式文件系统,是谷歌的GFS山寨版本。它具有高容错性并提供了高吞吐量的数据访问,非常适合大规模数据集上的应用,它提供了一个高度容错性和高吞吐量的海量数据存储解决方案。

高吞吐量访问:HDFS的每个Block分布在不同的Rack上,在用户访问时,HDFS会计算使用最近和访问量最小的服务器给用户提供。由于Block在不同的Rack上都有备份,所以不再是单数据访问,所以速度和效率是非常快的。另外HDFS可以并行从服务器集群中读写,增加了文件读写的访问带宽。

高容错性:系统故障是不可避免的,如何做到故障之后的数据恢复和容错处理是至关重要的。HDFS通过多方面保证数据的可靠性,多份复制并且分布到物理位置的不同服务器上,数据校验功能、后台的连续自检数据一致性功能都为高容错提供了可能。

线性扩展:因为HDFS的Block信息存放到NameNode上,文件的Block分布到DataNode上,当扩充的时候仅仅添加DataNode数量,系统可以在不停止服务的情况下做扩充,不需要人工干预。

1.2 架构原理

image.png

image.png

1.3 组件

  1. 块(Block):将一个文件进行分块,通常是64M。写入后不能修改,但是可以追加。
  2. 名称节点(NameNode):保存整个文件系统的目录信息、文件信息及分块信息,如果主 NameNode 失效,切换到Secondary NameNode。
  3. 数据节点(DataNode):分布在廉价的计算机上,用于存储Block块文件。
  4. 客户端(Client):通过与 NameNode和DataNode 交互访问HDFS中的文件。

其中,DataNode和NameNode是HDFS的两大核心。

1.3.1 名称节点(NameNode)

NameNode管理文件系统的命名空间,它维护着文件系统树及整棵树内所有的文件和目录,即元数据(MetaData)。元数据有三种存储方式:

  • 内存元数据,目的是提升性能,定期从磁盘加载一份镜像到内存中。
  • 命名空间镜像文件(fsImage),保存整个文件系统的目录树。
  • 编辑日志文件(edits),记录文件系统元数据发生的所有更改,如文件的删除或添加等操作信息。

1.3.2 数据节点(DataNode)

DataNode角色的节点是真正存放块(block)数据的节点,当DataNode启动时,它将扫描其本地文件系统,生成与每个本地文件相对应的所有HDFS数据块的列表,并将此报告发送到NameNode。该报告称为BlockReport。

1.4 应用场景

  • ETL:Extract,Transform,Load
  • OLAP 查询引擎:
  • HBase:
  • 机器学习:Tensenflow(原生支持 HDFS 读写)、PyTorch(通过 Alluxio 访问 HDFS、修改源码支持)
  • 通用存储应用:对象存储、消息队列、冷数据层、海量日志、备份数据

总结

  1. 了解HDFS的使用场景,尤其是在大数据场景中的常规应用,同时也了解HDFS在其它场景的一些应用,加深对存储系统应用场景的理解;
  2. 了解HDFS的设计与实现,包括基本功能、运维体系等,对生产环境里分布式存储系统体系化建设有进一步认知;
  3. 了解了一个分布式存储系统涉及的基本概念和设计问题

参考

  1. 【大数据专场 学习资料三】第四届字节跳动青训营 - 掘金 (juejin.cn)
  2. HDFS架构与原理详解 - 知乎 (zhihu.com)