Yarn资源调度器

目录

  • 写在前面
  • 一、yarn资源调度器
    • 1.1 Yarn基础架构
    • 1.2 Yarn工作机制
    • 1.3 作业提交全过程
      • 1.3.1 作业提交
      • 1.3.2 作业初始化
      • 1.3.3 任务分配
      • 1.3.4 任务运行
      • 1.3.5 进度和状态更新
      • 1.3.6 作业完成
    • 1.4 Yarn调度器和调度算法
      • 1.4.1 先进先出调度器(FIFO)
      • 1.4.2 容量调度器(Capacity Scheduler)
      • 1.4.3 公平调度器(Fair Scheduler)
    • 1.5 Yarn常用命令
      • 1.5.1 yarn application查看任务
      • 1.5.2 yarn logs查看日志
      • 1.5.3 yarn applicationattempt查看尝试运行的任务
      • 1.5.4 yarn container查看容器
      • 1.5.5 yarn node查看节点状态
      • 1.5.6 yarn rmadmin更新配置
      • 1.5.7 yarn queue查看队列
  • 写在最后

写在前面

在大数据时代,Hadoop已经成为处理海量数据的首选平台。而Hadoop YARN(Yet Another Resource Negotiator)作为Hadoop生态系统中的核心组件,更是为大数据处理提供了强大的资源管理和调度能力。本文将深入探讨YARN的工作原理、核心组件及其在大数据处理中的重要作用。

一、yarn资源调度器

YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的一个关键组件,它是Hadoop的集群资源管理器和作业调度器。YARN的设计目的是使Hadoop集群能够更高效地处理大规模数据处理任务。

1.1 Yarn基础架构

YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。各个组件的作用如下:

  1. ResourceManager(RM):
    • 处理客户端请求
    • 监控NodeManager
    • 启动或监控ApplicationMaster
    • 资源的分配与调度
  2. NodeManager(NM):
    • 管理单个节点上的资源
    • 处理来自ResourceManager的命令
    • 处理来自ApplicationMaster的命令
  3. ApplicationMaster(AM):
    • 为应用程序申请资源并分配给内部的任务
    • 任务的监控与容错
  4. Container
    • Container是yarn中的资源抽象,它封装了某个节点上的多维度资源,如内存、cpu、磁盘、网络等

1.2 Yarn工作机制

在这里插入图片描述

(1)MR程序提交到客户端所在的节点。
(2)YarnRunner向ResourceManager申请一个Application。
(3)RM将该应用程序的资源路径返回给YarnRunner。
(4)该程序将运行所需资源提交到HDFS上。
(5)程序资源提交完毕后,申请运行mrAppMaster。
(6)RM将用户的请求初始化成一个Task。
(7)其中一个NodeManager领取到Task任务。
(8)该NodeManager创建容器Container,并产生MRAppmaster。
(9)Container从HDFS上拷贝资源到本地。
(10)MRAppmaster向RM 申请运行MapTask资源。
(11)RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。
(12)MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序。
(13)MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。
(14)ReduceTask向MapTask获取相应分区的数据。
(15)程序运行完毕后,MR会向RM申请注销自己。

1.3 作业提交全过程

作业提交全过程详解

1.3.1 作业提交

第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。
第2步:Client向RM申请一个作业id。
第3步:RM给Client返回该job资源的提交路径和作业id。
第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。
第5步:Client提交完资源后,向RM申请运行MrAppMaster。

1.3.2 作业初始化

第6步:当RM收到Client的请求后,将该job添加到容量调度器中。
第7步:某一个空闲的NM领取到该Job。
第8步:该NM创建Container,并产生MRAppmaster。
第9步:下载Client提交的资源到本地。

1.3.3 任务分配

第10步:MrAppMaster向RM申请运行多个MapTask任务资源。
第11步:RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。

1.3.4 任务运行

第12步:MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序。
第13步:MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。
第14步:ReduceTask向MapTask获取相应分区的数据。
第15步:程序运行完毕后,MR会向RM申请注销自己。

1.3.5 进度和状态更新

YARN中的任务将其进度和状态(包括counter)返回给应用管理器, 客户端每秒(通过mapreduce.client.progressmonitor.pollinterval设置)向应用管理器请求进度更新, 展示给用户。

