- 数据块(Block) HDFS和传统的分布式文件系统一样,也采用了数据块的概念,将数据分割成固定大小的数据块进行存储,默认大小为64MB,块的大小可针对每个文件配置,由客户端任意指定,并且每个块都有属于自己的全局ID,作为一个独立的单位存储在集群服务器上。与传统分布式文件系统不同的是,如果实际数据没有达到块大小时,则并不实际占用磁盘空间。
- HDFS元数据 HDFS元数据由文件系统目录树信息、文件和数据块的对应关系和块的存放位置三个部分组成,文件系统目录树信息包括文件名、目录名及文件和目录的从属关系,文件和目录的大小,创建及最后访问时间。文件和块的对应关系记录了文件由哪些块组成。此外元数据还记录了块的存放位置,包括存放块的机器名和块ID。
- NameNode HDFS对元数据和实际数据采取分别存储的方式,元数据存储在一台指定的服务器上,称为NameNode,实际数据则存储在集群中的其他机器上的文件系统中,称为DataNode。NameNode是用来管理文件系统命名空间的组件,并且一个HDFS集群只有一台NameNode,由于元数据存储在NameNode上,当NameNode出现故障时将导致整个集群无法工作。元数据保存在NameNode的内存当中,以便快速查询,1G内存大致可以存放1000000个块对应的元数据信息。
- DataNode DataNode用来存储块的实际数据,每个块会在本地文件系统产生两个文件,一个是实际的数据文件,另一个是块的附加信息文件,其中包括数据的校验和生成时间等信息。DataNode通过心跳包(Heartbeat)与NameNode通信,当客户端读取/写入数据的时候将直接与DataNode进行通信。
- Secondary NameNode Secondary NameNode在Hadoop集群中起到至关重要的作用,首先需要明确它并不是NameNode的备份节点,它和NameNode运行在不同的主机上,它主要的工作是阶段性地合并NameNode的日志文件,控制NameNode日志文件的大小。此外,在NameNode硬盘损坏的情况下,Secondary NameNode也可用作数据恢复,但恢复的只是部分数据。
- Map 把输入的键/值对转换成一组中间结果的键/值对.
- Reduce 把Map任务产生的一组具有相同键的中间结果根据逻辑转换生成较小的最终结果。
- User to Service:NameNode或者JobTracker缺乏安全认证机制;DataNode缺乏安全授权机制;JobTracker缺乏安全授权机制。
- Service to Service安全认证:Datanode与TaskTracker缺乏安全授权机制,这使得用户可以随意启动假的DataNode和TaskTracker。
- 磁盘或者通信连接没有经过加密。
hdfs底层原理(hdfs基本原理)
大家好!今天让创意岭的小编来大家介绍下关于hdfs底层原理的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008
本文目录:
一、HDFS简介:不用HDFS我们如何存储大规模数据
大数据技术主要是要解决大规模数据的计算处理问题,但是我们要想对数据进行计算,首先要解决的其实是大规模数据的存储问题。
如果一个文件的大小超过了一张磁盘的大小,你该如何存储? 单机时代,主要的解决方案是 RAID ;分布式时代,主要解决方案是 分布式文件系统 。
其实不论是在 RAID 还是 分布式文件系统 ,大规模数据存储都需要解决几个核心问题,这些问题都是什么呢?总结一下,主要有以下三个方面。
1. 数据存储容量的问题。 既然大数据要解决的是数以 PB 计的数据计算问题,而一般的服务器磁盘容量通常 1~2TB,那么如何存储这么大规模的数据呢?
2. 数据读写速度的问题。 一般磁盘的连续读写速度为几十 MB,以这样的速度,几十 PB 的数据恐怕要读写到天荒地老。
3. 数据可靠性的问题。 磁盘大约是计算机设备中最易损坏的硬件了,通常情况一块磁盘使用寿命大概是一年,如果磁盘损坏了,数据怎么办?
RAID(独立磁盘冗余阵列)技术是将多块普通磁盘组成一个阵列,共同对外提供服务。主要是为了改善磁盘的存储容量、读写速度,增强磁盘的可用性和容错能力。目前服务器级别的计算机都支持插入多块磁盘,通过使用 RAID 技术,实现数据在多块磁盘上的并发读写和数据备份。
常用 RAID 技术有图中下面这几种,RAID0,RAID1,RAID10,RAID5, RAID6。
首先,我们先假设服务器有 N 块磁盘。
RAID 0 是数据在从内存缓冲区写入磁盘时,根据磁盘数量将数据分成 N 份,这些数据同时并发写入 N 块磁盘,使得数据整体写入速度是一块磁盘的 N 倍;读取的时候也一样,因此 RAID 0 具有极快的数据读写速度。但是 RAID 0 不做数据备份,N 块磁盘中只要有一块损坏,数据完整性就被破坏,其他磁盘的数据也都无法使用了。
RAID 1 是数据在写入磁盘时,将一份数据同时写入两块磁盘,这样任何一块磁盘损坏都不会导致数据丢失,插入一块新磁盘就可以通过复制数据的方式自动修复,具有极高的可靠性。
结合 RAID 0 和 RAID 1 两种方案构成了 RAID 10 ,它是将所有磁盘 N 平均分成两份,数据同时在两份磁盘写入,相当于 RAID 1;但是平分成两份,在每一份磁盘(也就是 N/2 块磁盘)里面,利用 RAID 0 技术并发读写,这样既提高可靠性又改善性能。不过 RAID 10 的磁盘利用率较低,有一半的磁盘用来写备份数据。
一般情况下,一台服务器上很少出现同时损坏两块磁盘的情况,在只损坏一块磁盘的情况下,如果能利用其他磁盘的数据恢复损坏磁盘的数据,这样在保证可靠性和性能的同时,磁盘利用率也得到大幅提升。
顺着这个思路, RAID 3 可以在数据写入磁盘的时候,将数据分成 N-1 份,并发写入 N-1 块磁盘,并在第 N 块磁盘记录校验数据,这样任何一块磁盘损坏(包括校验数据磁盘),都可以利用其他 N-1 块磁盘的数据修复。但是在数据修改较多的场景中,任何磁盘数据的修改,都会导致第 N 块磁盘重写校验数据。频繁写入的后果是第 N 块磁盘比其他磁盘更容易损坏,需要频繁更换,所以 RAID 3 很少在实践中使用,因此在上面图中也就没有单独列出。
相比 RAID 3, RAID 5 是使用更多的方案。RAID 5 和 RAID 3 很相似,但是校验数据不是写入第 N 块磁盘,而是螺旋式地写入所有磁盘中。这样校验数据的修改也被平均到所有磁盘上,避免 RAID 3 频繁写坏一块磁盘的情况。
如果数据需要很高的可靠性,在出现同时损坏两块磁盘的情况下,仍然需要修复数据,这时候可以使用 RAID 6。
RAID 6 和 RAID 5 类似 , 但是数据只写入 N-2 块磁盘,并螺旋式地在两块磁盘中写入校验信息(使用不同算法生成)。
从下面表格中你可以看到在相同磁盘数目(N)的情况下,各种 RAID 技术的比较。
现在我来总结一下,看看 RAID 是如何解决我一开始提出的,关于存储的三个关键问题。
1. 数据存储容量的问题。 RAID 使用了 N 块磁盘构成一个存储阵列,如果使用 RAID 5,数据就可以存储在 N-1 块磁盘上,这样将存储空间扩大了 N-1 倍。
2. 数据读写速度的问题。 RAID 根据可以使用的磁盘数量,将待写入的数据分成多片,并发同时向多块磁盘进行写入,显然写入的速度可以得到明显提高;同理,读取速度也可以得到明显提高。不过,需要注意的是,由于传统机械磁盘的访问延迟主要来自于寻址时间,数据真正进行读写的时间可能只占据整个数据访问时间的一小部分,所以数据分片后对 N 块磁盘进行并发读写操作并不能将访问速度提高 N 倍。
3. 数据可靠性的问题。 使用 RAID 10、RAID 5 或者 RAID 6 方案的时候,由于数据有冗余存储,或者存储校验信息,所以当某块磁盘损坏的时候,可以通过其他磁盘上的数据和校验数据将丢失磁盘上的数据还原。
RAID 可以看作是一种垂直伸缩,一台计算机集成更多的磁盘实现数据更大规模、更安全可靠的存储以及更快的访问速度。而 HDFS 则是水平伸缩,通过添加更多的服务器实现数据更大、更快、更安全存储与访问。
RAID 技术只是在单台服务器的多块磁盘上组成阵列,大数据需要更大规模的存储空间和更快的访问速度。将 RAID 思想原理应用到分布式服务器集群上,就形成了 Hadoop 分布式文件系统 HDFS 的架构思想。
二、四.(一)HDFS优缺点
Hadoop中HDFS优缺点
HDFS的优点:
1、处理超大文件
这里的超大文件通常是指百MB、甚至数百TB大小的文件。目前在实际应用中,HDFS已经能用来存储管理PB级的数据了。
2、流式的访问数据
HDFS的设计建立在“一次写入、多次读写”任务的基础上。这意味着一个数据集一旦由数据源生成,就会被复制分发到不同的存储节点中,然后响应各种各样的数据分析任务请求。在多数情况下,分析任务都会涉及数据集中的大部分数据,也就是说,对HDFS来说,请求读取整个数据集要比读取一条记录更加高效。
3、运行于廉价的商用机器集群上
Hadoop设计对应急需求比较低,只须运行在低廉的商用硬件集群上,而无需在昂贵的高可用性机器上。廉价的商用机也就意味着大型集群中出现节点故障情况的概率非常高。HDFS遇到了上述故障时,被设计成能够继续运行且不让用户察觉到明显的中断。
HDFS的缺点:
1、不适合低延迟数据访问
如果要处理一些用户要求时间比较短的低延迟应用请求,则HDFS不适合。HDFS是为了处理大型数据集分析任务的,主要是为达到高的数据吞吐量而设计的,这就可能要求以高延迟作为代价。
改进策略:
对于那些有低延时要求的应用程序,HBase是一个更好的选择,通过上层数据管理项目尽可能地弥补这个不足。在性能上有了很大的提升,它的口号是goes real time。使用缓存或多个master设计可以降低Clinet的数据请求压力,以减少延时。
2、无法高效存储大量的小文件
因为NameNode把文件系统的元数据放置在内存中,所有文件系统所能容纳的文件数目是由NameNode的内存大小来决定。还有一个问题就是,因为MapTask的数量是由Splits来决定的,所以用MR处理大量的小文件时,就会产生过多的MapTask,线程管理开销将会增加作业时间。当Hadoop处理很多小文件(文件大小小于HDFS中Block大小)的时候,由于FileInputFormat不会对小文件进行划分,所以每一个小文件都会被当做一个Split并分配一个Map任务,导致效率底下。
例如:一个1G的文件,会被划分成16个64MB的Split,并分配16个Map任务处理,而10000个100Kb的文件会被10000个Map任务处理。
改进策略:
要想让HDFS能处理好小文件,有不少方法。利用SequenceFile、MapFile、Har等方式归档小文件,这个方法的原理就是把小文件归档起来管理,HBase就是基于此的。
3、不支持多用户写入及任意修改文件
在HDFS的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作,目前HDFS还不支持多个用户对同一文件的写操作,以及在文件任意位置进行修改。
三、Hadoop如何处理?如何增强Hadoop 安全?
Hadoop是由Apache开源软件基金会开发的,运行于大规模普通服务器上的分布式系统基础架构,用于大规模数据的存储、计算、分析等。通过使用Hadoop平台用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。2007年雅虎发布了第一个Apache Hadoop版本0.14.1;2008年雅虎用Hadoop做到全网尺度的搜索;2009年雅虎把内部版本全部开源,于是IBM也加入Hadoop的开发阵营;2010年Facebook宣布正式运行世界最大的Hadoop集群;2011年Apache Hadoop1.0版本发布;2012年Apache Hadoop2.0版本发布。下面具体介绍一下Hadoop系统的架构。
Hadoop由许多元素构成,如下图图所示,包括HBase、Hive、Pig、Chukwa、Oozie和ZooKeeper等,但是其核心组件为HDFS和MapReduce。
HDFS是Hadoop Distributed File System系统的缩写,是一个使用JAVA语言实现的、分布式的、可扩展的文件系统,它存储 Hadoop 集群中所有存储节点上的文件,由NameNode和DataNode两部分组成。HDFS的上一层是 MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成,用来对存储在HDFS上的数据进行计算分析。下面来具体介绍HDFS和MapReduce的工作原理及应用。
HDFS
HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode是集群中的数据节点,用来存储实际的数据,并负责管理它所在节点上的数据存储。HDFS公开了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制,下面就具体来阐述HDFS系统中涉及的基本概念;
HDFS架构及工作原理
下图为HDFS对数据存储的原理图,NameNode存储了DataNode节点所存储数据的元数据,即Hdfs和MapReduce两个文件的分块信息,假设单个文件的存储份数为3,即每个数据块有三份备份,那么数据在DataNode上的存储的原则为:相同的两个数据块存储在同一机架的不同的DataNode节点上;第三个数据块存储在不同机架上的DataNode节点上。这样就解决了当某个DataNode节点出现故障的时候数据丢失的问题,保障了存储在HDFS系统上数据的可用性。
Hadoop MapReduce
MapReduce是Google公司的核心计算模型,它将运行于大规模集群上的复杂的并行计算过程高度地抽象为两个函数:Map和Reduce。MapReduce也可以看成是一种解决问题的方法,它把一个复杂的任务分解成多个任务,Map负责把任务分解成多个任务,Reduce负责把分解后多任务处理的结果汇总起来。
Hadoop中的MapReduce是一个简易的软件框架,基于它写出来的应用程序能够运行在由上千台机器组成的大型集群上,并以一种可靠容错的方式并行处理TB级别的数据集,实现了Hadoop在集群上的数据和任务的并行计算与处理。在并行计算中其他的种种复杂的问题,如分布式存储、工作调度、负载均衡、容错处理、网络通信等均由MapReduce框架负责处理,编程人员可以不用关心。用MapReduce来处理的数据集必须具备这样的特点:待处理的数据集可以分解成许多小的数据集,并且每个小的数据集都可以完全并行地进行处理。
Hadoop MapReduce实现
Hadoop MapReduce是基于HDFS的MapReduce编程框架实现的,我们把MapReduce处理的问题称为作业 (Job),并将作业分解为任务 (Task),在MapReduce执行过程中需要有两种任务。
Hadoop MapReduce的服务进程
Hadoop MapReduce有两个主要的服务进程,一个是单独运行在主节点上的JobTracker进程,另一个是运行在每个集群从节点上的TaskTracker进程。服务进程部署如下图所示。
JobTraker和NameNode运行在同一个服务器上,我们称为Hadoop集群的主节点,负责接收客户端提交的作业,并将任务分配到不同的计算节点TaskTracker上,同时监控作业的运行情况,完成作业的更新和容错处理;Tasktracker通常和DataNode装在一起,称为Hadoop集群的从节点,它调用Map和Reduce执行JobTracker指派的任务,并发送心跳消息给JobTracker,向JobTracker汇报可运行任务的数量。
Hadoop安全机制
Hadoop 一直缺乏安全机制,主要表现在以下几个方面。
为了增强Hadoop的安全机制, 从2009年起Apache专门抽出一个团队为Hadoop增加安全认证和授权机制,Apache Hadoop 1.0.0版本之后的版本添加了安全机制,但是升级到该版本后可能会导致Hadoop的一些应用不可用。
四、什么是HDFS硬盘分布式存储?
Namenode 是一个中心服务器,单一节点(简化系统的设计和实现),负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。
文件操作,NameNode 负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过NameNode,只会询问它跟哪个DataNode联系,否则NameNode会成为系统的瓶颈。
副本存放在哪些DataNode上由 NameNode来控制,根据全局情况做出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低带块消耗和读取时延
Namenode 全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。
NameNode支持对HDFS中的目录、文件和块做类似文件系统的创建、修改、删除、列表文件和目录等基本操作。 块存储管理,在整个HDFS集群中有且只有唯一一个处于active状态NameNode节点,该节点负责对这个命名空间(HDFS)进行管理。
1、Name启动的时候首先将fsimage(镜像)载入内存,并执行(replay)编辑日志editlog的的各项操作;
2、一旦在内存中建立文件系统元数据映射,则创建一个新的fsimage文件(这个过程不需SecondaryNameNode) 和一个空的editlog;
3、在安全模式下,各个datanode会向namenode发送块列表的最新情况;
4、此刻namenode运行在安全模式。即NameNode的文件系统对于客服端来说是只读的。(显示目录,显示文件内容等。写、删除、重命名都会失败);
5、NameNode开始监听RPC和HTTP请求
解释RPC:RPC(Remote Procedure Call Protocol)——远程过程通过协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议;
6、系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中;
7、在系统的正常操作期间,namenode会在内存中保留所有块信息的映射信息。
存储文件,文件被分成block存储在磁盘上,为保证数据安全,文件会有多个副本 namenode和client的指令进行存储或者检索block,并且周期性的向namenode节点报告它存了哪些文件的blo
文件切分成块(默认大小128M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)
NameNode 是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等
DataNode 在本地文件系统存储文件块数据,以及块数据的校验和。
可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。
NameNode启动流程
1、Name启动的时候首先将fsimage(镜像)载入内存,并执行(replay)编辑日志editlog的的各项操作;
2、一旦在内存中建立文件系统元数据映射,则创建一个新的fsimage文件(这个过程不需SecondaryNameNode) 和一个空的editlog;
3、在安全模式下,各个datanode会向namenode发送块列表的最新情况;
4、此刻namenode运行在安全模式。即NameNode的文件系统对于客服端来说是只读的。(显示目录,显示文件内容等。写、删除、重命名都会失败);
5、NameNode开始监听RPC和HTTP请求
解释RPC:RPC(Remote Procedure Call Protocol)——远程过程通过协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议;
6、系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中;
7、在系统的正常操作期间,namenode会在内存中保留所有块信息的映射信息。
HDFS的特点
优点:
1)处理超大文件
这里的超大文件通常是指百MB、数百TB大小的文件。目前在实际应用中,HDFS已经能用来存储管理PB级的数据了。
2)流式的访问数据
HDFS的设计建立在更多地响应"一次写入、多次读取"任务的基础上。这意味着一个数据集一旦由数据源生成,就会被复制分发到不同的存储节点中,然后响应各种各样的数据分析任务请求。在多数情况下,分析任务都会涉及数据集中的大部分数据,也就是说,对HDFS来说,请求读取整个数据集要比读取一条记录更加高效。
3)运行于廉价的商用机器集群上
Hadoop设计对硬件需求比较低,只须运行在低廉的商用硬件集群上,而无需昂贵的高可用性机器上。廉价的商用机也就意味着大型集群中出现节点故障情况的概率非常高。这就要求设计HDFS时要充分考虑数据的可靠性,安全性及高可用性。
缺点:
1)不适合低延迟数据访问
如果要处理一些用户要求时间比较短的低延迟应用请求,则HDFS不适合。HDFS是为了处理大型数据集分析任务的,主要是为达到高的数据吞吐量而设计的,这就可能要求以高延迟作为代价。
2)无法高效存储大量小文件
因为Namenode把文件系统的元数据放置在内存中,所以文件系统所能容纳的文件数目是由Namenode的内存大小来决定。一般来说,每一个文件、文件夹和Block需要占据150字节左右的空间,所以,如果你有100万个文件,每一个占据一个Block,你就至少需要300MB内存。当前来说,数百万的文件还是可行的,当扩展到数十亿时,对于当前的硬件水平来说就没法实现了。还有一个问题就是,因为Map task的数量是由splits来决定的,所以用MR处理大量的小文件时,就会产生过多的Maptask,线程管理开销将会增加作业时间。举个例子,处理10000M的文件,若每个split为1M,那就会有10000个Maptasks,会有很大的线程开销;若每个split为100M,则只有100个Maptasks,每个Maptask将会有更多的事情做,而线程的管理开销也将减小很多。
1280M 1个文件 10block*150字节 = 1500 字节 =1.5KB
1280M 12.8M 100个 100个block*150字节 = 15000字节 = 15KB
3)不支持多用户写入及任意修改文件
在HDFS的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作。目前HDFS还不支持多个用户对同一文件的写操作,以及在文件任意位置进行修改。
四、HDFS文件 读写流程
4.1 读文件流程
(1) 打开分布式文件
调用 分布式文件 DistributedFileSystem.open()方法。
(2) 从 NameNode 获得 DataNode 地址
DistributedFileSystem 使用 RPC 调用 NameNode, NameNode返回存有该副本的 DataNode 地址, DistributedFileSystem 返回一个输入流 FSDataInputStream对象, 该对象封存了输入流DFSInputStream。
(3) 连接到DataNode
调用 输入流 FSDataInputStream 的 read() 方法, 从而输入流DFSInputStream 连接 DataNodes。
(4) 读取DataNode
反复调用 read()方法, 从而将数据从 DataNode 传输到客户端。
(5) 读取另外的DataNode直到完成
到达块的末端时候, 输入流 DFSInputStream 关闭与DataNode 连接,寻找下一个 DataNode。
(6) 完成读取, 关闭连接
即调用输入流 FSDataInputStream.close() 。
4.2 写文件流程
(1) 发送创建文件请求: 调用分布式文件系统DistributedFileSystem.create()方法;
(2) NameNode中创建文件记录: 分布式文件系统DistributedFileSystem 发送 RPC 请求给namenode, namenode 检查权限后创建一条记录, 返回输出流 FSDataOutputStream, 封装了输出流 DFSOutputDtream;
(3) 客户端写入数据: 输出流 DFSOutputDtream 将数据分成一个个的数据包, 并写入内部队列。 DataStreamer 根据 DataNode 列表来要求 namenode 分配适合的新块来存储数据备份。一组DataNode 构成管线(管线的 DataNode 之间使用 Socket 流式通信)
(4) 使用管线传输数据: DataStreamer 将数据包流式传输到管线第一个DataNode, 第一个DataNode 再传到第二个DataNode ,直到完成。
(5) 确认队列: DataNode 收到数据后发送确认, 管线的DataNode所有的确认组成一个确认队列。 所有DataNode 都确认, 管线数据包删除。
(6) 关闭: 客户端对数据量调用close() 方法。 将剩余所有数据写入DataNode管线, 并联系NameNode且发送文件写入完成信息之前等待确认。
(7) NameNode确认
(8) 故障处理: 若过程中发生故障, 则先关闭管线, 把队列中所有数据包添加回去队列, 确保数据包不漏。 为另一个正常DataNode的当前数据块指定一个新的标识, 并将该标识传送给NameNode, 一遍故障DataNode在恢复后删除上面的不完整数据块. 从管线中删除故障DataNode 并把余下的数据块写入余下正常的DataNode。 NameNode发现复本两不足时, 会在另一个节点创建一个新的复本
以上就是关于hdfs底层原理相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: