hdfs的读写流程

news2024/11/23 20:54:02

hdfs的写入流程

在这里插入图片描述

1.client发起文件上传请求,通过rpc与namenode建立通讯,namenode检查目标文件是否已经存在,父目录是否存在,返回是否可以上传

2.client请求第一个block该传输到哪些datanode服务器上

3.namenode根据配置文件中指定的备份数量及副本放置策略进行文件分配,返回可用DataNode地址,如:a,b,c

4.client请求3台DataNode中的一台A上传数据(本质是一个rpc调用,建立pipeline),A收到请求会继续调动B,然后B调用C,将整个pipeline建立完成,后主机返回client

5.client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet会放入一个应答队列等待应答

6.数据被分割成一个个packet数据包在pipeline上一次传输,在pipeline反方向上,逐个发送ack(ack应答机制),最终由皮盆里呢中第一个DataNode节点A将pipeline ack发送给client;

7.当一个block传输完成之后,client在此请求namenode上传到第二个blocked到服务器

hdfs的读取流程

在这里插入图片描述

1.client向namenode发起rpc请求,来确定请求文件block所在的位置

2.namenode会视情况返回文件的部分或者全部block列表,对于每个block,namenode都会返回含有该block副本的datanode地址

3.这些返回的DataNode地址,会按照集群拓扑机构得出DataNode与客户端的距离,然后进行排序,排序两个规则,网络拓扑结构中距离client近的排靠前;心跳机制中超时汇报的DataNode状态为stale,这样的排靠后

4.client选取排序靠前的datanode来读取block,如果客户端本身就是DataNode,那么将从本地直接获取数据;底层上本质是建立socket stream(FSDataInputStream),重复的调用父类datainputstream的read方法,知道这个快上的数据读取完毕

5.当读完列表的block后,若文件读取还没有结束,客户端会继续想那么node获取下一批的block列表

6.读取完一个block都会进行checksum验证,如果读取DataNode时出现错误,客户端会同志namenode,然后再从下一个拥有block副本的datanode继续读

7.read方法是并行的读取block信息,不是一块一块的读取;namenode只是返回client请求包含块的DataNode地址,并不是返回请求快的数据

8.最终读取来所有的block会合并成一个完整的最终文件

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

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

相关文章

支付宝支付上线准备工作(商家自研接入)

商家自研流程 1.创建应用 登录支付宝开放平台创建 网页/移动应用 说明:生成的应用唯一标识 APPID 可用于调用开放产品接口。 2.配置应用 2.1 应用详情 2.2 产品绑定 2.3 开发设置 在开发 > 开发设置 中配置应用信息。 2.3.1 接口加密方式 按操作步骤进行…

Mysql——》InnoDB行格式

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

微服务保护---挑战(雪崩问题/流量控制/隔离和降级)

目录 1.雪崩问题 1.1.解决雪崩问题的常见方式有四种 2.什么是Sentinel 2.1.安装Sentinel控制台 2.2.微服务整合Sentinel 3.流量控制 3.1.簇点链路 3.2.快速入门 3.2.1.示例 3.2.2.利用jmeter测试 3.3.流控模式 3.3.1.关联模式 3.3.2.链路模式 3.3.3.总结 3.4.流控…

数字原生时代,奥哲如何让企业都成为“原住民”?

22年前,美国教育学家马克‧普伦斯基(Marc Prensky)出版了《数字原生与数字移民》(Digital Natives, Digital Immigrants)一书,首次提出了“数字原住民”和“数字移民”两大概念,用来定义跨时代的…

ylb-项目简介

1、各模块服务功能 注&#xff1a;其部分实体类、接口、mapper文件由MyBatis逆向工程生成。 2、Maven管理&#xff08;多模块&#xff0c;继承和聚合&#xff09; 2.1 parent模块 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"…

Unity根据目标点的位置计算Input输入

当给一个目标点&#xff0c;如果目标直接去目标点我们可以直接让position指向目标点的position。 如果是转换输入呢&#xff1f; 举例&#xff1a;例如一个人物动画里有两个参数X和Y&#xff0c;X&#xff08;- 1 &#xff0c;1) 表示向左走和向右走&#xff0c;Y (-1 , 1) 向…

vue条件渲染复习

 在某些情况下&#xff0c;我们需要根据当前的条件决定某些元素或组件是否渲染&#xff0c;这个时候我们就需要进行条件判断了。  Vue 提供了下面的指令来进行条件判断&#xff1a;  v-if  v-else  v-else-if  v-show 1.示例 <html lang"en"> &l…

onnx如何改变输入的维度

最近遇到一个难题&#xff0c;就算在用行为识别onnx转rknn的时候提示维度不对&#xff0c;因为行为识别模型是5维的。而rknn只支持4维。

650亿参数,训练飙升38%!LLaMA基础大模型复刻最佳实践开源,GitHub已获30k星

