Hadoop生态圈三大组件:HDFS的读写流程、MapReduce计算流程、Yarn资源调度

news2024/10/23 17:52:12

文章目录

  • 1. HDFS的读写流程
    • 1.1 HDFS读流程
    • 1.2 HDFS写流程
  • 2. MapReduce计算流程
  • 3. Yarn资源调度
      • 一、客户端请求资源
      • 二、Resource Manager处理请求
      • 三、任务资源计算与申请
      • 四、Resource Manager分配资源
      • 五、Node Manager执行任务
      • 六、任务执行与监控

1. HDFS的读写流程

1.1 HDFS读流程

  • 客户端首先向Namenode发送读取请求,询问要读取的文件存储在哪些数据节点上。
  • Namenode会根据机架感知原理、网络拓扑关系、副本机制等返回部分或者全部的block所在的Datanode的地址。
  • 客户端根据Namenode返回的地址,选择一个距离最近的Datanode节点来读取第一个数据块。客户端直接与该数据节点建立连接,并发送读取请求。
  • Datanode接收到读取请求后,开始从磁盘上读取相应的数据块,并将数据通过网络传输给客户端。
  • 客户端在接收数据的同时,会对数据进行校验,以确保数据的完整性。如果发现数据损坏,客户端可以向其他包含该数据块副本的数据节点请求重新读取。
  • 当客户端读取完一个Datanode后,会根据Namenode提供的块位置信息,选择下一个数据节点来读取下一个数据块。重复上述步骤,直到客户端读取完整个文件。
    在这里插入图片描述

1.2 HDFS写流程

  • 客户端向Namenode发送写入请求。
  • Namenode接收到写入请求后,首先判断当前这个操作的用户是否具有写入权限,如果不具备写入权限会直接报错;如果有写入权限,再进行判断在写入的目录下是否存在这个文件;如果要写入的目录下已经存在这个文件,会直接报错;如果要写入的目录下不存在这个文件,通知客户端可以写入。
  • 客户端对文件进行切分操作,形成block块。
  • 客户端请求第一个block块存储在哪些地方。
  • Namenode根据机架感知原理、拓扑关系、副本机制等,找到相应的可以上传的Datanode的连接列表,返回给客户端。
  • 客户端从接受的Datanode列表中选择第一台建立连接,当连接第一台Datanode以后,让第一台Datanode与第二台Datanode连接,然后第二台Datanode与第三台Datanode连接形成一条pipeline(管道)。
  • 客户端通过数据包的形式发送数据。当第一台Datanode接收到数据后,将数据发送给第二台Datanode,第二台接收完,再将数据发送给第三台。当最后一个Datanode接受请求后建立一个反向的应答队列。当每个节点都将数据包接收到以后,反向给予应答响应(ack确认机制)。
    在这里插入图片描述

2. MapReduce计算流程

在这里插入图片描述
MR天龙八部
在这里插入图片描述

3. Yarn资源调度

在这里插入图片描述
YARN(Yet Another Resource Negotiator)是Hadoop的资源管理系统,其资源调度机制如下:

一、客户端请求资源

  1. 提交任务请求
    • 客户端首先将任务提交给Resource Manager。

二、Resource Manager处理请求

  1. 接收任务请求
    • Resource Manager接收到客户端的任务请求。
  2. 选择Node Manager
    • Resource Manager在Node Manager上寻找一个比较空闲的节点。
    • 通知并启动一个Application Master,将任务信息发送给Application Master,等待Application Master启动成功。
    • 如果启动失败,认为当前任务直接报错,告知任务无法执行。
  3. 获取任务相关信息
    • Application Master启动后,开始和主节点保持心跳机制,获取任务相关的信息(如JAR包路径、主类、参数)。

三、任务资源计算与申请

  1. 计算任务数量
    • 根据任务信息,计算共需要多少Map Task和多少Reduce Task。
  2. 发送资源请求
    • 通过心跳包,将任务计算的结果资源需求发送给主节点,进行资源的申请。

