HDFS 读写数据流程

优质博文:IT-BLOG-CN

一、HDFS 写数据流程

HDFS 文件写入流程图如下:三个模块(客户端、NameNode、DataNode)
点击并拖拽以移动​

【1】校验: 客户端通过 DistributedFileSystem 模块向 NameNode 请求上传文件,NameNode 会检查目标文件是否已经存在,父目录是否存在。
【2】响应: NameNode 返回是否可以上传的信号。
【3】请求 NameNode: 客户端对上传的数据根据块进行切片,并请求第一块 Block 上传到哪几个 DataNode 服务器上。
【4】响应 DataNode节点信息: NameNode 根据副本数等信息返回可上传的DataNode节点,例如这里的 dn1,dn2,dn3。
【5】建立通道: 客户端通过 FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。
【6】DataNode 响应 Client: dn1、dn2、dn3逐级应答客户端。
【7】上传数据到DataNode: 客户端开始往 dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以 Packet为单位,dn1收到一个 Packet就会传给 dn2,dn2传给 dn3;dn1每传一个 packet会放入一个应答队列等待应答。
【8】通知 NameNode上传完成: 当一个 Block传输完成之后,客户端再次请求 NameNode上传第二个 Block的服务器。
【9】关闭输入输出流。

二、网络拓扑-节点距离计算

在 HDFS写数据的过程中,NameNode会选择距离最近的 DataNode接收数据。那么这个最近距离怎么计算呢?

节点距离: 两个节点到达最近的共同祖先的距离总和。
在这里插入图片描述

例如,假设有数据中心d1 机架r1 中的节点 n1。该节点可以表示为/d1/r1/n1。利用这种标记,这里给出四种距离描述,如上图所示:大家算一算每两个节点之间的距离:每一个线表示1,例如 11 到 4距离为3。so easy
在这里插入图片描述

三、机架感知
【官方说明】:【链接】

对于常见情况,当复制因子为3时,HDFS的放置策略是将一个副本放在本地机架中的一个节点上,另一个放在本地机架中的另一个节点上,最后一个放在不同机架中的另一个节点上。

【1】第一个副本在 Client所处的节点上。如果客户端在集群外,随机选一个。
【2】第二个副本和第一个副本位于相同机架,随机节点。
【3】第三个副本位于不同机架,随机节点。
在这里插入图片描述

四、HDFS 读数据流程

HDFS的读数据流程,如下图所示:
在这里插入图片描述

【1】客户端通过 Distributed FileSystem向 NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址进行返回。
【2】挑选一台 DataNode(就近原则,然后随机)服务器,请求读取数据。当第一次读取完成之后,才进行第二次块的读取。
【3】DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以 Packet为单位来做校验)。
【4】客户端以 Packet为单位接收,先在本地缓存,然后写入目标文件。

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

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

相关文章

视频点播系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,客服聊天管理,基础数据管理,论坛管理,公告管理 前台账户功能包括:系统首页,个人中心,论坛,视…

6.8 c语言

6.2 格式输出函数 格式控制符&#xff0c;输出表(输出对象) %e:指数形式浮点小数 m :输出数据域宽&#xff0c;数据长度<m,左补空格&#xff1b;否则按实际输出 .n:对字符串&#xff0c;指定实际输出位数 #include <stdio.h> int main() {char a[] "hello,wor…

【代码随想录训练营】【Day 45】【动态规划-5】| Leetcode 1049, 494, 474

【代码随想录训练营】【Day 45】【动态规划-5】| Leetcode 1049, 494, 474 需强化知识点 题目 1049. 最后一块石头的重量 II 代码随想录思路&#xff1a;尽量让石头分成重量相同的两堆&#xff0c;相撞之后剩下的石头最小&#xff0c;这样就化解成01背包问题了为什么两两单…

pdf压缩到指定大小的简单方法

压缩PDF文件是许多人在日常工作和学习中经常需要面对的问题。PDF文件因其跨平台、易阅读的特性而广受欢迎&#xff0c;但有时候文件体积过大&#xff0c;会给传输和存储带来不便。因此&#xff0c;学会如何有效地压缩PDF文件&#xff0c;就显得尤为重要。本文将详细介绍几种常见…

课时151:项目发布_基础知识_技术要点

1.1.3 技术要点 学习目标 这一节&#xff0c;我们从 解压缩、传输、备份、小结 三个方面来学习 解压缩 简介 文件的压缩压缩格式&#xff1a;tar zcvf 压缩后的文件名 将要压缩的文件 文件的解压解压格式&#xff1a;tar xf 压缩后的文件名 查看压缩文件内容查看格式&…

Linux跨发行版软件包管理工具:AppImage、Snap和Flatpak

Linux跨发行版软件包管理工具&#xff1a;AppImage、Snap和Flatpak Linux操作系统以其灵活性和强大的社区支持而闻名。随着Linux在各个领域的应用日益广泛&#xff0c;跨发行版的软件包管理工具应运而生&#xff0c;它们提供了一种简便的方法来安装、运行和管理应用程序&#…

liteflow使用注意事项

