当前位置: 首页 > news >正文

Hadoop3教程(二十二):Yarn的基础架构与工作流程

文章目录

  • (126)基础架构
  • (127)YARN的工作机制
  • (128)作业全流程
  • 参考文献

(126)基础架构

之前基本介绍完了Hadoop的几个核心组件,接下来可以思考下,在MR程序运行过程中,整个集群的资源是如何管理的,以及每个任务该分配多少资源才合适?

这就是YARN需要考虑的问题。

YARN是一个资源调度平台,负责为各个任务提供运行资源。可以简单理解成YARN是windows系统,而MR等程序就是运行在这个操作系统之上的应用进程。

YARN中的组件,包括ResourceManagerNodeManagerContainerApplicationMaster等。

关于YARN的运行流程,我们之前在"概念"一节里也有简单介绍了。

如图:

在这里插入图片描述

ResourceManager,整个YARN中最重要的组件,老大哥,领导角色,基本每个组件都会跟它做交互,负责:

  • 接收、处理客户端传过来的请求(提交的作业);
  • 监控NodeManager;
  • 启动、监控ApplicationMaster(如果任务挂了,会协调切换到其他节点继续执行);
  • 资源的分配与调度。

按我的理解,RM更多的是做的是整个集群的资源管理,一般不会实际落地去分配资源,具体的落地工作,都是由对应的NodeManager来实现的。

NodeManager,单个节点(一般是指单台服务器)上的老大,负责:

  • 管理自己节点上的资源;
  • 处理来自ResourceManage的命令(比如说RM告诉NM,需要从你的节点上运行个任务,那么NM就需要实际分配资源,来做配合);
  • 处理来自ApplicationMaster的命令(如App Mstr要求申请资源)。

ApplicationMaster,是单个job的老大,负责:

  • 为应用申请资源(向RM提申请),并分配给内部的任务;
  • 对内部的任务,进行监控和容错。

Container,是YARN中对资源的一个抽象概念,它封装了某个节点上的多维度资源,如内存、CPU、磁盘和网络。如果要类比的话,相当于是每个节点上的一台台虚拟机?

(127)YARN的工作机制

即YARN在底层是怎么运行的,是面试中经常会被问到的一类面试题。

图形化展示下步骤:

在这里插入图片描述

  1. Mr程序首先被提交到客户端所在的节点,客户端会启动一个YarnRunner来做对内外的交互;

  2. YarnRunner会向ResourceManager发出请求,申请一个Application,来执行自己的job;

  3. 接着RM确认可以创建Application之后,会把这个Application的id和资源提交路径等返回给客户端,告知其可以将资源提交至这个路径;

  4. 客户端的YarnRunner在接收到反馈后,就开始提交job运行所需的资源到指定路径,重点提交三个文件:

    • job.split:即数据的切片文件,关系到后续的切片流程以及MapTask数量;
    • job.xml:即任务执行的参数配置等
    • xx.jar:即任务本身的程序代码

    这些都会在job.submit()之后生成;

  5. 资源提交完毕后,客户端向RM提出申请,申请运行对应的ApplicationMaster;

  6. RM接收到申请,然后将申请初始化成一个Task,放进自己的调度队列里,如FIFO调度队列;

  7. 当一个Task可以被调度时(即资源允许),RM会根据情况,选择一个NodeManager,将Task分配给它;

  8. NM收到任务,会在自己内部创建一个Container,分配好资源,来执行这个Task。接着,Container内部会再启动一个MrAppMaster,来管理整个任务,或者说整个job的运行。

  9. MrAppMaster会去当前job的资源路径,去读取切片信息,即job.split,下载到节点本地;

  10. 拿到切片后,MrAppMaster会再向RM申请,申请资源来运行MapTask。RM会将申请先放进队列,等调度到的时候,就会去挑选并通知对应的NodeManager们,准备分配资源来做MapTask;

  11. 对应的NodeManager接收到通知,然后在自己内部创建好对应的Container;

  12. MrAppMaster直接发送程序的启动脚本给刚创建好的Container们,让它们启动MapTask,开始正式运行代码,这个过程里,每个MapTask会生成一个YarnChild,负责对外的交流;待MapTask执行完,数据会按照分区持久化到磁盘;

  13. 待MapTask执行完后,MrAppMaster会再向RM申请几个Container,来运行ReduceTask。流程跟刚才介绍的MapTask启动基本一致,开启Container、启动ReduceTask、启动YarnChild等;

  14. ReduceTask启动后,会向MapTask里去获取对应分区的数据;

  15. ReduceTask执行完后,标志着整个MR基本运行完成,MrAppMaster会向RM提出申请,任务完成,请求注销掉自己,并回收资源等;

  16. RM接收申请,并开始收尾工作。