四、Resource Manager分配资源

  1. 资源分配工作
    • 根据收到的资源申请的结果信息,进行资源的分配工作。
    • 如果资源比较宽松,一次性将所需的所有资源一并全返回。
    • 如果资源比较紧张,最起码应该返回所有Map Task所需资源。

五、Node Manager执行任务

  1. 获取资源信息
    • Application Master通过心跳包,一直询问是否已经准备好资源,一旦准备好,将资源信息全部获取。
  2. 通知Node Manager
    • 根据获取的资源信息,通知各个Node Manager,启动相关的程序(先启动Map Task),告知Node Manager任务信息(如JAR包路径、主类、参数)。

六、任务执行与监控

  1. 执行任务进度监控
    • 每一个运行的container定时和Application Master汇总执行任务执行的进度。
    • 并且还基于Node Manager和Resource Manager的使用情况,报告资源的使用情况。
    • 如果初始化的时候,只是返回Map Task运行的资源。
    • 当Map Task执行完成后,或者执行过程中,Application Master向Resource Manager/Node Manager询问Reduce Task的资源是否已经准备好了,如果准备好了,就进行Reduce任务。
  2. 任务完成报告
    • 当整个Map Task和Reduce Task都运行完成后,通知Application Master已经完成执行任务了。
  3. 资源回收
    • Resource Manager收回所有分配的资源,然后通知Application Master可以执行自毁程序了。

这种资源调度机制确保了在YARN集群中,任务能够高效地获取和利用资源,同时也保证了资源的合理分配和管理。

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

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

相关文章

C++ 中的友元(Friend)用法详解

