Hadoop(十一)HDFS 读写数据流程

news/2024/9/19 14:09:17/文章来源:https://www.cnblogs.com/shihongpin/p/18417892

HDFS读写数据流程

一、写数据流程


1、客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在
2、NameNode返回是否可以上传
3、客户端请求第一个Block上传到哪几个DataNode服务器上
4、NameNode返回3个DataNode节点,分别为dn1、dn2、dn3
5、客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成
6、dn1、dn2、dn3逐级应答客户端
7、客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答
8、当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器(重复执行3-7步)

二、节点距离计算

  • 在HDFS写数据的过程中,NameNode会选择距离待上传数据最近距离的DataNode接收数据
  • 节点距离:两个节点到达最近的共同祖先的距离总和

三、副本存储节点选择

  • 第一个副本在Client所处的节点上,如果客户端在集群外,随机选一个;第二个副本在另一个机架的随机一个节点;第三个副本在第二个副本所在机架的随机节点

四、读数据流程


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

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

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

相关文章

产品经理的日常工作

杜工库 声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出现转载未声明 将追究法律责任~谢谢合作

Hadoop(十一)HDFS 写数据流程

HDFS写数据流程 一、写数据流程1、客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在 2、NameNode返回是否可以上传 3、客户端请求第一个Block上传到哪几个DataNode服务器上 4、NameNode返回3个DataNode节点,分别…

windows定时执行python程序

先写个 bat 脚本,执行 Python 程序 :: 根据实际情况修改 Python 解释器的路径 set PYTHON=D:\python\python.exe set CODE_DIR=D:\code\projectcd /d "%CODE_DIR%" :: 启动 Python 程序 echo Running main.py... %PYTHON% main.py > nohup.log 2>&1echo A…

Prometheus修改数据存储位置

Prometheus修改数据存储位置 Prometheus的数据存储位置可以通过配置文件中的 --storage.tsdb.path 参数来指定。默认情况下,数据存储在Prometheus安装目录下的 data 文件夹中。要修改数据存储位置,可以在Prometheus启动命令中添加或修改该参数。 步骤 1:修改 Prometheus 启动…

AIoTengine智能物联引擎

新一代数智基础设施,依托AIoT2.0技术,实现感知、认知、决策和执行的一体化融合,打造云边协同的分布式智能物联引擎,驱动行业数智化革新。

WPF打包独立运行的程序

方案一:使用Costura.Fody插件将自己写的程序打包成一个可以独立运行的EXE文件 第1步:安装Costura.Fody 首先用Visual Studio 2017打开你的解决方案,依次找到“工具”---“NuGet包管理” - “管理解决方案的NuGet程序包”,到了这一步会打开NuGet-解决方案页面,在浏览选项下面…

物联网平台推荐:ThingsKit

ThingsKit物联网平台 随着物联网技术的不断进步,企业和开发者对于一个可靠、高效且易于使用的物联网平台的需求日益增长。在这样的背景下,ThingsKit物联网平台以其卓越的性能和丰富的功能,成为了市场上的一股清流。 一、ThingsKit物联网平台概述 ThingsKit是一个功能强大、易…

面试官:单核服务器可以不加锁吗?

今天有位同学问了磊哥一个问题,大概的意思是“单核服务器可以不加锁吗?”,我觉得很有意思,所以在这里就和各位探讨一下:1. 问题答案 先说我的理解,单核服务器仍然需要加锁。因为在单核服务器上也会有线程切换,如果不加锁,那么线程切换后,另一个线程就可以访问其他线程…

[CTFshow] 文件包含 78~88,116~117

web78 if(isset($_GET[file])){$file = $_GET[file];include($file); }else{highlight_file(__FILE__); }php伪协议,data:// 数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码 ?file=data://text/plain,<?=system(ls)?> ?file=data://text/plain,<?…

如何获取并展示PDD商品的详细信息?

在数字化时代,获取并展示PDD商品的详细信息对于电商运营者来说至关重要。这不仅有助于提升用户体验,还能增强商品的转化率。以下是一些有效的方法和策略,可以帮助你获取并展示PDD商品的详细信息。利用API接口 PDD提供了丰富的API接口,允许开发者获取商品的详细信息。通过AP…

重点区域人员徘徊识别监测系统

重点区域人员徘徊识别监测系统对监控画面中重要区域进行实时检测分析。当重点区域人员徘徊识别监测系统检测到一些人徘徊停留时,SuiJi-Ai系统立即报警,并提醒相关负责人妥善处理同时将报警截图和视频保存到数据库中生成表格。SuiJi-Ai重点区域人员徘徊识别监测系统主要通过现…

章13——包装类——Math类

常用方法 均为静态1、random 默认下返回 0 到 1 的随机数(前闭后开) 2、如取 2->7 之间的随机数: int a = (int)(2 + (5+1)*Math.random()); //+1的原因:(int)会舍去小数,且 random 的取值前闭后开,如果不 +1 最大只能取到6