1.3.6 作业完成

除了向应用管理器请求作业进度外, 客户端每5秒都会通过调用waitForCompletion()来检查作业是否完成。时间间隔可以通过mapreduce.client.completion.pollinterval来设置。作业完成之后, 应用管理器和Container会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查。

1.4 Yarn调度器和调度算法

YARN的调度器负责将可用的集群资源分配给各个应用程序,Hadoop作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。Apache Hadoop3.2.4默认的资源调度器是Capacity Scheduler。
CDH框架默认调度器是Fair Scheduler。
具体设置详见:yarn-default.xml文件

<property>
    <description>The class to use as the resource scheduler.</description>
    <name>yarn.resourcemanager.scheduler.class</name>
	<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

1.4.1 先进先出调度器(FIFO)

FIFO调度器(First In First Out):是一种简单的调度算法,它按照任务提交的顺序进行调度。在先进先出调度器中,没有考虑任务的优先级、资源需求和执行时间等因素。

当有多个任务提交到先进先出调度器时,调度器会按照任务递交的顺序,一个接一个地将资源分配给它们。当一个任务完成或者释放了它所占用的资源后,下一个等待中的任务才能开始执行。

优点:简单而且公平
缺点:不支持多队列,生产环境很少使用;

1.4.2 容量调度器(Capacity Scheduler)

Capacity Scheduler是Yahoo开发的多用户调度器。根据集群资源的划分和配置,将资源分配给不同的队列。每个队列都有一个最大可用资源容量限制,并且可以设置队列之间的优先级。

在Capacity调度器中,管理员可以将集群资源划分为多个队列,每个队列都有自己的最大可用资源容量限制。这些队列可以按照应用程序、部门、用户等多种方式进行划分。管理员还可以为每个队列设置相应的优先级,以确保重要任务或高优先级任务能够获得更多的资源。

Capacity调度器的工作流程如下:

  1. 资源分配:当一个应用程序提交到集群时,调度器根据应用程序所需的资源量和队列的最大可用资源容量,决定要分配给该应用程序的资源。
  2. 资源预留:一旦资源分配完成,调度器为应用程序保留分配给它的资源。这意味着其他的应用程序不能使用这些资源,直到分配给该应用程序的任务完成或者释放了资源。
  3. 队列优先级:在有多个队列的情况下,调度器会根据队列之间的优先级,决定分配资源的顺序。高优先级队列的应用程序将获得更多的资源。
  4. 资源回收:当一个应用程序的任务完成或者释放了资源,调度器将重新分配这些资源给其他的等待中的应用程序。

1.4.3 公平调度器(Fair Scheduler)

Fair调度器是YARN中常用的一种调度器,它旨在公平地共享集群资源,避免其中一个应用程序垄断资源。

Fair调度器基于公平共享的原则,根据各个应用程序的需求和优先级,动态地分配集群资源。在Fair调度器中,所有的应用程序被视为同等重要,每个应用程序都有一定的权重。调度器会根据应用程序的权重和资源需求来分配资源,以达到公平和均衡的资源分配。

Fair调度器的工作流程如下:

  1. 资源分配:当一个应用程序提交到集群时,调度器根据应用程序的权重和资源需求,动态地计算出所分配的资源数量。
  2. 资源预留:资源分配完成后,调度器为应用程序保留分配给它的资源。这意味着其他的应用程序不能使用这些资源,直到分配给该应用程序的任务完成或者释放了资源。
  3. 队列公平性:在有多个应用程序等待资源的情况下,调度器会根据各个应用程序的权重和公平共享的原则,确定资源分配的顺序。权重较高的应用程序将获得更多的资源。
  4. 动态调整:随着时间的推移和各个应用程序的资源需求变化,Fair调度器会动态地重新计算每个应用程序的权重和资源分配,保持公平和均衡的资源调度。

1.5 Yarn常用命令

Yarn状态的查询,除了可以在hadoop103:8088页面查看外,还可以通过命令操作。常见的命令操作如下所示:
需求:执行WordCount案例,并用Yarn命令查看任务运行情况。

[amo@hadoop102 hadoop-3.2.4]$ myhadoop.sh start

