HDFS----【文件的上传即下载流程详解】

HDFS上传文件的过程 hdfs上传文件的过程 阅读详情

HDFS上传文件流程

文件上传流程图如下 :

在这里插入图片描述
首先 , HDFS选用的是每启动一个线程 , 就传递一个块 , 然后接收到第一个块后的机器复制给其他机器 .

首先我们知道namenode的职责 :

  1. 管理整个文件系统的元数据 ( 目录树 文件和块对应信息 , dn信息)
  2. 响应整个客户端的所有请求 hdfs://node-1:9000

上传文件的流程

  1. 首先hdfs客户端通过RPC调用向nn发送请求上传文件1.txt
  2. 元数据根据请求信息查询元数据 , 判断是否可以上传
  3. 返回可以请求上传 , 响应给客户端
  4. 将数据的块(blk-1)[采用3副本]上传到元数据中
  5. 根据请求 , 并且结合dn信息返回3台可以用的dn的ip(dn1,dn2,dn3)
  6. nn返回上传副本的信息给客户端
  7. 客户端和dn1建立传输数据的管道(pipeline) , 与此同时 , dn1与dn2之间也建立传输数据的管道 , 直到最后一个为止
  8. 依次返回pipeline建立完毕信息 , 直到响应给客户端
  9. 传输数据包(packet) , 默认大小为64K , dn*把接收到的packet保存到指定的目录中 , 并且把packet继续往后发 , 直到最后一个
  10. 发送完毕后反方向追个返回ack应答 , 保证packet的安全稳定 , 直到返回给客户端
  11. 待第一块上传完毕 , 客户端按照上述流程走一遍 , 上传第二个块 , 从第4步开始 , 重新发起请求 , 寻找可用的dn位置
  12. 待所有块上传完毕 , 客户端把信息告知namenode , nn把信息同步到文件系统的元数据中

Q : 何为真正的上传文件成功 , 如果上传中pipeline断开 , 怎么办?

​ 如果是客户端和dn之间断开 , 重新上传 ; 如果是dn之间断开 , hadoop认为只要有一个副本成功 , 那么此次上传就算成功 , 剩下不足的副本待上传完成由nn指定其他dn进行副本的复制工作 , 使得最终的副本数==设定的副本数

3副本策略

在这里插入图片描述

第一个副本 , 如果客户端所在的机器恰巧有datanode , 且datanode状态良好 , 磁盘未满 , 就将第一个副本放在此机器 ; 如果不满足 , 那么就找离客户端最近的一台机器作为第一个副本所在地 . 如果出现多个相同距离的 , 随机找即可.

tips: 这里所谓的近 : 不是空间距离上的远近 , 而是网络拓扑图中的远近 , 网络拓扑图中以经过的交换机个数作为距离

第二个副本 : 不同于第一个副本所在的机架的其他机架上随机找一个可用的

第三个副本 : 跟第二个同一个机架上的不同机器即可

如果副本数不是3, 假设副本数是2 , 副本数是5 甚至没有机架 , 第一个副本还是上述策略 , 其他的副本随机存储

理想的3副本策略图

在这里插入图片描述

HDFS下载文件流程

  1. Client向namenode发起RPC请求 , 确定请求文件block所在的位置
  2. nn的元数据会对请求进行判断 , 根据情况返回文件的部分或者全部blk列表 , 且每个blk , nn都会返回含有该blk副本的datanode地址
  3. 返回的dn地址 , 会按照集群拓扑结构得出dn与客户端的距离并进行排序 , 排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排靠后
  4. Client选取排序靠前的dn来读取blk , 若客户端本身就是dn , 那么直接从本地直接获取数据
  5. 底层上本质是建立Socket Stream(FSDataInputStream) , 重复的调用父类DataInputStream的read方法 , 知道这个块上的数据读取完毕
  6. 当读取完列表的blk之后 , 若文件读取还没有结束 , 客户端会继续向nn获取下一批的blk列表
  7. 读取完一个blk都会进行checksum验证 , 如果读取dn时出现错误 , 客户端会通知nn , 然后再从下一个拥有blk副本的dn继续读
  8. read方法是并行的读取blk信息 , 不是一块一块的读取 , nn只返回Client请求包含块的dn地址 , 并不返回数据
  9. 最终读取来所有的blk合并成一个完整的文件.