什么是友元(Friend)?👭 友元 (C) | Microsoft Learn 在C中,友元(Friend)是一种机制,允许外部函数或类访问某个类的私有(private)或保护(protecte…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十五集:制作更多地图,更多敌人,更多可交互对象

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、第一个代表性场景 1.制作更多敌人2.制作更多可交互对象二、第二个代表性场景 1.制作更多敌人2.制作更多可交互对象三、第三个代表性场景 1.制作更多敌人2.制…

【计算机网络 - 基础问题】每日 3 题(五十二)

✍个人博客:https://blog.csdn.net/Newin2020?typeblog 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞…

Solr5.5.0单机部署

Solr5.5.0集成Tomcat8部署 1、 准备条件 JDK1.7以上 Solr5.5.0部署包(solr-5.5.0.zip) Tomcat8部署包 (apache-tomcat-8.5.16.tar.gz) 上传Solr5.5.0和tomcat8 部署包并解压使用 2、准备部署 将./solr-5.5.0/server/solr-we…

SPI的学习

工作原理 SPI的工作原理基于主从架构。主设备通过四条主要信号线与一个或多个从设备进行通信: MOSI(主输出,从输入)DI(Master Output Slave Input):主设备发送数据到从设备。MISO(…

MySQL 回收表碎片实践教程

前言: 在 MySQL 数据库中,随着数据的增删改操作,表空间可能会出现碎片化,这不仅会占用额外的存储空间,还可能降低表的扫描效率,特别是一些大表,在进行数据清理后会产生大量的碎片。本篇文章我们…

MAC电脑的JDK、MAVEN配置及IDEA激活

1、JDK配置环境 vim ~/.bash_profile # 添加 Java 目录,类路径和指令路径的配置,若已存在则用目标值覆盖 export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/…

Oracle单实例静默安装

oracle 11g单实例静默安装 在CentOS上静默安装Oracle数据库 引言 在企业环境中,自动化和标准化是提高效率的关键。静默安装(也称为无人值守安装)是一种无需人工干预的安装方法,适用于大规模部署或需要重复安装的场景。本文将介…

【KEIL那些事 4】CMSIS缺失!!!!导致不能编译!!!!软件自带芯片下载缓慢!!!!!!快速下载芯片包!!!!!

安装了keli发现emmm,CMSIS缺失!!!!不能编译,,,自带下载芯片缓慢,,,官网下载emmm,竟然不带动的!!!&…

MySQL根据.idb数据恢复脚本,做成了EXE可执行文件

文章目录 1.代码2.Main方法打包3.Jar包打成exe可执行文件4.使用(1.)准备一个表结构一样得数据库(2.)打开软件(3.)输入路径 5.恢复成功 本文档只是为了留档方便以后工作运维,或者给同事分享文档内…

查看Chrome安装路

谷歌Google浏览器查看安装路径,浏览器Google Chrome浏览器查看安装路径 chrome://version/ 来源:笔记云

(数据结构)单链表——C语言

目录 1 概念与结构 1.1 结点 1.2 链表的性质 2 实现单链表 2.1打印SLPrint 2.2申请一个结点SLBuyNode 2.3尾插SLPushBack 2.4头插SLPushfront 2.5尾删SLPopBack 2.6头删SLPopfront 2.7查找结点位置SLFindNode 2.8在pos位置插入SLInsert 2.9在pos节点之后插入SLInse…

2024HarmonyOS应用开发者高级认证 最新题库第二部分

单选题 1.以下哪个装饰器用来表示并发共享对象。(D) AShared BState CStyle DSendable 2.hiAppEvent提供的Watcher接口,需要订阅到OS的崩溃事件,正确的实现方式(选下面这个) hiAppEvent.addWatcher({ name:"watcher&…

探索网页组件化:原生JavaScript动态加载HTML与iframe的使用与比较

在网页设计中,将内容作为组件动态加载到页面上是一种提高用户体验和页面性能的有效手段。本文将详细介绍两种实现动态内容加载的方法:使用原生JavaScript动态加载HTML和使用iframe,并对比它们的使用方式和优缺点。 原生JavaScript动态加载HTM…

[论文笔记]HERMES 3 TECHNICAL REPORT

引言 今天带来论文HERMES 3 TECHNICAL REPORT,这篇论文提出了一个强大的工具调用模型,包含了训练方案介绍。同时提出了一个函数调用标准。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 聊天模…

RISC-V笔记——内存模型总结

1 前言 Memory consistency model定义了使用Shared memory(共享内存)执行多线程(Multithread)程序所允许的行为规范。RISC-V使用的内存模型是RVWMO(RISC-V Weak Memory Ordering),RVWMO内存模型是根据全局内存顺序(global memory order)定义的,全局内存…

简单有效修复d3d9.dll错误,11种d3d9.dll错误详细解决办法教程

当你遇到d3d9.dll文件丢失的问题时,可以通过今天的这篇文章详细的步骤来尝试修复这个问题,今天将教大家十一种d3d9.dll丢失修复的方法。 1. 重新安装DirectX以恢复d3d9.dll d3d9.dll是DirectX的一部分,因此重新安装DirectX通常可以解决d3d9.…

proguard对java代码进行混淆加密。并进行反编译测试,后续可配合classfinal进行使用

文章目录 1.插件混淆(1.)pom配置(2.)混淆配置(3.)打包 2.反编译查看效果(1.)工具下载(2.)反编译对比 3.启动测试4.功能测试5.二次加密 本文档只是为了留档方便…

【ChatGPT插件漏洞三连发之一】未授权恶意插件安装

漏洞 要了解第一个漏洞,我们必须首先向您展示 OAuth 身份验证的工作原理: 假设您是 Dan,并且您想使用您的 Facebook 帐户连接到 Example.com。当您点击“使用Facebook登录”时会发生什么? 在步骤 2-3 中: 在 Dan 单…

2024成为自动化测试的7种技能!

随着敏捷和DevOps等新时代项目开发方法逐渐取代旧的瀑布模型,测试需求在业界不断增长。测试人员现在正在与开发人员一起工作,自动化测试在许多方面极大地取代了手动测试。如果您是自动化测试领域的新手,刚雇用您的组织将期望您快速&#xff0…