Hadoop -hdfs的读写请求

1、HDFS写数据(宏观):

1、首先,客户端发送一个写数据的请求,通过rpc与NN建立连接,NN会做一些简单的校验,文件是否存在,是否有空间存储数据等。

2、NN就会将校验的结果发送给客户端,客户端就会向NN发送请求,第一个block存储在哪个DN中。

3、NN接受客户端请求,就会根据block块以及副本的数量来分配DN,并将对应的DN的地址返回给客户端。

4、客户端会向第一个DN发送请求,上传数据,第一个DN接受到以后就会向下一个DN发送请求,直到最后一个DN,将整个pipline管道创建成功,在返回给客户端。

5、此时客户端会将block切分成多个package,以package的形式传递到DN中,在pipiline中依次传输,当传输到最后一个DN的时候,就会返回一个ack响应,当客户端接收到最后一个DN传输过来的ack,此时package就传输完成,然后一次传输package。

6、当第一个block传输完成以后,客户端就会请求NN上传第二个block。

7、当所有的package传输完成后,管道就会关闭,数据传输成功。

2、HDFS写数据请求(微观:保证了在传输的过程中package不会发生错误):

1、首先,客户端发送写数据的请求,将磁盘中的数据从内存中提取出来,存放在客户端的内存中。

2、当客户端与NN之间通过rpc建立联系后,获取到第一个block存在的DN的地址,然后向第一个DN中发送写数据的请求,第一个DN接收到后调用下一个DN,以此类推,在所有的DN之间建立pipline管道。

3、当pipline管道建立后,客户端此时对每一个block在进行切分,分成多个package。

4、在客户端,为了防止在传输过程package不会出错,就会产生了两个两个队列,分别是数据队列(dataqueue)和确认队列(Ackqueue)。

5、此时会将缓存中的package读取到数据队列,同时也会复制一份到确认队列中 

6、然后数据队列就会上传数据,然后通过Pipline管道分别就是package依次发送到对应的dn中

7、当客户端发送第一个package的时候,会有一个进程responseprosessor进程用来接收DN传来的ack的响应,如果接受到的ack是true,说明这个package传输成功,此时ackqueue中的package就会删除,反之ackqueue会将package复制一份给dataqueue重新发送,一直到收到的ack的状态时true。

3、HDFS的读数据请求:

1、客户端通过rpc与NN建立连接,发送读数据的请求

2、NN根据客户端的请求,NN将block以及对应副本所对应的DN的地址返回返回个客户端。

3、客户端会根据返回来的DN地址,会根据网络拓扑结构计算出与客户端的距离,然后进行排序。

4、客户端会选择距离较近的DN中去读取block,如果客户端就在DN中,就会在自生读取block,当block读取完成后,文件读取还没有结束,此时客户段会向NN继续发送读数据的请求,获取下一批的block的地址。

5、最终客户端会将这些读取的block合并成一个文件。

4、package的结构:
1、package主要分成两个部分:package  header 和package  data

一般的大小是64kb

haeder中存放的是:offset in block (在block中的偏移量),last packet in block (是不是block中的最后一个packet)

packdata中存放的是:chunk data (存储的数据),chunk checksum(校验文件,与chunkdata是一一对应的)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/206254.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023亚太杯数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法?2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法? 粒子群算法(Pa…

Microsoft Dynamics 365:Dynamics NAV 2016 Setup 安装(澳洲版)

今天与大家一起分享 CU 06 for Microsoft Dynamics NAV 2016 的 Setup 安装(澳洲版)的安装,步骤截图如下。包括下载地址、操作、安装步骤、问题解决等。 1、下载地址(微软官方) https://support.microsoft.com/en-us…

No such module ‘FacebookCore‘

在下面的地方添加这个库

SpringBoot整合Redis,redis连接池和RedisTemplate序列化

SpringBoot整合Redis 1、SpringBoot整合redis1.1 pom.xml1.2 application.yml1.3 配置类RedisConfig,实现RedisTemplate序列化1.4 代码测试 2、SpringBoot整合redis几个疑问?2.1、Redis 连接池讲解2.2、redisTemplate和stringRedisTemplate 1、SpringBoo…

python批量修改文件夹下的后缀名

python批量修改文件夹下的后缀名 (所有的.txt结尾的文件,替换成.py结尾) 1、需要将某个文件夹下所有的.txt结尾的文件,替换成.py结尾 2、Python代码: import os# 指定需要更改文件的目录 dir_path D:/study/py/4#…

系列十、ThreadLocal的使用场景

一、ThreadLocal的使用场景 (1)使用日期工具类,当用到SimpleDateFormat时,使用ThreadLocal保证线程安全; (2)全局存储用户信息(用户信息存入ThreadLocal,那么当前线程在任…

【开源】基于JAVA的开放实验室管理系统

项目编号: S 013 ,文末获取源码。 \color{red}{项目编号:S013,文末获取源码。} 项目编号:S013,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实…

人工智能和AR/VR:AI在AR和VR中扮演什么角色?行业应用有哪些?

增强现实技术和虚拟现实技术(AR/VR)发展前景广阔,备受各大企业关注。事实上,近四分之三的行业领导者表示,他们预计这些沉浸式技术将于未来五年内成为主流。高盛公司报告称,到2025年,AR/VR行业值…

Ubuntu安装PCAN-View

目录 一. Hardware 二. Software 2.1 安装驱动 2.2 安装PCAN-View QA 本文介绍如何安装linux版的PCAN-View。 PCAN-View:用来抓包分析CAN/CANFD报文。Hardware: PEAK-System Linux generic #37~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct 9 15:34:04 UTC 2…

图解系列--密钥,随机数,应用技术

密钥 1.生成密钥 1.1.用随机数生成密钥 密码学用途的伪随机数生成器必须是专门针对密码学用途而设计的。 1.2.用口令生成密钥 一般都是将口令输入单向散列函数,然后将得到的散列值作为密钥使用。 在使用口令生成密钥时,为了防止字典攻击,需要…

好题分享(2023.11.12——2023.11.18)

目录 ​ 前情回顾: 前言: 题目一:《有效括号》 思路: 总结: 题目二:《用队列实现栈》 思路: 总结: 题目三:《用栈实现队列》 思路: 总结 &#x…