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)

相关推荐

  • 提升学习速度的一些自见

    技术提升学习速度的一些自见 提升学习速度的一些自见1、简单归纳几点,自己的一些感想和整合,少不了很多错误,师傅们多多指教目标性 知道自己学习的目标
    分块性 学习硬骨头分小块的去学,解决问题拆分步骤理解思

    礼包 2021年10月27日
  • MySQL GUI有哪些工具

    技术MySQL GUI有哪些工具这篇文章主要介绍“MySQL GUI有哪些工具”,在日常操作中,相信很多人在MySQL GUI有哪些工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MyS

    攻略 2021年11月12日
  • 微信能传多大的视频,微信朋友圈能发多大的视频

    技术微信能传多大的视频,微信朋友圈能发多大的视频在iOS系统下能发400KB以内视频微信能传多大的视频,Android系统能发200到300KB之间的视频。 1.使用微信,网络不稳定,流量也受限时不太适合用户发布或者查

    生活 2021年10月20日
  • 如何打补丁PSU

    技术如何打补丁PSU这篇文章主要讲解了“如何打补丁PSU”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何打补丁PSU”吧!首先说一下下载补丁和最新opatch的方法:都

    攻略 2021年11月15日
  • q函数,数学Q

    技术q函数,数学Qlog表示对数。如果a^n = b(a>0,且a≠1),那么数n叫做以a为底b的对数,记做n=log(a)b,【a是下标】其中,a叫做“底数”,b叫做“真数”。一般地,函数y=logax(a>0,且a≠

    生活 2021年10月29日
  • python中dict用法(python里面dict的作用)

    技术怎么解析Python中的Dict这篇文章将为大家详细讲解有关怎么解析Python中的Dict,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是dict?dict全称

    攻略 2021年12月16日