当前位置: 首页 > 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,两者都能快速实现钓鱼邮件骗局。 安全分析…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...