HDFS的工作原理是什么呢

技术HDFS的工作原理是什么呢这期内容当中小编将会给大家带来有关HDFS的工作原理是什么呢,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Hadoop分布式文件系统(HDFS)是一种被设

本期,边肖将给大家带来关于HDFS工作原理的信息。文章内容丰富,从专业角度进行分析和描述。希望你看完这篇文章能有所收获。

Hadoop分布式文件系统(HDFS)是一个设计用于在通用硬件上运行的分布式文件系统。HDFS是一个高容错系统,适合部署在廉价机器上。它可以提供高吞吐量的数据访问,非常适合大规模数据集。要了解HDFS的内部工作原理,我们必须首先了解什么是分布式文件系统。

1、分布式文件系统

多台计算机在互联网上协同工作(有时称为集群)可以像单个系统一样解决一些问题,我们称之为分布式系统。

分布式文件系统是分布式系统的一个子集,它们解决的问题是数据存储。换句话说,它们是跨越多台计算机的存储系统。存储在分布式文件系统中的数据自动分布在不同的节点上。

分布式文件系统在大数据时代有着广阔的应用前景,为存储和处理来自网络等地的超大规模数据提供了必要的扩展能力。

2、分离元数据和数据:NameNode和DataNode

存储在文件系统中的每个文件都有关联的元数据。元数据包括文件名、信息节点号、数据块位置等。而数据是文件的实际内容。

在传统的文件系统中,由于文件系统不跨多台机器,元数据和数据存储在同一台机器上。

为了构建一个分布式文件系统,使客户端可以方便地使用它,而不需要知道其他客户端的活动,那么就需要在客户端之外维护元数据。HDFS的设计思路是拿出一台或多台机器来存储元数据,让剩下的机器来存储文件的内容。

名称节点和数据节点是HDFS的两个主要组成部分。其中,元数据存储在名称节点上,而数据存储在数据节点的集群上。名称节点不仅管理存储在HDFS的内容的元数据,还记录一些事情,例如哪些节点是集群的一部分,以及一个文件有多少副本。它还决定了当集群的节点宕机或数据拷贝丢失时,系统需要做什么。

存储在HDFS的每一份数据都有多个副本存储在不同的服务器上。本质上,名称节点是HDFS的主节点,数据节点是从节点。

3、HDFS写过程

名称节点负责管理存储在HDFS的所有文件的元数据。它将确认客户端的请求,并记录文件的名称和存储该文件的数据节点集合。它将这些信息存储在内存中的文件分配表中。

例如,客户端向名称节点发送一个请求,请求它将“zhou.log”文件写入HDFS。然后,执行流程如图1所示。具体来说:

* * *步骤:客户端向名称节点发送一条消息,表示它想要写入“zhou.log”文件。(如图1所示)

第二步:NameNode向客户端发送消息,要求客户端写DataNode A、B、D,直接联系DataNode B(见图1中)

第三步:客户端向数据节点B发送消息,要求其保存一个“周.日志”文件,并向数据节点A和数据节点d发送副本(如图1中的)

第四步:数据节点B向数据节点A发送消息,要求其保存一个“zhou.log”文件,并向数据节点d发送一个副本(如图1中的)

第五步:数据节点A向数据节点D发送消息,要求其保存一个“week.log”文件。(参见图1中的)

第六步:数据节点D向数据节点a发送确认消息(见图1)

第七步:数据节点A向数据节点b发送确认消息(如图1中的)

第八步:数据节点B向客户端发送确认消息,表示写入完成。(图1中的图6)

HDFS的工作原理是什么呢

图1 HDFS写入过程示意图

在分布式文件系统的设计中,挑战之一是如何保证数据的一致性。对于HDFS,在所有希望保存数据的数据节点确认它们拥有文件的副本之前,不会考虑写入数据。因此,数据一致性在写入阶段完成。无论客户端选择从哪个数据节点读取数据,都会得到相同的数据。

4、HDFS读过程

为了理解读取过程,文件可以被认为是由存储在数据节点上的数据块组成的。客户端查看之前写入内容的执行流程如图2所示,具体步骤如下:

