HDFS核心组件

Hadoop

HDFS:分布式文件存储系统

核心组件:

一、NameNode: 整个集群的核心,NameNode本地磁盘中管理着文件系统的镜像文件及编辑日志,在内存中管理着文件系统元数据信息(主要是BlockMap与NameSpace)

  • 磁盘文件
  1. 核心1: 文件系统镜像文件(FsImage)
    磁盘中存放着的文件元数据信息,可以看做持久化后的HDFS目录树。【元数据信息[FileName、副本数、副本所在位置…]】

  2. 核心2:编辑日志文件(EditsLog)【元数据的更改日志】
    减少NameNode内存开销:对于FsImage的写操作不需要将整个FsImage加载到内存,而是将操作记录在编辑日志中
    通过SecondaryNameNode定期更新fsImage进行同步

  • 内存文件
  1. 核心3:NameSpace【相当于内存中的FsImage】
    主要组成
    1. imageHead(快照版本、集群id等)
    2.每个文件或目录的元数据信息(文件名称、权限信息、所属组、所属用户等),如果是文件还会存在block对象信息

  2. 核心4:数据块映射信息(BlocksMap):【BlocksMap其实是一个Map
    从NameSpace的信息中可以很明显的看出,并没有记录每一个block所对应的datanodes信息,而block对应的datanode信息是在datanode启动时将本地保存的block信息汇报给nameNode,namenode在接收到datanode的汇报后,将block信息以及其所在的datanode信息等保存在内存中的BlockMap中。
    Datanode向namenode汇报信息的过程叫做blockReport,而namenode将block -> datanodes的对应信息保存在一个叫BlocksMap的数据结构中。
    这部分内容没有永久性固化,而是在内存中存有。(这部分内容需要频繁的读取)
    这个BlocksMap是NameNode功能的核心,同时这也是hdfs不擅长处理大量小文件的原因
    (因为向HDFS上传大量小文件会生成大量的blockMap从而占用大量的内存空间,导致NameNode内存溢出);

二、 SecondaryNameNode: 辅助节点。用于同步NameNode中的元数据信息,辅助NameNode对fsimage与editsLog进行合并(冷备份)

  • 当NameNode中的editsLog文件达到一定大小或创建时间达到一定时长(可以手动设置),SencondaryNameNode会把NameNode中的镜像文件与编辑日志拷贝一份到SencondaryNameNode内存中进行合并,然后在本地合并并生成一个新的镜像文件fsimage.ckpt。

  • 将fsimage.ckpt重新拷贝到NameNode中,删除NameNode中的fsimage并将fsimage.ckpt重命名为fsimage文件【会保留一个最近的镜像文件作为备份】

  • 当NameNode中的editsLog被拷贝走以后会生成一个edits.new文件用来保存checkpoint过程中的写操作。 当checkpoint执行完毕后这个文件会被重命名为editsLog文件

三、 DataNode: 存放具体数据块的节点,主要负责数据的读写,定期向NameNode发送心跳

  • 当DataNode注册到NameNode时,会将自身所有的数据块信息注册到NameNode的内存中。生成对应的BlockMap

总结: 当NameNode启动后,会将fsimage与editesLog文件加载到内存中进行合并,在内存中生成NameSpace[fsimage] 并将合并后的fsimage保存到本地磁盘然后在本地磁盘生成新的编辑日志。此时NameNode内存中的Fsimage及BlocksMap的key【block对象】都已经加载完毕,但是BlocksMap的value还并没有没加载。当dataNode启动后向NameNode汇报完毕【blockreport】,NameNode将汇报信息保存在blocksMap中后才算加载完毕。在NameNode完全启动前,整个文件系统处于安全模式,不允许更新操作,
推荐文章:
https://blog.csdn.net/lzlchangqi/article/details/14146407
https://www.cnblogs.com/laov/p/3434917.html
https://www.cnblogs.com/miner007/p/3745332.html
https://www.cnblogs.com/richard1023/p/4964864.html
http://baijiahao.baidu.com/s?id=1603326776356946640&wfr=spider&for=pc

你可能感兴趣的:(HDFS核心组件)