浅谈HDFS的写流程

1、使用HDFS提供的客户端Client,向远程的Namenode发起RPC请求

2、Namenode会检查要创建的文件是否已经存在,创建者是否有权限进行操作,成功则会为文件创建一个记录,否则会让客户端抛出异常;

3、当客户端开始写入文件的时候,客户端会将文件切分成多个packets,并在内部以数据队列“data queue(数据队列)”的形式管理这些packets,并向Namenode申请blocks,获取用来存储replicas的合适的datanode列表,列表的大小根据Namenode中replication的设定而定;

4、开始以pipeline(管道)的形式将packet写入所有的replicas中。开发库把packet以流的方式写入第一个datanode,该datanode把该packet存储之后,再将其传递给在此pipeline中的下一个datanode,直到最后一个datanode,这种写数据的方式呈流水线的形式。

5、最后一个datanode成功存储之后会返回一个ack packet(确认队列),在pipeline里传递至客户端,在客户端的开发库内部维护着"ack queue",成功收到datanode返回的ack packet后会从"ack queue"移除相应的packet。

6、如果传输过程中,有某个datanode出现了故障,那么当前的pipeline会被关闭,出现故障的datanode会从当前的pipeline中移除,剩余的block会继续剩下的datanode中继续以pipeline的形式传输,同时Namenode会分配一个新的datanode,保持replicas设定的数量。

7、客户端完成数据的写入后,会对数据流调用close()方法,关闭数据流;

8、只要写入了dfs.replication.min的复本数(默认为1),写操作就会成功,并且这个块可以在集群中异步复制,直到达到其目标复本数(dfs.replication的默认值为3),因为namenode已经知道文件由哪些块组成,所以它在返回成功前只需要等待数据块进行最小量的复制。

客户端将数据写入HDFS的流程图

原文地址:http://blog.51cto.com/10314260/2060767

时间: 2024-10-11 21:53:07

浅谈HDFS的写流程的相关文章

浅谈HDFS的读流程

1.使用HDFS提供的客户端Client,向远程的Namenode发起RPC请求: 2.Namenode会视情况返回文件的部分或者全部block列表,对于每个block,Namenode都会返回有该block拷贝的DataNode地址: 3.客户端Client会选取离客户端最近的DataNode来读取block:如果客户端本身就是DataNode,那么将从本地直接获取数据: 4.读取完当前block的数据后,关闭当前的DataNode链接,并为读取下一个block寻找最佳的DataNode: 5

浅谈HDFS架构

1.HDFS HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上.它所具有的高容错.高可靠性.高可扩展性.高获得性.高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很多便利. 2.HDFS HDFS 源于 Google 在2003年10月份发表的GFS(Google File

Flask解读 --- 浅谈Flask基本工作流程_1

网站写了蛮长时间了,一直想具体分析分析Flask的运行机制,但是源码看得断断续续,不过最近状态不错,进度上来了点,这里先新建一个类别,专门来说说Flask和源码有关系的内容, 这篇准备粗略说一下应用Flask框架的时候,从HTTP请求开始到响应的流程 前置技能   ---   WSGI 在具体读源码之前,这里先需要说一个概念,什么是WSGI. WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,

测试浅谈(原则、简单流程)

1.测试的原则:·测试证明软件存在缺陷·不可能执行穷尽测试.·测试应尽早启动.尽早介入·缺陷存在群集现象(二八定律)·杀虫剂悖论·不同的测试活动依赖不同的测试背景·不存在缺陷的谬论 2.测试的流程·1.需求分析·2.测试计划[一般测试组长]·3.用例设计·4.执行用例(基础.基本)·5.缺陷跟踪·6.测试总结[一般测试组长] 测什么?·软件源代码·与软件源代码匹配的文档·支撑软件源代码运行的配置数据·需求阶段-----需求规格说明书·系统设计阶段-----概要设计说明书.详细设计说明书·系统测试

浅谈HTTP与其工作流程

一.什么是HTTP协议 HTTP协议(Hyper Text Transfer Protocol)翻译过来是超文本传输协议,也是一种restful风格的协议,在web开发和APP接口开发都很常用. HTTP协议是应用层协议,同样是应用层协议的还有FTP,MQTT,SMAP等,但总结来说都是基于TCP/IP之上传输,应用层的协议可以理解为根据不同的协议传输不同格式的字节. 比如以下是一个HTTP协议报文 那么在应用层的报文就是 01001000 01010100 01010100 01010000

浅谈渗透测试方法及流程

1﹑分析目标网站内容及功能 (1)  首先确定网站采用何种语言编写.或者是否有混用的情况.此处可以通过查看网站源文件,观察网站链接,捕获提交请求等方式获取. (2)  爬行网站目录,使用工具对网站目录进行爬行,可以辅助上一步让结果更加精准.将爬行结果存档,如果可以,此处应分析出网站是否使用通用程序,如果是,记录下来.进行下一步. (3)  根据上一步的爬行结果,对网站根目录或者关键目录进行暴力目录探测,如果网站为通用程序,判读是否有过二次开发,如非通用程序,在探测到的目录中寻找关键目录及文件.

浅谈自动化测试流程

浅谈AST(自动化测试)流程,欢迎大家多多指点,多提宝贵意见. AST阶段一:需求收集——分析自动化测试需求 1.举行启动会议,对SUT(被测试的系统)进行总体描述 2.SUT的要求是可测试和可自动化的 3.评估哪些测试可以自动化 4.分析当前生命周期中SUT使用的工具和复用现有的AST工具 5.对AST和测试中需要的工具进行评估,并提出建议 6.确定和讨论测试环境,包括测试环境的采购和安排,列出测试环境的概要 7.与开发相关人员一起走查一遍AST测试需求,最后达成一致意见 8.给出可以自动化的

HDFS的写数据流程以及异常写数据流程

一.HDFS的写数据流程 ①服务端启动HDFS中的NN和DN进程 ②客户端创建一个分布式文件系统客户端,由客户端向NN发送请求,请求上传文件 ③NN处理请求,检查客户端是否有权限上传,路径是否合法等 ④检查通过,NN响应客户端可以上传 ⑤客户端根据自己设置的块大小,开始上传第一个块,默认0-128M,NN根据客户端上传文件的副本数(默认为3),根据机架感知策略选取指定数量的DN节点返回 ⑥客户端根据返回的DN节点,请求建立传输通道客户端向最近(网络举例最近)的DN节点发起通道建立请求,由这个DN

浅谈hadoop中mapreduce的文件分发

最近在做数据分析的时候,需要在mapreduce中调用c语言写的接口,此时就需要把动态链接库so文件分发到hadoop的各个节点上,原来想自己来做这个分发,大概过程就是把so文件放在hdfs上面,然后做mapreduce的时候把so文件从hdfs下载到本地,但查询资料后发现hadoop有相应的组件来帮助我们完成这个操作,这个组件就是DistributedCache,分布式缓存,运用这个东西可以做到第三方文件的分发和缓存功能,下面详解: 如果我们需要在map之间共享一些数据,如果信息量不大,我们可