开源LLaMA神话再次复现&#xff01;首个开源650亿参数大模型高性能预训练方案&#xff0c;训练加速38%&#xff0c;低成本打造量身大模型。 「百模大战」正风起云涌&#xff0c;AIGC相关企业融资和并购金额也屡创新高&#xff0c;全球科技企业争相入局。 然而&#xff0c;AI大…

关于allure和pycharm的运行模式

案例 新建一个项目allure_mode 新建一个python代码test_allure_001.py 代码如下 import pytest, os def test_001(): assert 1 1 if __name__ __main__: pytest.main([-sv, __file__, --alluredir, ./html, --clean-alluredir]) os.system(fallure se…

试玩python的web框架 flask、fastapi、tornado、django

文章目录 一、Flask入门案例 [官网](https://flask.net.cn/quickstart.html) [其它参考](https://zhuanlan.zhihu.com/p/104273184?utm_id0)二、FastAPI入门案例 [官网](https://fastapi.tiangolo.com/zh/) [w3cschool教程](https://www.w3cschool.cn/fastapi/fastapi-feature…

数据容器入门(dict 字典)

字典的定义&#xff1a; 字典的定义&#xff0c;同样使用{}&#xff0c;不过存储的元素是一个个的&#xff1a;键值对&#xff0c;如下语法&#xff1a; # 定义字典字面量 {key&#xff1a;value, key&#xff1a;value, ........., key&#xff1a;value}# 定义字典变量 my_di…

JVM面试题总结

一.请简述对象的创建过程 对象的new字节码执行指令如下图 首先0指令new出一片内存空间&#xff0c;然后进行对象的初始化&#xff0c;初始化完成前变量都是初始值如m0 然后创建连接&#xff0c;t指向对象。 二.DCL单例要不要加volatile&#xff1f; DCL单例就是要懒汉式从创建…

广州市番禺区委领导一行莅临和鲸科技考察交流

7月18日下午&#xff0c;广州市番禺区区委常委、组织部部长、人才工作局局长唐力明&#xff0c;组织部副部长、两新工委书记罗翌洁及组织部其他相关领导一行莅临和鲸科技开展实地考察与调研&#xff0c;国投科创广州基地负责人、海创人才南方创业服务中心常务副秘书长徐斌&…

中小企业部署MES管理系统需要考虑哪些问题

随着制造业的快速发展&#xff0c;越来越多的中小企业开始意识到数字化管理的重要性。为了提高生产效率、降低成本、提升品质及满足客户需求&#xff0c;部署MES生产管理系统成为了中小企业实现数字化转型的关键一步。然而&#xff0c;在部署MES管理系统时&#xff0c;中小企业…

公开讲座笔记 | 雷达学报 雷达系统微课 - 第三讲 相控阵雷达 与 “1+1=2“

原文链接&#xff1a;https://mp.weixin.qq.com/s?__bizMzg4MjgxMjgyMg&mid2247486366&idx2&sn242bd062b6bcd1d32acba16a148f58c9&chksmcf51b967f8263071d912a178881c7ff3c4143b78201c30723a8c121cc53f47ade584a918648c#rd 第三讲 相控阵雷达 与 “112” 主讲…

JavaScript数组所有方法集合

##方法 1、concat 用于合并两个或多个数组。此方法不会更改现有数组&#xff0c;而是返回一个新数组 2、copyWithin 浅复制数组的一部分到同一数组中的另一个位置&#xff0c;并返回它&#xff0c;不会改变原数组的长度 3、entries 返回一个新的 Array Iterator 对象&#xf…

最新版本的OpenLens,有两个隐藏技能

最新版本的OpenLens v6.4.15&#xff0c;有两个隐藏技能 1、需要添加扩展插件alebcay/openlens-node-pod-menu&#xff0c;查看pod时才会出现进入命令行的按钮 2、测试环境查看pod、node时可能会出现监控数据未显示&#xff0c;点击集群的Setting&#xff0c;在Metrics里选…

网页性能优化,各种指标检测,谷歌统计使用,pagespeed

每日鸡汤&#xff1a;每个你想要学习的瞬间都是未来的你像自己求救 前端性能优化是个很重要的模块&#xff0c;但是如何查看性能优化后的网页的效果也是很重要的&#xff0c;要从技术的层面总结&#xff0c;不能只靠用户的感受。 常用的评估网页应用性能的指标有 LCP, FID, CL…

TortoiseGit 入门指南13:拣选

对于多分支的代码库&#xff0c;将代码从一个分支转移到另一个分支是常见需求。 这时分两种情况。一种情况是&#xff0c;你需要另一个分支的所有代码变动&#xff0c;那么就采用 合并&#xff08;merge&#xff09;。另一种情况是&#xff0c;你只需要部分代码变动&#xff0…