HDFS架构及原理

栏目: 服务器 · 发布时间: 5年前

内容简介:分布式文件存储随着数据量的不断增大,文件的大小取决于单机存储的上限,这显然满足不了我们的需求。HDFS将大文件切块,部署到不同的机器节点上,完成分布式存储。

分布式文件存储

随着数据量的不断增大,文件的大小取决于单机存储的上限,这显然满足不了我们的需求。HDFS将大文件切块,部署到不同的机器节点上,完成分布式存储。

HDFS架构及原理

在分布式系统中,计算机节点放在机架上,每个机架存在很多节点,不同机架之间通过交换机通信,同一机架不同节点之间通过网络互连。

远程调用:远程过程调用(RPC)是一种常用的分布式网络通信协议,它允许运行于 一台计算机的程序调用另一台计算机的子程序,同时将网络的通信细节隐藏起来, 使得用户无须额外地为这个交互作用编程。分布式系统之间的通信大都通过RPC实现。

二、HDFS结构

HDFS架构及原理

  • 名称节点(NameNode) 主节点(Master)
  • 数据节点 (DataNode) 从节点(Slave)

名称节点负责文件和目录的创建、删除和重命名等,同时管理数据节点与文件块的映射关系;数据节点负责数据的存储和读取。

客户端读数据会先访问名称节点,获取数据块对应数据节点的位置,进而读取数据,写入数据也会由名称节点分配存储位置,再向对应数据节点写入数据。

1. 名称节点

名称节点的两个核心数据结构:

  • FsImage

    FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据

    元数据信息包括文件的复制等级、修改和访问时间、访问权限、块大小以及组成文件的块

    注:FsImage文件没有记录块存储在哪个节点,数据块和节点映射信息保存在NameNode的内存中。

  • EditLog

    记录对所有文件创建、删除、重命名等操作。

SecondaryNameNode

HDFS架构及原理

  1. secondDaryNameNode会定期与NameNode通信,暂停EditLog,创建新的EditNew,瞬间完成 。

  2. FsImage和EditLog会不断增大,secondDaryNameNode可以解决这个问题,它会定期拉取这两个文件,进行一个合并过程,通过执行EditLog文件,得到最新的FsImage,推送到NameNode, 代替原有的FsImage,同时使用editNew代替原有EditLog文件。

  3. secondDaryNameNode 还可以作为冷备份,在NameNode宕机后使用它进行恢复

2. 数据节点

HdFS按块存储,每个块默认大小是128M,远远大于普通文件系统,这样做的目的是为了最小化寻址开销。

2.1 文件系统存储原理

文件存储在磁盘上,磁盘读取数据靠的是机械运动。

  • 当需要从磁盘读取数据时,系统会将数据逻辑地址传给磁盘,磁盘的控制电路按照寻址逻辑将逻辑地址翻译成物理地址,即确定要读的数据在哪个磁道,哪个扇区。为了读取这个扇区的数据,需要将磁头放到这个扇区上方,
  • 为了实现这一点,磁头需要移动对准相应磁道,这个过程叫做寻道,所耗费时间叫做寻道时间,然后磁盘旋转将目标扇区旋转到磁头下,这个过程耗费的时间叫做旋转时间。
  • 最后是对读取数据的传输。

所以每次读取数据花费的时间可以分为 寻道时间、旋转延迟、传输时间 三个部分

HDFS读取文件的时间就可以分为寻址时间和数据传输时间,如果文件太小,在名称节点的映射列表会过大,影响寻址时间,寻址时间如果大于传输时间,就没有意义了。所以设置成大文件。

如果Block设置过大,在MapReduce任务中,Map或者Reduce任务的个数小于集群机器数量,会使得作业运行效率很低。

2.2 数据冗余

HDFS采取多副本进行数据冗余,一个数据块默认冗余三个副本,其中一个副本放到不同机架上,其它两个副本放在同一个机架不同节点上。

HDFS架构及原理

如图,数据块1被分别存放到数据节点A和C上,数据块2被存放在数据节点A和B上


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法:python语言实现

数据结构与算法:python语言实现

迈克尔.·T·古德里奇、罗伯托·塔玛西亚、迈克尔·H·戈德瓦瑟 / 张晓、赵晓南 / 机械工业出版社 / 2018-9 / 109.00元

本书采用Python语言讨论数据结构和算法,详细讲解其设计、分析与实现过程,是一本内容全面且特色鲜明的教材。书中将面向对象视角贯穿始终,充分利用Python语言优美而简洁的特点,强调代码的健壮性和可重用性,关注各种抽象数据类型以及不同算法实现策略的权衡。一起来看看 《数据结构与算法:python语言实现》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具