* * *步骤:客户端询问名称节点应该在哪里读取文件。(图2中的图1)

第二步:名称节点将数据块的信息发送给客户端。(数据块信息包含存储文件副本的DataNode的IP地址,以及DataNode在本地硬盘中查找数据块所需的数据块ID。)(如图2所示)

第三步:客户端检查数据块信息,联系相关的数据节点,请求数据块。(图2中的图3)

p>

第四步:DataNode返回文件内容给客户端,然后关闭连接,完成读操作。(如图2中的④)

HDFS的工作原理是什么呢

图2 HDFS读过程示意图

客户端并行从不同的DataNode中获取一个文件的数据块,然后联结这些数据块,拼成完整的文件。

5、通过副本快速恢复硬件故障

当一切运行正常时,DataNode会周期性发送心跳信息给NameNode(默认是每3秒钟一次)。如果NameNode在预定的时间内没有收到 心跳信息(默认是10分钟),它会认为DataNode出问题了,把它从集群中移除,并且启动一个进程去恢复数据。DataNode可能因为多种原因脱离 集群,如硬件故障、主板故障、电源老化和网络故障等。

对于HDFS来说,丢失一个DataNode意味着丢失了存储在它的硬盘上的数据块的副本。假如在任意时间总有超过一个副本存在(默认3个),故障 将不会导致数据丢失。当一个硬盘故障时,HDFS会检测到存储在该硬盘的数据块的副本数量低于要求,然后主动创建需要的副本,以达到满副本数状态。

6、跨多个DataNode切分文件

在HDFS里,文件被切分成数据块,通常每个数据块64MB~128MB,然后每个数据块被写入文件系统。同一个文件的不同数据块不一定保存在相同的DataNode上。这样做的好处是,当对这些文件执行运算时,能够通过并行方式读取和处理文件的不同部分。

当客户端准备写文件到HDFS并询问NameNode应该把文件写到哪里时,NameNode会告诉客户端,那些可以写入数据块的 DataNode。写完一批数据块后,客户端会回到NameNode获取新的DataNode列表,把下一批数据块写到新列表中的DataNode上。

上述就是小编为大家分享的HDFS的工作原理是什么呢了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

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

(0)

相关推荐

  • thinkphp怎么开启api(thinkphp命令行怎么设置)

    技术thinkphp大d方法怎么使用这篇文章主要介绍“thinkphp大d方法怎么使用”,在日常操作中,相信很多人在thinkphp大d方法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家

    攻略 2021年12月16日
  • babyletsgo女生英文歌,奔跑吧第一季第四期插曲

    技术babyletsgo女生英文歌,奔跑吧第一季第四期插曲奔跑吧兄弟第4期插曲如下babyletsgo女生英文歌:1、angelababy叫权烈踢毽子插曲 David Campbell《ducant take my ey

    生活 2021年10月22日
  • 2021,10,18 题解报告

    技术2021,10,18 题解报告 2021,10,18 题解报告写在前面
    \(T1\) 没想出来,卒
    T1
    招待(entertain)
    题目
    solution
    对 \(W\) 进行三进制拆分,每一位是

    礼包 2021年10月19日
  • Vue正则写法是什么

    技术Vue正则写法是什么这篇文章主要讲解了“Vue正则写法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue正则写法是什么”吧!前言正则表达式,又称规则表达式。它

    攻略 2021年11月1日
  • Scala的二维布局库和抽象类怎么使用

    技术Scala的二维布局库和抽象类怎么使用本篇内容主要讲解“Scala的二维布局库和抽象类怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Scala的二维布局库和抽象类

    攻略 2021年12月9日
  • 喜怎么读,喜字下面加个心字念什么

    技术喜怎么读,喜字下面加个心字念什么憙 拼音:xǐ 部首:心,部外笔画:12,总笔画:16五笔86&98:FKUN 仓颉:GRP 笔顺编号:1212514312514544 四角号码:40336 UniCode:

    生活 2021年10月27日