[amo@hadoop102 hadoop-3.2.4]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

1.5.1 yarn application查看任务

(1)列出所有Application:

[amo@hadoop102 hadoop-3.2.4]$ yarn application -list
2024-03-27 23:17:46,842 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.1.5:8032
Total number of applications (application-types: [], states: [SUBMITTED, ACCEPTED, RUNNING] and tags: []):0
                Application-Id	    Application-Name	    Application-Type	      User	     Queue	             State	       Final-State	       Progress	                       Tracking-URL

(2)根据Application状态过滤:yarn application -list -appStates (所有状态:ALL、NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED)

[amo@hadoop102 hadoop-3.2.4]$ yarn application -list -appStates FINISHED
2024-03-27 23:19:01,504 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.1.5:8032
Total number of applications (application-types: [], states: [FINISHED] and tags: []):0
                Application-Id	    Application-Name	    Application-Type	      User	     Queue	             State	       Final-State	       Progress	                       Tracking-URL

(3)Kill掉Application:

[amo@hadoop102 hadoop-3.2.4]$ yarn application -kill application_1612577921195_0001
2024-03-27 23:19:01,504 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.10.103:8032
Application application_1612534544195_0001 has already finished

1.5.2 yarn logs查看日志

(1)查询Application日志:yarn logs -applicationId <ApplicationId>

[amo@hadoop102 hadoop-3.2.4]$ yarn logs -applicationId application_1612534544195_0001 

(2)查询Container日志:yarn logs -applicationId <ApplicationId> -containerId <ContainerId>

[amo@hadoop102 hadoop-3.2.4]$ yarn logs -applicationId application_1612534544195_0001 -containerId container_1612577921195_0001_01_000001

1.5.3 yarn applicationattempt查看尝试运行的任务

(1)列出所有Application尝试的列表:yarn applicationattempt -list <ApplicationId>

[amo@hadoop102 hadoop-3.2.4]$ yarn applicationattempt -list application_1612577921195_0001
2024-03-27 23:19:11,195 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.10.103:8032
Total number of application attempts :1
         ApplicationAttempt-Id	               State	                    AM-Container-Id	                       Tracking-URL
appattempt_1612577921195_0001_000001	            FINISHED	container_1612577921195_0001_01_000001	http://hadoop103:8088/proxy/application_1612577921195_0001/

(2)打印ApplicationAttemp状态:yarn applicationattempt -status <ApplicationAttemptId>

[amo@hadoop102 hadoop-3.2.4]$ yarn applicationattempt -status appattempt_1612577921195_0001_000001
2024-03-27 23:19:25,896 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.10.103:8032
Application Attempt Report : 
	ApplicationAttempt-Id : appattempt_1612577921195_0001_000001
	State : FINISHED
	AMContainer : container_1612577921195_0001_01_000001
	Tracking-URL : http://hadoop103:8088/proxy/application_1612577921195_0001/
	RPC Port : 34756
	AM Host : hadoop104
	Diagnostics :

1.5.4 yarn container查看容器

(1)列出所有Container:yarn container -list <ApplicationAttemptId>

[amo@hadoop102 hadoop-3.2.4]$ yarn container -list appattempt_1612577921195_0001_000001
2024-03-27 23:30:11,396 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.10.103:8032
Total number of containers :0
                  Container-Id	          Start Time	         Finish Time	               State	                Host	   Node Http Address	

(2)打印Container状态: yarn container -status <ContainerId>

[amo@hadoop102 hadoop-3.2.4]$ yarn container -status container_1612577921195_0001_01_000001
2024-03-27 23:25:39,554 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.10.103:8032
Container with id 'container_1612577921195_0001_01_000001' doesn't exist in RM or Timeline Server.
注:只有在任务跑的途中才能看到container的状态

1.5.5 yarn node查看节点状态

列出所有节点:yarn node -list -all

[amo@hadoop102 hadoop-3.2.4]$ yarn node -list -all
2024-03-27 23:31:36,962 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.10.103:8032
Total Nodes:3
         Node-Id	     Node-State	Node-Http-Address	Number-of-Running-Containers
 hadoop103:38168	        RUNNING	   hadoop103:8042	                           0
 hadoop102:42012	        RUNNING	   hadoop102:8042	                           0
 hadoop104:39702	        RUNNING	   hadoop104:8042	                           0

