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

95 阅读3分钟

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

本次学习是对HDFS的原理及其应用的了解。

一、什么是HDFS

HDFS即Hadoop Distributed File System的简称,采用Master/Slave主从结构模型来管理数据。在设计上采用了分而治之的思想,将单服务器无法承受的大量的数据分布在多台服务器上。HDFS主要由Client、NameNode、DataNode,SecondaryNameNode这四部分组成。

二、组成HDFS的各个模块及其作用

  1. Client

HDFS客户端是在DFSClient类的基础上实现的,提供了命令行接口、API接口、浏览器接口等面向用户的接口,使用户可以不考虑HDFS的实现细节,简化操作。

  1. NameNode

NameNode在HDFS结构模型里充当Master的就角色,因此一个HDFS集群里只会有一个active的NameNode节点。在集群里主要用来处理客户端的读写请求,它主要负责管理命名空间(NameSpace)和文件Block映射信息。

  1. NameSpace

NameSpace维护着文件系统树(FileSystem Tree)和文件树上的所有文件及文件夹的元数据(metadata),并使用fsimage和editlog这两个文件来管理这些信息。fsimage(空间镜像文件),它是文件系统元数据的一个完整的永久检查点,内部维护的是最近一次检查点的文件系统树和整棵树内部的所有文件和目录的元数据,如修改时间,访问时间,访问权限,副本数据,块大小,文件的块列表信息等等。editlog(编辑日志文件),当HDFS系统发生打开、关闭、创建、删除、重命名等操作产生的信息除了在保存在内存中外,还会持久化到编辑日志文件。比如上传一个文件后,日志文件里记录的有这次事务的tx id,文件的inode id,数据块的副本数,数据块的id,数据块大小,访问时间,修改时间等。

  1. SecondaryNameNode

SecondaryNameNode不是NameNode的热备份,因为当NameNode停止服务时,它不能很快的替换NameNode。它更像是咱们现实生活中的老板NameNode的秘书,平时整理整理文档,帮老板分担工作。它主要是用来辅助NameNode进行fsimage和editlog的合并工作,可以减少editlog的文件大小。这样就可以节省NameNode的重启时间,可以尽快的退出安全模式。

三、 数据读写

  1. 基础概念
  • Block

数据存储的最大单位,在进行文件上传前Client会对文件进行分块,分得的块就是Block,默认128M,这是在综合考虑寻址时间和传输效率的的情况下得出的最佳大小。

  • Packet

Packet是client向DataNode传输数据时候的基本单位,默认64KB。

  • Chunk

Chunk是进行数据校验的基本单位,默认512Byte,加上4Byte的校验位,实际上Chunk写入Packet的大小为516Byte,常见于Client向DataNode进行的数据校验。

  1. 读数据

1659517484541.png

  1. 写数据

1659517761114.png

四、应用场景

HDFS的功能
1)数据的分布式存储和处理。
2)Hadoop 提供了一个命令接口来与 HDFS 进行交互。
3)namenode 和 datanode 的内置服务器可帮助用户轻松检查群集的状态。
4)对文件系统数据的流式处理访问。
5)HDFS 提供文件权限和身份验证。

五、总结

本次学习主要对于HDFS的架构、关键设计、功能以及应用场景进行了学习,受益匪浅,期待下次的学习!

六、参考资料

blog.csdn.net/qq_26803795…alltop_positive~default-1-104823533.pc_search_result_control_group&utm_term=hdfs%E8%AF%BB%E5%86%99%E6%B5%81%E7%A8%8B&spm=1018.2226.3001.4187

blog.itpub.net/69979736/vi…

juejin.cn/post/712494…