(128)作业全流程

主要讲解下,HDFS、YARN、MapReduce三者的关系。

HDFS里有DataNode、NameNode和SecondaryNameNode,其中DataNode用来存储,NameNode则是用来管理DataNode的,比如说记录DataNode的一些元数据等。至于SecondNameNode,是辅助NameNode工作的。

然后YARN的话,是有一个ResourceManage,负责管理全局的资源,一至多个NodeManager用来管理单节点的资源。

教程里没有详细展开说,我只做个简单总结吧。

还是以上一节YARN的工作流程为例,那里清晰展示了YARN跟MapReduce的交互,至于HDFS在哪儿起作用,其实也好理解,HDFS就可以简单理解成磁盘。

比如说第3步里,client需要提交资源至指定的路径,其实就是提交到HDFS的路径下。另外,每个MapTask启动之后要去资源路径拿数据,其实也是跟HDFS的DataNode交互的过程。

参考文献

  1. 【尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放】

相关文章:

Hadoop3教程(二十二):Yarn的基础架构与工作流程

文章目录 (126)基础架构(127)YARN的工作机制(128)作业全流程参考文献 (126)基础架构 之前基本介绍完了Hadoop的几个核心组件,接下来可以思考下,在MR程序运行…...

离线 notepad++ 添加到右键菜单

复制下面代码,修改文件后缀名为:reg Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\NotePad] "Notepad" "Icon""D:\\Notepad\\notepad.exe,0"[HKEY_CLASSES_ROOT\*\shell\NotePad\Command] "D:\…...

怎么让英文大语言模型支持中文?--构建中文tokenization--继续预训练--指令微调

1 构建中文tokenization 参考链接:https://zhuanlan.zhihu.com/p/639144223 1.1 为什么需要 构建中文tokenization? 原始的llama模型对中文的支持不太友好,接下来本文将讲解如何去扩充vocab里面的词以对中文进行token化。 1.2 如何对 原始数…...

笙默考试管理系统-MyExamTest----codemirror(35)

笙默考试管理系统-MyExamTest----codemirror(35) 目录 一、 笙默考试管理系统-MyExamTest 二、 笙默考试管理系统-MyExamTest 三、 笙默考试管理系统-MyExamTest 四、 笙默考试管理系统-MyExamTest 五、 笙默考试管理系统-MyExamTest 笙默考试…...

MMKV(2)

API 初始化和实例获取: MMKV.initialize(Context context): 初始化MMKV库。通常在应用程序的入口点调用此方法。 MMKV.defaultMMKV(): 获取默认的MMKV实例。默认实例使用默认的存储路径和加密方式。 MMKV.mmkvWithID(String mmapID): 根据给定的ID获取MMKV实例。…...

Spring Boot项目中使用 TrueLicense 生成和验证License(附源码)

1、Linux 在客户linux上新建layman目录,导入license.sh文件, [rootlocalhost layman]# mkdir -p /laymanlicense.sh文件内容: #!/bin/bash # 1.获取要监控的本地服务器IP地址 IPifconfig | grep inet | grep -vE inet6|127.0.0.1 | awk {p…...

