HDFS读写流程详解 —— 一图在手,天下我有~

2024-03-08 04:30

本文主要是介绍HDFS读写流程详解 —— 一图在手,天下我有~,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HDFS读写流程详解

  • 一、HDFS写入文件流程
    • 1.详解图
    • 2.步骤详解
  • 二、HDFS读取文件流程
    • 1.详解图
    • 2.步骤详解

一、HDFS写入文件流程

1.详解图

HDFS写入文件流程图

2.步骤详解

1.客户端发起上传文件的请求。
2.NameNode进行校验权限,判断该客户端是否具有写入权限,如果没有直接报错,如果有则判断该文件是否已经存在,如果已存在则报错.如果没有则校验成功,通知客户端上传文件.
3.客户端对文件进行切块(切片)
4.客户端重新请求NameNode,询问第一个块上传到哪里.
5.NameNode接收到客户端请求后,根据副本机制,负载均衡,机架感知原理,以及网络拓扑图,找到存储第一个block块的DataNode列表.
以下使用node1,node2,node3为例.
6.根据收到的DataNode列表,连接就近的服务器.
7.依次和DataNode列表中其他节点连接,形成:传输管道(pipeline)
8.采用数据报包(DatagramPacket) 的方式进行传输数据,并建立:ACK确认机制(反向应答机制)
9.传输过程:
传输管道: 客户端 -> node1 -> node2 -> node3
ACK确认机制: node3 -> node2 -> node1 -> 客户端
不断传输直至第一个block块传输完毕.
10.返回第4步,获取第二个block块的上传位置,重新往下执行,直至所有的block上传完毕,写入数据任务完成.

二、HDFS读取文件流程

1.详解图

HDFS读取文件流程图

2.步骤详解

1.客户端发起读取请求.
2.NameNode进行校验,判断该客户端是否有读取权限,如果没有直接报错,如果有则判断该文件是否存在,如过不存在则报错.校验成功后会根据机架感知原理 和 网络拓扑图,返回存储该文件block块的地址.
3.客户端根据NameNode返回的DataNode列表 并行 的从这些DataNode中读取对应的块信息.
4.如果之前读取的是部分块信息,则这些块读取完成后,会重新请求NameNode从而获取剩下全部或部分block地址,然后继续读取,直至所有数据块信息读取完毕.
5.按照block块的信息,对读取的这些数据块.

这篇关于HDFS读写流程详解 —— 一图在手,天下我有~的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/786000

相关文章

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构