hdfs的读写流程分析总结

HDFS采用的是master/slaves这种主从的结构模型管理数据,这种结构模型主要由四个部分组成,分别是Client(客户端)、Namenode(名称节点)、Datanode(数据节点)和SecondaryNameNode。HDFS作为hadoop的分布式储存框架,最重要的莫过于数据流的读写过程了,下面就HDFS得数据流的读写流程做个详细的剖析。

HDFS的写流程

首先写操作的代码操作:

hdfs dfs -put ./file02 /file02
hdfs  dfs -copyFromLocal  ./file02 /file02   FSDataOutputStream fsout = fs.create(path);fsout.write(byte[])    fs.copyFromLocal(path1,path2)

具体流程详解:

如下图所示是整个写流程及原理(上传)

1.客户端向namenode发出请求上传数据;

2.namenode在接到请求之后,开始查找元数据(查找是否存在这个目录以及查询上传者是否有这个权限),查询后向客户端响应是否可以上传数据。

3.客户端接到响应之后,再开始请求上传第一块数据(数据分块是由客户端操作的),例如图中的0-128m为第一块数据。

4.namenode接到请求后,向客户端返回datanode节点信息(副本放在哪个节点上,例如放在DN1,DN2,DN3这三台机器上)。一般规则有近远远,近远近

5.客户端根据返回的副本信息向datanode请求建立传输通道,以级联的方式进行请求

6.datanode向客户端响应,若都应答成功,则传输通道建立成功。

7.开始传输数据,以packet方式传输,以chunk为单位进行校验,默认1m。

8.第一块上传成功,第二块开始从3-7步骤继续传输

9.待传输完成之后,客户端向namenode报告数据传输远程,由namenode更新元数据

在hdfs的写流程有几个核心问题:

1.传输blk1的过程中,dn3如果死了,集群会怎么处理?

不做任何处理,错误会想nn报告

2.接1,如果dn3又启动了,集群会如何处理?

dn3启动时,会向nn发送块报告,然后nn指示dn3删除blk1(因为传输数据不完整)

3.客户端建立通道时,发现dn3连接不上,会怎么办?

nn会重新分配三个节点

4.传输过程中,packet出错,会如何处理?

会重新上传,但是重传次数只有4次,超过限制则提示传输失败

5.如果bk1上传成功,blk2坏了,或者blk2上传时,dn1挂了,如何处理?

nn会将整个文件标记为无效,下次dn向nn发送块报告时,nn会通知这些块所在的节点删除

HDFS的读操作

首先读操作的代码(下载)

hdfs dfs -get /file02 ./file02    hdfs  dfs -copyToLocal  /file02 ./file02    FSDataInputStream fsis = fs.open(path);    fsis.read(byte[] a)    fs.copyToLocal(path1,path2)

具体流程详解

由图可知HDFS的读流程要比写流程简单很多,主要步骤:

1.客户端请求下载数据

2.nn检测数据是否存在,给客户端响应

3.客户端请求下载第一块数据

4.nn返回目标文件的元数据

5.客户端请求dn建立传输通道

6.dn响应

7.开始传输数据

注意点:

在读操作中在客户端和dn建立传输通道时不是采用级联方式,而是首先寻找离自己最近的副本(dn1)下载,如果数据不完整或者没有找到,就再向dn2建立传输通道,然后传输数据,依次往下,直到下载到目标文件为止。

hdfs的重要知识点,建议收藏哦

(0)

相关推荐

  • hdfs读写文件过程

    文件参考:https://www.cnblogs.com/tgzhu/p/5788634.html 以写入100M文件为例: Client将FileA按64M分块.分成两块,block1和Block2 ...

  • HDFS的知识整理

    HDFS概述 HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文 ...

  • HDFS的读写流程图

    @[TOC]( HDFS的读写流程 ) 1) hdfs的数据写入流程: 1. 客户端发送写入请求给namenode2. namenode接收到请求, 然后首先判断当前操作的用户是否具有写入的权限, 如 ...

  • 大数据开发基础之HDFS参数调优步骤分享

    大数据开发基础之HDFS参数调优步骤分享

  • Hadoop-HDFS(HDFS-HA)

    HDFS(Hadoop Distributed File System) 分布式文件系统,HDFS是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐量的数据访问,非常适合大规模数据集 ...

  • (4条消息) hdfs的基本命令行

    (4条消息) hdfs的基本命令行

  • HDFS的读写流程

    一.简介 HDFS(Hadoop Distributed File System)是GFS的开源实现. 1.优点: 能够运行在廉价机器上,硬件出错常态,需要具备高容错性 流式数据访问,而不是随机读写 ...

  • android中wifi原理及流程分析(很经典)

    在网上找的一篇好文章,分析的很详细,自己再加了些东西,图片有点大,不能完全显示,点击图像拖动鼠标直接查看图像. wifi相关的文件位置: WIFI Settings应用程序位于 packages/ap ...

  • 【银行法务谈】电子合同订立流程分析及风险防控注意事项

    2017-05-30 22:20 金融 与法 专注讨论金融法律问题. 投稿邮箱:jinrongyufa@163.com 来稿请注明是否授权原创,若附个人照片更佳. 法哥按: 近一段时间,对于电子合同的 ...

  • [Android6.0][RK3399] 双屏异显代码实现流程分析(一)【转】

    本文转载自:http://blog.csdn.net/dearsq/article/details/55049182 Platform: RK3399  OS: Android 6.0  Versio ...

  • 焦炉煤气精脱硫工艺的流程分析

    [摘要]本文分析了山东衮矿国际焦化有限公司精脱硫工艺存在的问题,提出了优化的.以钛基催化剂为加氢剂的流程及含高硫煤的流程,使脱硫的净化度由目前的0.1ppm,提高到0.01ppm. [关键词]精脱硫工 ...

  • IPFS扇区封装,文件存储流程分析,记帳规则

    IPFS扇区封装,文件存储流程分析,记帳规则

  • 什么是流程分析法?

    流程分析法是指对业务功能分析的进一步细化,这是从白盒测试中路径覆盖法借鉴过来的一种很重要的方法.在白盒测试中,路径就是指函数代码的某个分支组合,路径覆盖法需要我们构造足够的测试用例以覆盖函数的所有代码 ...

  • MySQL基础架构和执行流程分析

    MySQL执行一条插入语句或者查询语句,实际上会经过哪些流程和部件,MySQL的架构是怎么样的,本文就一起从一条查询语句的执行流程开始来揭开面纱. 如以下的执行语句: select * from te ...

  • Abstract Shell流程分析(1)

    DFX(DynamicFunction eXchange,动态功能切换,就是之前的部分可重配置)技术极大地提高了Xilinx FPGA芯片的灵活性.借助此技术,用户可以加载不同的应用,可以对已布署的系 ...