【HDFS】之 架构

Hadoop由三个模块组成:

  1. 分布式存储 HDFS
  2. 分布式计算 MapReduce
  3. 资源调度引擎 Yarn

HDFS 架构图:

在这里插入图片描述


一、核心概念



(1)块

为了提高磁盘读写效率,以数据块为单位,而不是以字节为单位(数据块包含若干字节)。
同时一定情况下,减少磁盘寻址开销

Hadoop 3.x版本,默认数据块大小为 128M,旧版本为 64M

所以,在HDFS 3.x版本下,上传文件,会按照 128M为单位,切分成一个个块(block),并分散的存储在集群的不同数据节点上

问题:若上传一个文件(文件大小:30M),占据的块会是 128M嘛?

不会,块大小仍是 30M


(2)名称节点(NameNode)

名称节点(NameNode):负责管理分布式文件系统的命名空间(Namespace)

名称节点记录了每个文件中各个块所在的数据节点的位置信息

保存了两个核心的数据结构:

  • FsImage:用于维护文件系统树以及文件树中所有的文件和文件夹的元数据
  • EditLog:记录了所有针对文件的创建、删除、重命名等操作

名称节点的数据结构图:

在这里插入图片描述

名称节点启动
  1. 启动开始时
    名称节点在启动的过程中处于: 安全模式

安全模式下:只能对外提供读操作,无法提供写操作

  1. 启动过程中

会将FsImage的内容加载进内存中,并执行 EditLog文件中的各项操作

这时候HDFS中的更新操作都会被写入到EditLog,而不是直接写入FsImage

操作完成之后,会创建一个新的FsImage文件和一个空的EditLog文件

名称节点起来之后,HDFS中的更新操作会重新写到EditLog文件中,因为FsImage文件一般都很大(GB级别的很常见),如果所有的更新操作都往 FsImage 文件中添加,这样会导致系统运行的十分缓慢。

  1. 启动过程结束

系统会退出安全模式,进入正常运行状态,对外提供读写操作


(3)数据节点(DataNode)

数据节点:是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表。


(4)第二名称节点(SecondaryNameNode)

问题:更新操作不断写入 EditLogEditLog不断变大,如何减少文件大小呢?

第二名称节点:用于冷备份,保存名称节点中对HDFS元数据信息,减少名称节点重启的时间

功能

  • 完成EditLogFsImage的合并操作

减少EditLog文件大小,缩短名称节点重启时间

  • 作为名称节点的 “检查点”,保存名称节点中的元数据信息

周期性地备份名称节点中的元数据信息,当名称节点发生故障时,就可以用第二名称节点中记录的元数据信息进行系统恢复。

当名称节点发生故障时,系统还是有可能会丢失部分元数据信息(即使有第二名称节点)

假设,第二名称节点执行合并操作时间为: t1 ~ t2

而这时候,名称节点刚好故障,系统就会丢失部分元数据信息

第二名称节点工作过程图,如下:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值