背景 最近项目使用到了liteflow这个组件的编排框架&#xff0c;官方地址为https://liteflow.cc/pages/fd5984/#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95&#xff0c;简单的使用场景我就不介绍了。本文只是记录下使用过程中的一些注意事项 liteflow使用注意事项 1.liteflow不同…

视频、图片、音频资源抓取(支持视频号),免安装,可批量,双端可用!

今天分享一款比较好用资源嗅探软件&#xff0c;这个嗅探工具可以下载视频号&#xff0c;界面干净&#xff0c;可以内容预览和批量下载&#xff0c;看到这里你是不是想用它爬很多不得了的东西。这款软件无需安装&#xff0c;打开即用。同时他支持windows系统和Mac系统,是一款不可…

跃入AI新纪元:亚马逊云科技LLM全景培训,解锁AI构建者之路

亲爱的技术爱好者们&#xff0c;你是否也对大语言模型&#xff08;LLM&#xff09;的神奇魅力所吸引&#xff0c;渴望深入探索其背后的技术奥秘&#xff1f;今天&#xff0c;我要为大家推荐一份超级硬核的学习资源——亚马逊云科技 对话AI 构建者&#xff1a;从基础到应用的LLM…

【Vue】图形验证码功能

说明&#xff1a; 图形验证码&#xff0c;本质就是一个请求回来的图片用户将来输入图形验证码&#xff0c;用于强制人机交互&#xff0c;可以抵御机器自动化攻击 (例如&#xff1a;避免批量请求获取短信) 需求&#xff1a; 动态将请求回来的 base64 图片&#xff0c;解析渲染…

1、深度学习-安装

开放环境安装 sudo apt install build-essential 环境安装 conda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh conda init 重新连接shell 组件安装 pip install jupyter d2l torch torchvision 代码 git clone https://github.com/d2l-ai…

stm32MP135裸机编程:启动流程分析

0 参考资料 轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf STM32MP135AD数据手册.pdf1 stm32MP135裸机启动流程分析 1.1 启动方式 stm32MP135支持8种启动方式&#xff1a; 注&#xff1a; UART和USB启动并不是指通过UART/USB加载程序&#xff0c;而是通过UA…

【文末附gpt升级秘笈】AI热潮降温与AGI场景普及的局限性

AI热潮降温与AGI场景普及的局限性 摘要&#xff1a; 随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;AI热一度席卷全球&#xff0c;引发了广泛的关注和讨论。然而&#xff0c;近期一些学者和行业专家对AI的发展前景提出了质疑&#xff0c;认为AI热潮将逐渐…

1.VMware软件的安装与虚拟机的创建

1. VMware软件的安装 1.1 为什么需要虚拟机 嵌入式Linux开发需要在Linux系统下运行&#xff0c;我们选择Ubuntu。   1、双系统安装     有问题&#xff0c;一次只能使用一个系统。Ubuntu基本只做编译用。双系统安装不能同时运行Windows和Linux。   2、虚拟机软件   …

Qt设置进程环境变量

目的 最近遇上了设置环境变量的问题,看似是小问题,想解决好,实在是一件不容易的事。 看看当时,我遇到这些问题的无奈: 首先说,是在windows进行环境变量的设置,如果在Linux那肯定是简单了。 一般来说,首先是设置系统的环境变量,这条路,是一条复杂的路,首先得写一个…

时间处理基础:Rust 的 chrono 库教程

在开发过程中&#xff0c;我们经常有对时间和日期处理的需求。不论是日历应用、日程安排、还是时间戳记录&#xff0c;准确的时间数据处理都是必不可少的。Rust 社区提供的 chrono 库以其强大的功能和灵活的接口&#xff0c;在 Rust 开发者中广受欢迎。本文将简单介绍 chrono 库…

C++ | Leetcode C++题解之第143题重排链表

题目&#xff1a; 题解&#xff1a; class Solution { public:void reorderList(ListNode* head) {if (head nullptr) {return;}ListNode* mid middleNode(head);ListNode* l1 head;ListNode* l2 mid->next;mid->next nullptr;l2 reverseList(l2);mergeList(l1, l…

腾讯云大数据ES Serverless

Elasticsearch&#xff1a;日志和搜索场景首选解决方案。 技术特点&#xff1a;分布式、全文搜索和数据分析引擎&#xff0c;可以对海量数据进行准实时地存储、搜索和统计分析。 ES的技术栈一共包含四个组件&#xff1a; 其中最核心的是Elasticsearch&#xff0c;可用于数据…

Django学习(2)项目实战

1、环境及简介 前端开发&#xff1a;HTML、CSS、JavaScript 后端开发&#xff1a;Java、PHP、Python、GO 数据库&#xff1a;MySQL、MSSQL、Oracle、Redis 安装Django pip install Django 或 下载.whl后 pip install D&#xff1a;\xxx.whl 创建Django项目 File--New Projec…

stm32MP135裸机编程:修改官方GPIO例程在DDR中点亮第一颗LED灯

0 参考资料 轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf 正点原子stm32mp135开发板&原理图 STM32Cube_FW_MP13_V1.1.0 STM32CubeIDE v1.151 需要修改那些地方 1.1 修改LED引脚 本例使用开发板的PI3引脚链接的LED作为我们点亮的第一颗LED灯&#xff0c;…