非常详细HDFS读写流程+完美视觉的HDFS读写流程图

这篇具有很好参考价值的文章主要介绍了非常详细HDFS读写流程+完美视觉的HDFS读写流程图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、写数据流程:

非常详细HDFS读写流程+完美视觉的HDFS读写流程图

  1. 客户端(Client通过java虚拟机)向NameNode请求上传文件(内部过程:客户端通过对 DistributedFileSystem 对象调用create()函数来创建文件),参数:路径/a.txt,块规格,副本数。

  2. NameNode检查目标文件是否已存在,父目录是否存在。做出响应返回是否可以上传。

    过程:1、namenode 执行各种不同的检查以确保这个文件不存在,并且客户端有创建该文件的权限。2、检查通过后, namenode就会为创建新文件记录一条记录并向客户端返回一个FSDataOutputStream 对象;否则,文件创建失败并向客户端抛出一个 IOException 异常。

  3. 客户端(Client)请求第一个 Block上传到哪几个DataNode服务器上。

    过程: FSDataOutputStream 封装一个 DFSoutPutstream 对象,该对象负责处理 datanode 和 namenode 之间的通信,将它分成一个个的数据包,并写入dataqueue。

  4. NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。

  5. 客户端(Client)通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。

    过程:DataStreamer 处理数据队列,它的责任是根据datanode 列表来要求 NameNode 分配适合的新块来存储数据备份。这一组DataNode 构成一个管线一一假设复本数为 3,所以管线中有 3 个节点。

  6. dn1、dn2、dn3逐级应答客户端。dn3响应dn2建立连接, dn2响应dn1建立连接,dn1响应客户端(Client)建立连接。

  7. 客户端(Client)开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答。

    过程:DataStreamer 将数据包流式传输到管线中第 1 个DataNode(dn1),该 DataNode(dn1) 存储数据包并将它发送到管线中的第 2 个 DataNode(dn2)。同样地,第 2 个 DataNode(dn2) 存储该数据包并且发送给管线中的第3个DataNode(dn3)DFSOutputStream 也维护着一个内部数据包队列来等待 DataNode 的收到确认回执,称为“确认队列”(ack queue)。当收到管道中所有 DataNode 确认信息后,该数据包才会从确认队列删除。

  8. 当一个Block传输完成之后,客户端(Client)再次请求NameNode上传第二个Block的服务器,直到文件写完。(重复执行3-7步)。

  9. 整个过程中,NameNode一直都在记录元数据(内存中、记操作日志到edits日志文件中)。

二、读数据流程:

非常详细HDFS读写流程+完美视觉的HDFS读写流程图文章来源地址https://www.toymoban.com/news/detail-443318.html

  1. 客户端(Client)通过DistributedFileSystem向NameNode请求下载文件,NameNode通过查询元数据(包含块id、块大小、块偏移量,块存储位置dn1,2,3),找到文件块所在的DataNode地址。
  2. 挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。
  3. DataNode开始传输数据给客户端(Client)(从磁盘里面读取数据输入流,以Packet为单位来做校验)。
  4. 客户端(Client)以Packet为单位接收,先在本地缓存,然后写入目标文件。
  5. 第一块读取完毕,如果还需要读,客户端(Client)重复2-4步骤。

到了这里,关于非常详细HDFS读写流程+完美视觉的HDFS读写流程图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring循环依赖那些事儿(含Spring详细流程图)

    背景 1、循环依赖异常信息 应用时间时间久 应用多人同时并行开发 应用保证迭代进度 经常出现启动时出现循环依赖异常   2、依赖关系 先不关注其他不规范问题,看现象 3、涉及基础知识 Spring bean 创建流程 Dynamic Proxy 动态代理 Spring-AOP 原理   问题 注:Spring启动流程与Bean创

    2024年02月05日
    浏览(43)
  • KafkaProducer Sender 线程详解(含详细的执行流程图)

    for (ProducerBatch batch : batches) { List inflightBatchList = inFlightBatches.get(batch.topicPartition); if (inflightBatchList == null) { inflightBatchList = new ArrayList(); inFlightBatches.put(batch.topicPartition, inflightBatchList); } inflightBatchList.add(batch); } } Step5:将抽取的 ProducerBatch 加入到 inFlightBatches 数据结构,该属性的

    2024年04月12日
    浏览(37)
  • 蓝牙开发之-Android12及以下权限申请 及蓝牙详细流程图

    一、蓝牙开发之-权限申请, 直接上代码 第一步、在 AndroidManifest.xml 中 声明下需要的权限 第三步、权限拿到了,就扫描、连接、进行通信 吧 附上流程图

    2024年04月13日
    浏览(53)
  • python实现+leetcode题+合并两个有序列表超详细流程图分析以及代码思路

    给你两个按非递减顺序排列的整数列表nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。 注意 :最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为

    2023年04月09日
    浏览(49)
  • 生成一篇博客,详细讲解springboot的单点登录功能,有流程图,有源码demo

    SpringBoot是目前非常流行的一个Java开发框架,它以简洁的配置和快速的开发效率著称。在实际应用中,单点登录是一个非常重要的功能,它可以让用户在多个应用系统中使用同一个账号登录,提高用户体验和安全性。本文将详细讲解如何在SpringBoot中实现单点登录功能,并提供

    2024年02月08日
    浏览(45)
  • HDFS读写流程详细过程

    HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。 适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。

    2024年02月08日
    浏览(32)
  • 流程图实现,基于vue2实现的流程图

    flex布局 + 伪元素实现竖直的连接线+组件递归 2.1基础的(未截全,大致长这样)  2.2带有收缩功能的,可以展开和收缩并显示数量     4.项目源码地址 GitHub - yft-code/flow: 流程图 纯css实现流程图

    2024年02月16日
    浏览(48)
  • 流程图如何制作?5步快速画出好看的流程图!

    流程图是一种图形化工具,描述某个过程或者操作的步骤,以及某种业务系统的具体流程。流程图通常由各种图形符号、形状、箭头组成,可以清晰的表示出流程或系统中各种步骤、每个环节之间的关系、条件判断、数据的流动和处理过程等。           对于负责策划的职场

    2024年02月14日
    浏览(47)
  • G6框架Dagre流程图第三个自左向右的 Dagre 上对齐改造,对齐结点和边添加样式,并添加修改节点和展示结点详细信息交互

    ​​ 标题修改具体项 设置结点的样式 设置边的样式 添加修改结点名称功能 添加展示结点详细信息功能 参考链接 基本图形:https://g6.antv.vision/zh/examples/net/dagreFlow#lrDagreUL 展示结点详细信息功能:https://g6.antv.vision/zh/examples/tool/tooltip#tooltipClick 修改结点名称功能:https://g6.ant

    2024年02月10日
    浏览(59)
  • Qt (高仿Visio)流程图组件开发(七) 流程图 简单操作界面搭建

    Qt (高仿Visio)流程图组件开发(一) 效果展示及基本开发框架构思 Qt (高仿Visio)流程图组件开发(二) 基本图元绘制 图元间连线绘制 Qt (高仿Visio)流程图组件开发(三) 图元基类如何定义,流程图多种图元类型实现 Qt (高仿Visio)流程图组件开发(四) 流程图 图元

    2023年04月25日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包