ES6 Iterator 和 for...of 循环

1.iterator 概念 ES6 添加了Map和Set。这样就有了四种数据集合,需要一种统一的接口机制来处理所有不同的数据结构。遍历器(Iterator)就是这样一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部…...

ubuntu20.04 nvidia显卡驱动掉了,变成开源驱动,在软件与更新里选择专有驱动,下载出错,调整ubuntu镜像源之后成功修复

驱动配置好,环境隔了一段时间,打开Ubuntu发现装好的驱动又掉了,软件与更新 那里,附加驱动,显示开源驱动,命令行输入 nvidia-smi 命令查找不到驱动。 点击上面的 nvidia-driver-470(专有&#x…...

华为FAT模式无线AP配置实例

硬件:AP3010DN 软件版本:VRP software, Version 5.170 (AP3010DN-V2 FAT V200R010C00SPCf02) [Huawei]dis ver Huawei Versatile Routing Platform Software VRP (R) software, Version 5.170 (AP3010DN-V2 FAT V200R010C00SPCf02) Copyright (C) 2011…...

nodejs基于vue 学生论坛设计与实现

随着网络技术的不断成熟,带动了学生论坛,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。 是本系统的开发平台 系统中管理员主要是为了安全有效地存储和管理各类信息, 这种个性化的平…...

017 基于Spring Boot的食堂管理系统

部分代码地址: https://github.com/XinChennn/xc017-stglxt 基于Spring Boot的食堂管理系统 项目介绍 本项目是基于Java的管理系统。采用前后端分离开发。前端基于bootstrap框架实现,后端使用Java语言开发,技术栈包括但不限于SpringBoot、…...

常用的二十种设计模式(下)-C++

设计模式 C中常用的设计模式有很多,设计模式是解决常见问题的经过验证的最佳实践。以下是一些常用的设计模式: 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。工厂模式(…...

C#桶排序算法

前言 桶排序是一种线性时间复杂度的排序算法,它将待排序的数据分到有限数量的桶中,每个桶再进行单独排序,最后将所有桶中的数据按顺序依次取出,即可得到排序结果。 实现原理 首先根据待排序数据,确定需要的桶的数量。…...

快速了解服务器单CPU与双CPU

​  在当今快节奏的技术环境中,用户们对功能强大且高效的服务器配置需求不断增长。CPU作为构成任何计算基础设施的骨干,服务器的“大脑”,负责执行计算、控制数据流并协调各个组件之间的任务,是服务器选择硬件中的重要一环。因此…...

c# Dictionary、ConcurrentDictionary的使用

Dictionary Dictionary 用于存储键-值对的集合。如果需要高效地存储键-值对并快速查找,请使用 Dictionary。 注意,键必须是唯一的,值可以重复。 using System; using System.Collections.Generic; using System.Linq;class Program {stati…...

大数据中间件——Kafka

Kafka安装配置 首先我们把kafka的安装包上传到虚拟机中: 解压到对应的目录并修改对应的文件名: 首先我们来到kafka的config目录,我们第一个要修改的文件就是server.properties文件,修改内容如下: # Licensed to the …...

HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Slider

滑动条组件,通常用于快速调节设置值,如音量调节、亮度调节等应用场景。该组件从API Version 7开始支持。无子组件 一、接口 Slider(options?: {value?: number, min?: number, max?: number, step?: number, style?: SliderStyle, direction?: Ax…...

SpringCloud: sentinel链路限流

一、配置文件要增加 spring.cloud.sentinel.webContextUnify: false二、在要限流的业务方法上使用SentinelResource注解 package cn.edu.tju.service;import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.slots.block.BlockExcept…...

UML 中的关系

种类 继承、实现、组合、聚合、关联、依赖 理解 继承和实现的关系强度最大。组合代表着实体之间共同构成一个主体内部的组成部分无法单独支撑,聚合则代表层级更高的一种关联涉及的实体都是独立的个体共同组合起来构成一个主体 个体之间是可以单独工作的。 组合和…...

ChatGPT技术或加剧钓鱼邮件攻击

我们对ChatGPT这一新技术并不陌生,也早就听闻ChatGPT可以通过某种方式绕过安全机制,对目标进行入侵。 ChatGPT的“越狱”技术已经迭代数次,甚至有了先进的“邪恶GPT”WormGPT和FraudGPT,两者都能快速实现钓鱼邮件骗局。 安全分析…...

哨兵1号后向散射系数土壤水分反演

哨兵1号后向散射系数土壤水分反演 数据导入 打开之前预处理之后的VH和VV极化的后向散射系数转存的tiff文件 导入实测点 选择KML转图层 kml文件是由奥维地图导出的.ovkml格式改后缀名得到的 提取采样点的后向散射系数 选择多值提取至点 右键打开点图层的属性表,发现…...

day3:Node.js 基础知识

day3:Node.js 基础知识 ​ 文章目录 day3:Node.js 基础知识创建第一个应用事件循环机制异步编程模块系统函数与回调函数路由和全局对象创建第一个应用 实例如下,在你项目的根目录下创建一个叫 helloworld.js 的文件,并写入以下代码: var http = require(http);http.cre…...

【RDMA】librdmacm库和连接建立过程

翻译:rdma_cm - RDMA通信管理器。 概述:rdma_cm是用于建立RDMA传输上的通信的管理器。 说明:RDMA CM是一个用于建立可靠连接和不可靠数据报数据传输的通信管理器。它为建立连接提供了一个RDMA传输中立的接口。该API基于套接字,但…...

如何使用Python抓取PDF文件并自动下载到本地

目录 一、导入必要的库 二、发送HTTP请求并获取PDF文件内容 三、将PDF文件内容写入到本地文件中 四、完整代码示例 五、注意事项 六、错误处理和异常处理 七、进一步优化 总结 在Python中,抓取PDF文件并自动下载到本地需要使用几个不同的库。首先&#xff0…...

人脸写真FaceChain的简单部署记录(一)

由【让你拥有专属且万能的AI摄影师AI修图师——FaceChain迎来最大版本更新】这篇文章开始出发进行人脸写真的尝试,笔者之前modelscope申请过免费额度,这里有适配的GPU环境可以提供测试。 但是很难抢到GPU资源,需要等待很久,可能才…...

linux虚机新增加磁盘后在系统中查不到

问题描述 在虚机管理平台上对某一linux主机添加了一块硬盘,但在系统中并未显示 通过执行 lsblk,并未看到新增的硬盘信息 解决方法 1. 可通过重启服务器解决 2. 如果不能重启服务器,可重新扫描下 scsi总线 查看总线: ls /s…...

js中隐式类型转换与toPrimitive

前言 我们知道Js的隐式类型转换主要出现在有运算符的情况下【逻辑运算符、关系运算符、算术运算符】。那么在接触toPrimitive之前,我们需要先知道其他值到某个类型值的转换规则。 其他值到数值的转换规则 Boolean: true — 1 false — 0 Null&#xf…...

家政系统预约小程序具备哪些功能?

预约家政小程序有这么大的市场需求加上这么多的好处,相信未来发展前景不错。也必将吸引很多商家投资者着手开发属于自己的上门家政APP小程序软件,在实际的开发过程中需要具备哪些功能呢? 一、用户端功能: 1. 用户注册登录&#x…...

【LeetCode】46. 全排列

1 问题 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2: 输入&#x…...

宏电股份RedCap产品亮相迪拜华为MBBF,并参与RedCap全球商用阶段性成果发布

10月10-11日,由华为主办的第十四届全球移动宽带论坛(MBBF)在阿联酋迪拜成功举办。MBBF期间,华为联合宏电股份等产业伙伴集中发布RedCap商用阶段性成果。本次发布是RedCap产业的关键里程碑,标志着RedCap在全球已具备规模…...