完整的文件下载流程图如下 :

在这里插入图片描述

HDFS读写数据流程 阅读详情

相关推荐

hdfs上传和下载文件的流程

一、上传文件 1、客户端上传文件 客户端向namenode发送数据上传的请求(包含数据的长度信息) hadoop fd -put / / (以上传200M文件为例) 2.namenode检查工作 namenode收到客户端请求之后会进行一系列的检查工作 查重处理,如果重复则报错 验证上传文件的目标目录是否存在,不存在报错 检查权限 ... 3.返回检查信息到客户端 第二部...

qq_39047789的博客 2005

java实现大文件的分片上传与下载(springboot+vue3)

浏览器前端的请求的分片数据,会暂时保存在“C:\Users\用户名\AppData\Local\Microsoft\Edge\User Data\Default\blob_storage\”中,(请确保c盘有足够的空间),当所有分片下载完成,会合并成一个大文件(很快),分片不是放在内存中,所以不用担心文件太大是不是不行。系统用例图如图3所示,用户可以上传文件,在文件上传过程中可以查看文件的上传进度和速度,也可以暂停或开始上传;文件下载页面如图16所示,左边是可以下载文件的列表,右边是下载中的文件。

weixin_45525177的博客 1856

Hadoop基础操作-上传文件到HDFS目录

HDFS 是Hadoop的核心组件之一,负责文件数据的存储。本节的任务首先是了解 HDFS,以及HDFS与其他文件系统之间的关系;其次介绍HDFS的基本操作并将存储在 Linux 本地的日志文件email_log.txt上传至HDFS的/user/root/目录下。

csy20230322065的博客 3608

hadoop中各个节点的功能及HDFS文件上传流程图

Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元(块),并把这些单元放到任何集群节点上执行。在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出得、运行于各个计算节点的工作单元称为“任务(task)”。此外,Hadoop提供的分布式文件系统(HDFS)主要负责各个节点的数据存储,并实现了高吞吐率的数据读写。   在分布式存储和分布式计算方面,Hadoo...

建建的博客 2298

Vivado SDK中LWIP库版本冲突与RTL8211FDI兼容性实战解析

本文深入解析Vivado 2019.1 SDK中LWIP 1.0库与RTL8211FDI千兆PHY芯片的版本冲突问题,并提供实战解决方案。通过手动移植高版本LWIP库、整合第三方驱动及优化BSP配置,有效解决了以太网通信兼容性问题,确保千兆性能稳定运行。

ios99的博客 273

未来智能家居解决方案:AI应用架构师的前沿探索

当你加班到深夜回家时,门锁自动识别你的脚步声解锁,玄关灯渐亮成你最爱的暖光,空调早已调到25℃(你夏天的习惯温度),音箱播放着最近循环的爵士乐,茶几上的智能水壶烧好了温水——这不是科幻电影,而是未来智能家居的日常。如何让“冰冷的设备”变成“懂你的伙伴”。我们将深入探讨五大前沿技术(边缘AI、多模态融合、联邦学习、数字孪生、个性化推荐)的底层原理,用“家里的小管家”“邻居互相学习”等生活化比喻简化复杂概念,结合代码示例与架构图还原实现流程,并通过智能卧室、智能厨房等真实案例展示落地路径。

AI天才研究院 1410

六、文件上传流程

FastDFS是没有文件访问功能的,需要借助其他工具实现图片HTTP访问的。Nginx就具备代理虚拟机主机功能。Nginx (engine x) 是一个高性能的HTTP和反向代理服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:在连接高并发的情况下,Nginx是Apache。

booker009的博客 1028

VS2022离线环境下的NuGet包管理:从本地源到依赖项全解析

本文详细解析了在VS2022离线环境下如何高效管理NuGet包,包括搭建本地NuGet源的两种方案(本地文件夹源和私有NuGet服务器)、获取离线包的三大渠道以及依赖项处理的实战技巧。通过自动化脚本和依赖树分析工具,帮助开发者解决离线环境中的依赖项黑洞问题,提升开发效率。

5f4d3s2a1q的博客 1060

Hadoop_HDFS笔记2(HDFS的API操作,HDFS的读写流程(面试重点))