1.5.6 yarn rmadmin更新配置

加载队列配置:yarn rmadmin -refreshQueues

[amo@hadoop102 hadoop-3.2.4]$ yarn rmadmin -refreshQueues
2024-03-27 23:22:11,331 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.10.103:8033

1.5.7 yarn queue查看队列

打印队列信息:yarn queue -status <QueueName>

[amo@hadoop102 hadoop-3.2.4]$ yarn queue -status default
2024-03-27 23:27:51,403 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.10.103:8032
Queue Information : 
Queue Name : default
	State : RUNNING
	Capacity : 100.0%
	Current Capacity : .0%
	Maximum Capacity : 100.0%
	Default Node Label expression : <DEFAULT_PARTITION>
	Accessible Node Labels : *
	Preemption : disabled
	Intra-queue Preemption : disabled

写在最后

YARN的出现极大地提高了Hadoop集群的资源利用率和任务调度效率。通过统一的资源管理和调度,YARN能够实现多个应用程序在同一个集群上的并行运行,避免了资源浪费和竞争。同时,YARN还支持动态资源分配,能够根据任务的需求和集群的负载情况动态调整资源的分配,提高了集群的响应速度和处理能力。

此外,YARN还提供了丰富的API和插件机制,使得开发者可以根据自己的需求定制资源管理和任务调度的策略,进一步扩展了Hadoop生态系统的功能和应用场景。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用VS统计自己的代码量?

历经漫漫编程之路&#xff0c;此刻我们不妨回首细数&#xff0c;那已累积的无数行代码&#xff0c;它们如同一串串无声的脚印&#xff0c;记载着我们默默耕耘的点滴时光。每一行代码都是平凡努力的印记&#xff0c;见证了我们的执着与付出&#xff0c;也塑造了今天的我们。让这…

Pandas数据清洗

数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、数据错误或数据重复的情况&#xff0c;如果要使数据分析更加准确&#xff0c;就需要对这些没有用的数据进行处理。 这里使用的测试数据是clean-data.csv&#xff0c;如图3-10所示。这个表…

【二叉树】Leetcode 108. 将有序数组转换为二叉搜索树【简单】

将有序数组转换为二叉搜索树 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡二叉搜索树。 示例1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] 输出&#xff1a;[0,-3,9,-10,null,5] 解释&#xff1a;[0,-10,5,null…

npm淘宝镜像源更新

目录 前情提要&#xff1a; 背景&#xff1a; 镜像源更新&#xff1a; 清楚缓存&#xff1a; 直接切换镜像源&#xff1a; 补充&#xff1a; 错误解释&#xff1a; 解决方法&#xff1a; 前情提要&#xff1a; 2024 /1 /22 &#xff0c;registry.npm.taobao.org淘宝镜像源的SSL…

基于java实现的高校二手交易平台

开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclip…

【uniapp】uniapp实现免密登录

文章目录 一、概要二、整体架构流程三、技术名词解释四 、技术细节1.存取token有效期&#xff1f;2.使用setStorageSync而不使用setStorage&#xff1f;3.使用onLaunch而不使用全局路由&#xff1f; 一、概要 打开一个网页或小程序的时候&#xff0c;我们有时候会自动进入主页…

【JAVA】多态

去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同 的状 态。 比如吃东西 猫吃的是猫粮&#xff0c;狗吃的是狗粮 多态实现条件 1. 必须在继承体系下 2. 子类必须要对父类中方法进行重写 3. 通过父类的引用调用重写的方法 多态体现&#xff1a;在代码运行时…

【Spring Boot 源码学习】共享 MetadataReaderFactory 上下文初始化器

《Spring Boot 源码学习系列》 共享 MetadataReaderFactory 上下文初始化器 一、引言二、往期内容三、主要内容3.1 源码初识3.2 CachingMetadataReaderFactoryPostProcessor3.2.1 register 方法3.2.1 configureConfigurationClassPostProcessor 方法 3.3 ConfigurationClassPos…

uniApp使用XR-Frame创建3D场景(4)金属度和粗糙度

