HDFS是怎么设计架构的

技术HDFS是怎么设计架构的这篇文章给大家分享的是有关HDFS是怎么设计架构的的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、Hadoop 简介Hadoop版本刚出来的时候是为了解决两个问题

这篇文章是关于HDFS如何设计建筑的。我觉得边肖很实用,就和大家分享一下作为参考。让我们跟着边肖看一看。

一、Hadoop 简介

Hadoop版本刚出来的时候,是为了解决两个问题:一个是如何存储海量数据,另一个是如何计算海量数据。Hadoop的核心设计是HDFS和Mapreduce。HDFS解决了如何存储海量数据的问题,而Mapreduce解决了如何计算海量数据的问题。HDFS的全称是:Hadoop分布式文件系统。

二、分布式文件系统

HDFS是怎么设计架构的

图中的HDFS实际上可以理解为一个分布式文件系统。如图1所示,假设每台服务器的存储空间存储10G的数据,可以看出这四台服务器是否都有自己的文件系统来存储数据。假设在数据量很小的情况下存储10G的数据是可以的,那么当数据量大于服务器的存储空间时,单个服务器是否不可能存储呢?我们能否在服务器中部署一个Hadoop,这样我们就可以构建一个集群(超级计算机)?这样就存储了4*10=40G的数据量,这样当我们面对用户时,是不是只有一台超大型计算机相当于一个分布式文件系统?

HDFS是一个主从架构,只有一个NemeNode作为主节点。从节点中有多个数据节点。

三、HDFS 架构

HDFS是怎么设计架构的

图片:假设我们这里有五个服务器,每个服务器都是用Hadoop部署的。让我们只选择一台服务器部署名称节点,其余服务器部署数据节点。

客户端上传文件时,假设文件大小为129MHDFS,默认拆分大小为128M m,此时会生成两个blkNameNode通知DataNode上传文件(这里有一定的策略),所以我们假设这些文件会分别存储在四个服务器上。为什么要分开存放?假设有一天数据节点服务器突然挂起。我们还能通过DataNode4或者2、3读取数据,防止数据丢失吗?

NameNode

管理元数据信息(文件目录树):文件与数据块、数据块与数据节点主机之间的关系。

名称节点将元数据信息加载到内存中,以便快速响应用户的操作。

DataNode

数据存储,将上传的数据划分为固定大小的文件块(blocks),从Hadoop2.73之前的64M变为后来的128M。

为了确保数据安全,默认情况下每个文件有三个副本。

SecondaryNamenode

定期从NameNode拉Edtis和fsimage文件,将这两个文件添加到内存中,然后将这两个文件添加到内存中进行合并,以生成新的fsimage并将其发送到NameNode。

四、HDFS写入数据流程

客户端将使用文件路径向名称节点发送写请求,通过RPC与名称节点建立通信。NameNode将检查目标文件并返回是否可以上传。

客户端请求第一个数据块应该传输到哪个数据节点服务器;

NameNode根据副本数量和副本放置策略分配节点,并返回DataNode节点,如a、b和c。

请求客户端A节点建立管道,A收到请求后会继续调用B,然后B调用C,整个管道建立完成后,会一步步向客户端返回消息;

接收到客户端A返回的消息后,开始向A上传第一块,该块被切割成64K数据包,在pepiline管道中连续传输,并从A复制存储到B and B到c。

当一个数据块传输完成后,客户端请求NameNode再次上传第二个数据块的存储节点,并保持来回存储。

当传输完所有块块后,客户端调用FSDataOutputSteam的close方法关闭输出流,最后调用FileSystem的complete方法通知NameNode数据写入成功。

五、HDFS读取数据流程

客户端首先用读取路径向NameNode发送读取请求,通过RPC与NameNode建立通信,NameNode检查目标文件,确定请求文件所在块的位置信息。

NameNode将根据需要返回文件中的部分或全部块列表。对于每个块,名称节点将返回包含该块副本的数据节点地址。

这些返回的DataNode地址会根据集群拓扑得到DataNode和Client之间的距离,然后按照两个规则进行排序:网络拓扑中距离客户端最近的排第一;心跳机制超级联赛上报的DN状态为STALE,较低;

客户端选择排名靠前的数据节点,并调用FSDataInputSteam的读取方法来读取块数据。如果客户端本身是数据节点,块数据将直接在本地获得。

读取一批块块后,如果文件读取尚未完成,客户端将继续从NameNode获取下一批的块列表并继续读取。

读取所有块块后,客户端调用FSDataInputStream.close()方法关闭输入流,并将所有读取的块块合并到一个完整的最终文件中。

六、HDFS缺陷

注:早期版本

单点问题

记忆限制

感谢阅读!这篇关于“HDFS如何设计建筑”的文章就分享到这里。希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/139136.html

(1)

相关推荐

  • 多校NOIP31

    技术多校NOIP31 多校NOIP31T1:考场上认为是简单题首先的思路为容斥原理,考虑钦定行或列满足条件
    用总情况数减去不合法情况数即可,考虑的是反演,问
    题如下:不合法方案数的计算公式,于是考虑二维

    礼包 2021年11月19日
  • nodejs是一门语言吗

    技术nodejs是一门语言吗这篇文章主要讲解了“nodejs是一门语言吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nodejs是一门语言吗”吧!

    攻略 2021年11月19日
  • Hadoop模式架构是怎么样的

    技术Hadoop模式架构是怎么样的这篇文章主要介绍Hadoop模式架构是怎么样的,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、Hadoop 1.0的模型: |split 0->m

    攻略 2021年11月24日
  • 相互独立,三件事相互独立与三件事两两独立

    技术相互独立,三件事相互独立与三件事两两独立一相互独立、描述范围1、两两独立:是这n个事件中任意两个事件之间,如有事件A、B、C,满足P(AC)=P(A)P(C),P(AB)=P(A)P(B),P(CB)=P(C)P(B

    生活 2021年10月27日
  • 雄伟的反义词,气势宏大雄伟的意思写词语

    技术雄伟的反义词,气势宏大雄伟的意思写词语气势磅礴雄伟的反义词、气吞山河、一泻千里、地动山摇、波澜壮阔、排山倒海、气贯长虹、浩浩荡荡、声势浩大、汹涌澎湃、千军万马、气吞虹霓。1、一泻千里【解释】:泻:水往下直注。形容江河

    生活 2021年10月26日
  • HyperLedger Fabric 2.0-release如何测试网络部署

    技术HyperLedger Fabric 2.0-release如何测试网络部署这篇文章主要介绍HyperLedger Fabric 2.0-release如何测试网络部署,文中介绍的非常详细,具有一定的参考价值,感兴趣

    攻略 2021年12月11日