Hadoop3教程(二十二):Yarn的基础架构与工作流程
文章目录
- (126)基础架构
- (127)YARN的工作机制
- (128)作业全流程
- 参考文献
(126)基础架构
之前基本介绍完了Hadoop的几个核心组件,接下来可以思考下,在MR程序运行过程中,整个集群的资源是如何管理的,以及每个任务该分配多少资源才合适?
这就是YARN需要考虑的问题。
YARN是一个资源调度平台,负责为各个任务提供运行资源。可以简单理解成YARN是windows系统,而MR等程序就是运行在这个操作系统之上的应用进程。
YARN中的组件,包括ResourceManager、NodeManager、Container、ApplicationMaster等。
关于YARN的运行流程,我们之前在"概念"一节里也有简单介绍了。
如图:

ResourceManager,整个YARN中最重要的组件,老大哥,领导角色,基本每个组件都会跟它做交互,负责:
- 接收、处理客户端传过来的请求(提交的作业);
- 监控NodeManager;
- 启动、监控ApplicationMaster(如果任务挂了,会协调切换到其他节点继续执行);
- 资源的分配与调度。
按我的理解,RM更多的是做的是整个集群的资源管理,一般不会实际落地去分配资源,具体的落地工作,都是由对应的NodeManager来实现的。
NodeManager,单个节点(一般是指单台服务器)上的老大,负责:
- 管理自己节点上的资源;
- 处理来自ResourceManage的命令(比如说RM告诉NM,需要从你的节点上运行个任务,那么NM就需要实际分配资源,来做配合);
- 处理来自ApplicationMaster的命令(如App Mstr要求申请资源)。
ApplicationMaster,是单个job的老大,负责:
- 为应用申请资源(向RM提申请),并分配给内部的任务;
- 对内部的任务,进行监控和容错。
Container,是YARN中对资源的一个抽象概念,它封装了某个节点上的多维度资源,如内存、CPU、磁盘和网络。如果要类比的话,相当于是每个节点上的一台台虚拟机?
(127)YARN的工作机制
即YARN在底层是怎么运行的,是面试中经常会被问到的一类面试题。
图形化展示下步骤:

-
Mr程序首先被提交到客户端所在的节点,客户端会启动一个YarnRunner来做对内外的交互;
-
YarnRunner会向ResourceManager发出请求,申请一个Application,来执行自己的job;
-
接着RM确认可以创建Application之后,会把这个Application的id和资源提交路径等返回给客户端,告知其可以将资源提交至这个路径;
-
客户端的YarnRunner在接收到反馈后,就开始提交job运行所需的资源到指定路径,重点提交三个文件:
- job.split:即数据的切片文件,关系到后续的切片流程以及MapTask数量;
- job.xml:即任务执行的参数配置等
- xx.jar:即任务本身的程序代码
这些都会在job.submit()之后生成;
-
资源提交完毕后,客户端向RM提出申请,申请运行对应的ApplicationMaster;
-
RM接收到申请,然后将申请初始化成一个Task,放进自己的调度队列里,如FIFO调度队列;
-
当一个Task可以被调度时(即资源允许),RM会根据情况,选择一个NodeManager,将Task分配给它;
-
NM收到任务,会在自己内部创建一个Container,分配好资源,来执行这个Task。接着,Container内部会再启动一个MrAppMaster,来管理整个任务,或者说整个job的运行。
-
MrAppMaster会去当前job的资源路径,去读取切片信息,即job.split,下载到节点本地;
-
拿到切片后,MrAppMaster会再向RM申请,申请资源来运行MapTask。RM会将申请先放进队列,等调度到的时候,就会去挑选并通知对应的NodeManager们,准备分配资源来做MapTask;
-
对应的NodeManager接收到通知,然后在自己内部创建好对应的Container;
-
MrAppMaster直接发送程序的启动脚本给刚创建好的Container们,让它们启动MapTask,开始正式运行代码,这个过程里,每个MapTask会生成一个YarnChild,负责对外的交流;待MapTask执行完,数据会按照分区持久化到磁盘;
-
待MapTask执行完后,MrAppMaster会再向RM申请几个Container,来运行ReduceTask。流程跟刚才介绍的MapTask启动基本一致,开启Container、启动ReduceTask、启动YarnChild等;
-
ReduceTask启动后,会向MapTask里去获取对应分区的数据;
-
ReduceTask执行完后,标志着整个MR基本运行完成,MrAppMaster会向RM提出申请,任务完成,请求注销掉自己,并回收资源等;
-
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交互的过程。
参考文献
- 【尚硅谷大数据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,两者都能快速实现钓鱼邮件骗局。 安全分析…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