上一篇讲解了如何在uniApp中创建xr-frame子组件并创建简单的3D场景。 这一篇我们讲解xr-frame中关于mesh网格材质的金属度和粗糙度的设置。 1.先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"> <xr-node visible"{…

面试知识汇总——JVM内存模型

JVM内存模型 线程独占&#xff1a;栈和本地方法栈、程序计数器&#xff1b;线程共享的是堆和方法区 栈&#xff1a;又叫方法栈&#xff0c;线程私有&#xff0c;线程执行方法都会创建一个栈阵&#xff0c;用来储存局部变量表&#xff0c;调用方法执行入栈&#xff0c;方法返回…

AJAX(二):axios 和 fetch函数发送AJAX请求、同源策略、 jsonp、CORS

一、各种发送AJAX请求 jquery基于回调函数&#xff0c;axios基于promise 1.axios发送AJAX请求!!! axios (v1.5.0) - Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 Node.js 中。 | BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务 服务器&#xff1a; app.…

Linux 系统 docker搭建LNMP环境

1、安装nginx docker pull nginx (默认安装的是最新版本) 2、运行nginx docker run --name nginx -p 80:80 -d nginx:latest 备注&#xff1a;--name nginx 表示容器名为 nginx -d 表示后台运行 -p 80:80 表示把本地80端口绑定到Nginx服务端的 80端口 nginx:lates…

c++|STL简介+string类的使用(常用接口)

目录 一、STL简介 1.1STL的版本 1.2STL六大组件 1.3STL的重要性及缺陷 二、string类简介 2.1string类了解 2.2为什么学习string类 三、string类使用(常用接口) 3.1string类的成员函数 3.1.1构造函数 3.1.2析构函数 3.1.3“”运算符重载函数 3.2迭代器(iterator)s…

免费使用Claude 3!这个平台集成了所有主流的AI聊天机器人!Poe AI 2024最新版教程

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

QT中的服务器与客户端

一、前言 本文主要讲讲QT中服务器与客户端的使用方法&#xff0c;QT已经封装好了&#xff0c;调用相应类直接访问即可。本文以QT中的QT中的TCP为例子&#xff0c;讲下使用方法以及线程中使用。 二、正文 2.1 Sever的使用方法 2.1.1 思路 QT中Sever使用的时候大致步骤为&…

《论文阅读》PAGE:一个用于会话情绪原因蕴含基于位置感知的图模型 ICASSP 2023

《论文阅读》PAGE&#xff1a;一个用于会话情绪原因蕴含基于位置感知的图模型 ICASSP 2023 前言 简介任务定义模型构架Utterances Encoding with EmotionPosition-aware GraphCausal Classifier实验结果 前言 亲身阅读感受分享&#xff0c;细节画图解释&#xff0c;再也不用担…

【QQ版】QQ群短剧机器人源码 全网短剧机器人插件

内容目录 一、详细介绍二、效果展示2.效果图展示 三、学习资料下载 一、详细介绍 QQ版本可以兼容两个框架&#xff08;HTQQ&#xff0c;MYQQ这两个的vip版也可以使用) 支持私聊与群聊&#xff0c;命令是 搜剧影视关键词 如果无法搜索到影视资源&#xff0c;请使用下方命令&…

【LVGL-键盘部件,实体按键控制】

LVGL-二维码库 ■ LVGL-键盘部件■ 示例一&#xff1a;键盘弹窗提示■ 示例二&#xff1a;设置键盘模式■ 综合示例&#xff1a; ■ LVGL-实体按键控制■ 简介 ■ LVGL-键盘部件 ■ 示例一&#xff1a;键盘弹窗提示 lv_keyboard_set_popovers(kb,true);■ 示例二&#xff1a;设…

Spring boot2.X 配置https

背景 最近项目组说要将 http 升级成 https 访问&#xff0c;证书也给到我们这边了&#xff0c;当然我们这边用的是个二级域名&#xff0c;采用的是通配符访问的方式&#xff0c;比如一级域名是这样&#xff08;com.chinaunicom.cn&#xff09;&#xff0c;我们的则是&#xff0…

java数据结构与算法刷题-----LeetCode744. 寻找比目标字母大的最小字母

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 二分查找 二分查找 解题思路&#xff1a;时间复杂度O( l o g 2 …