7)客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;参数优先级排序:(1)客户端代码中设置的值 >(2)ClassPath下的用户自定义配置文件 >(3)然后是服务器的自定义配置(xxx-site.xml) >(4)服务器的默认配置(xxx-default.xml)客户端去操作HDFS时,是有一个用户身份的。(2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。...

weixin_60440795的博客 793

量化策略分享之ST股弱转强,回测年化123%

本策略的核心是精选ST股票,国九条过滤,防止直接暴雷退市,只做ST股票的弱转强,弱转强的认定标准是前日涨停但昨日不涨停,昨日收盘价大于前一日最低价,昨日收盘价大于10日线,昨日成交量大于前一日的成交量但小于前一日成交量的10倍,股价大于1;这类股票强势,有资金介入,能获得超额收益。

qq_29301281的博客 1268

具身智能数据采集的工程化指南:从时间同步到质量校验

具身智能的模型训练离不开高质量的多模态轨迹数据,而数据采集并非简单的传感器记录。真实场景中,相机图像、机械臂关节状态与力觉信息必须在时间轴上精确对齐,标定的漂移和格式混乱会让看似正常的数据无法用于训练。时间同步与标定一致性,是决定数据质量的核心技术环节。在机器人抓取、操作等工程应用中,一套包含多传感器同步、轻量记录脚本、自动化质量校验与版本管理的数据采集流程,能大幅降低数据生产的失败率。本文从工程视角拆解具身数据采集中的典型问题,并给出可落地的流程设计与校验方法,帮助团队构建可持续迭代的高质量数据集。

weixin_30603633的博客 511

hadoop——hdfs上传和下载文件的流程

转载:https://blog.youkuaiyun.com/qq_39047789/article/details/103939594 一、上传文件 1、客户端上传文件 客户端向namenode发送数据上传的请求(包含数据的长度信息) hadoop fd -put / / (以上传200M文件为例) 2.namenode检查工作 namenode收到客户端请求之后会进行一系列的检查工作 查重处理,如果重复则报错 验证上传文件的目标目录是否存在,不存在报错 检查权限 ... 3.返回检查信息到...

道语星航 1999

STM32F4使用CUBEMX ADC定时采样+DMA

STM32、FFT、ADC、TIM

m0_62379750的博客 4222

HDFS 读写文件流程

写文件流程 1.客户端会根据RPC协议,向namenode发出请求上传文件的要求。 2.namenode根据请求检查元数据,判断客户端是否具有上传的权限。 3.如果有权限,向客户端发送可以上传的命令。 4.客户端会将想要上传的文件按照HDFS的block大小进行切割。再次向namenode发送请求上传block-1 3个副本(HDFS副本存储策略设定的数量)的指令。 5.namenode会根据datanode汇报的信息(健康状况(心跳机制)、磁盘使用情况(块汇报机制))找出3台可用的位置。 6.

haidengfashi的博客 361

MDF和DHF、DMR、DHR三者差异?注册与备案文件?医疗器械产品技术要求编写指导原则

定义:设计历史文档(DHF ) 指的是描述某医疗器械成品设计过程的有关记录。内容:DHF包括设计开发活动的所有记录。从最初的策划、客户需求、设计输入,设计输出、设计验证、设计确认、所有的设计评审,设计转换,以及设计变更相关的所有记录。均属于DHF的一部分。要求:各制造商应为每个类型的器械建立并保持设计历史文件。设计历史文件应包含或引用必要的记录,以证实设计符合经批准的设计计划和法规的要求。

学海无涯的专栏 9110

详解AUTOSAR:什么是AUTOSAR?(理论篇—1)

AUTOSAR是由全球各大汽车整车厂、汽车零部件供应商、汽车电子软件系统公司联合建立的一套标准协议,是对汽车技术开发一百多年来的经验总结。

不脱发的程序猿 1万+

HDFS 写流程和读流程,超详细!!!

11. Client 继续向 NameNode 申请上传下一个 block。4. Client 向 DataNode1 申请下载 block1。5. Client 向 NameNode 申请上传 block1。8. Client 发送 block1 给 DataNode1。5. DataNode1 发送 block1 给 Client。DataNode1 回复 Client 接收完毕。1. Client 向 NameNode 申请上传文件。1. Client 向 NameNode 申请下载文件。

小小王的博客 326

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

hdfs读写流程

hdfs 读写流程

qq_62383709的博客 346

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

HDFS全面详解

文章目录课程大纲(HDFS详解)学习目标:HDFS基本概念篇1.1HDFS前言1.2HDFS的概念和特性HDFS基本操作篇2.1HDFS的shell(命令行客户端)操作2.1.1 HDFS命令行客户端使用2.2 命令行客户端支持的命令参数2.3 常用命令参数介绍HDFS原理篇hdfs的工作机制3.1 概述3.2 HDFS写数据流程3.2.1 概述3.2.2 详细步骤图3.2.3 详细步骤解析3.3...

大圣即大盗 5万+

HDFS文件夹上传和下载等命令

目录 零、码仙励志 一、用浏览器查看hdfs目录下的文件夹和文件 二、HDFS命令 零、码仙励志 白茶清欢无别事,我在等风也等你 一、用浏览器查看hdfs目录下的文件夹和文件 在浏览器中输入IP地址+端口号50070就可以,如下: 然后进入下面网页 然后点下面按钮 下面就是hdfs中的文件夹和文件,里面默认什么也没有,需要自己上传 二、HDFS命令 创建一...

秦哥的博客 5万+

HDFS的基本操作(创建目录或文件、查看目录或文件、上传和拷贝文件到HDFS上、追加数据到HDFS上、从HDFS上下载文件到Linux本地、合并HDFS文件)

主要涉及HDFS shell操作命令,包括创建目录或文件、查看目录或文件、上传和拷贝文件到HDFS上、追加数据到HDFS上、从HDFS上下载文件到Linux本地、合并HDFS上多个文件并下载、删除HDFS上的文件、查看各种命令的用法等。

weixin_61472217的博客 4万+

HDFS的JAVA API操作(上传文件和下载文件)

阅读目录HDFS Java API一、创建项目 :example-hdfs二、修改pom.xml文件三、创建类TestHDFSClient.java四、创建文件五、下载文件六、上传文件七、其他常见的操作(这里不做演示了)八、FileSystem类常用方法九、遇到的错误及解决方法 HDFS Java API HDFS Java API 位于“org.apache.hadoop.fs"包中,这些AP...

weixin_44947339的博客 1万+

HDFS文件上传与下载

运行后显示如下,此时Desktop/logs/目录下的log文件已经上传到HDFS的/log1目录中。运行后显示如下,此时Desktop/logs/目录下的log文件已经上传到HDFS的/log2目录中。运行后显示如下,在/home/dolphin/Desktop/logs目录下有一个log文件。此时,已经将HDFS的/log1/目录下的文件,下载到本地家目录下。运行后显示如下,发现HDFS的/log1目录下存在刚才上传的文件。运行后显示如下,发现HDFS的/log2目录下存在刚才上传的文件。

weixin_51551506的博客 7719

HDFS上传下载

HDFS 上传 下载 流程解析

qq_42470018的博客 1071

Hadoop基础操作--上传文件到HDFS

一、什么是HDFS文件系统 文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。即:为用户建立文件、存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时删除文件。 现在我们的计算机基本上都是windows操作系统,文件都存储在磁盘驱动器(C、D、E盘)的文件目录中,在Linux系统中提供了树状文件目录结构,可供使用者存储或读取文件。Hadoop集群也有专有的文件系统--HDFS文件系统,也使用了类Linux的目录结构来进行...

m0_58945994的博客 3万+

Hadoop HDFS 读写流程 | 图文详解

文章目录一、HDFS写数据流程1、文件写入流程2、网络拓扑 - 节点距离计算3、机架感知(副本存储节点选择)二、HDFS读数据流程 一、HDFS写数据流程 1、文件写入流程 下图为文件写入流程剖析图: 想要上传一个200M的文件ss.avi到HDFS,它的写入流程是这样的: 客户端创建Distributed FileSystem,该模块向HDFS的老大哥NameNode请求上传文件ss.avi 老大哥NameNode是个做事很守规矩的人,所以他要检查权限和目录结构是否存在,如果存在就向Distribu

lesileqin的博客 6269
上一篇: 大数据----【HDFS】
下一篇: 大数据----【Hadoop基础知识、Shell定时采集数据】
CoderBoom
博客等级 码龄8年 62粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值