YARN总结笔记简简介

本文详细介绍了Apache Hadoop YARN的架构、组件、资源管理及调度策略,包括ResourceManager、NodeManager、ApplicationMaster的角色,以及YARN的高可用性和容错机制。重点讨论了容量调度器和公平调度器的特性,如何实现资源的公平共享和动态调整。
摘要由CSDN通过智能技术生成

YARN概述
Apache Hadoop YARN 是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,
它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

YARN组件架构
ResourceManager 负责集群    资源统一管理和计算框架管理,主要包括调度与应用程序管理。
调度器:根据容量、队列等限制条件,将系统中的资源分配给各个正在运行的应用程序。
应用程序管理器:负责管理整个系统中的所有应用程序,包括应用程序提交,与调度器协商资源,启动并监控AppMaster运行状态。
NodeManager节点资源管理监控和容器管理,RM是系统中将资源分配给各个应用的最终决策者。
AppMaster各种计算框架的实现(例如MRAppMaster)向ResourceManager申请资源,通知NodeManager管理相应的资源。
Container YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU等。

首先client提交任务,ResourceManager接收到任务,然后启动并监控起来的第一个Container,也就是App Mstr。
App Mstr通知nodemanager管理资源并启动其他container。
任务最终是运行在Container当中。

YARN HA方案
YARN中的ResourceManager负责整个集群的资源管理和任务调度,YARN高可用性方案通过引入冗余的ResourceManager节点的方式,
解决了ResourceManager 单点故障问题。
是通过设置一组Active/Standby的ResourceManager节点来实现的。

YARN APPMaster容错机制
在YARN中,ApplicationMaster(AM)与其他Container类似也运行在NodeManager上。AM可能会由于多种原因崩溃、退出或关闭。如果AM停止运行,ResourceManager(RM)会关闭ApplicationAttempt中管理的所有Container,包括当前任务在NodeManager(NM)上正在运行的所有Container。RM会在另一计算节点上启动新的ApplicationAttempt。
不同类型的应用希望以多种方式处理AM重新启动的事件。MapReduce类应用目标是不丢失任务状态,但也能允许一部分的状态损失。但是对于长周期的服务而言,用户并不希望仅仅由于AM的故障而导致整个服务停止运行。
YARN支持在新的ApplicationAttempt启动时,保留之前Container的状态,因此运行中的作业可以继续无故障的运行。

YARN的资源管理
YARN支持内存和CPU两种资源类型的管理和分配。
NodeManager可分配的内存和CPU的数量可以通过配置选项设置

资源分配
调度器维护一群队列的信息。用户可以向一个或者多个队列提交应用。
每次NM心跳的时候,调度器根据一定的规则选择一个队列,再在队列上选择一个应用,尝试在这个应用上分配资源。
调度器会优先匹配本地资源的申请请求,其次是同机架的,最后是任意机器的。
当任务提交上来,首先会声明提交到哪个队列上,调度器会分配队列,如果没有指定则任务运行在默认队列。
队列是封装了集群资源容量的资源集合,占用集群的百分比例资源。
队列分为父队列,子队列,任务最终是运行在子队列上的。父队列可以有多个子队列。
调度器选择队列上的应用,然后根据一些算法给应用分配资源。

容量调度器
介绍
容量调度器使得Hadoop应用能够共享的、多用户的、操作简便的运行在集群上,同时最大化集群的吞吐量和利用率。
容量调度器以队列为单位划分资源,每个队列都有资源使用的下限和上限。每个用户可以设定资源使用上限。
管理员可以约束单个队列、用户或作业的资源使用。支持作业优先级,但不支持资源抢占。

特点
容量保证:管理员可为每个队列设置资源最低保证和资源使用上限,所有提交到该队列的应用程序共享这些资源。
灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,当该队列有新的应用程序提交,则其他队列释放的资源会归还给该队列。
支持优先级:队列支持任务优先级调度(默认是FIFO)。
多重租赁:支持多用户共享集群和多应用程序同时运行。为防止单个应用程序、用户或者队列独占集群资源,管理员可为之增加多重约束。
动态更新配置文件:管理员可根据需要动态修改配置参数,以实现在线集群管理。

任务选择策略
先按照下面的三种策略选择队列==
资源利用量最低的队列优先
最小队列层级优先
资源回收请求队列优先
然后按照以下策略选择该队列中一个任务==
按照任务优先级和提交时间顺序选择,同时考虑用户资源量限制和内存限制。

队列资源限制
由于存在资源共享,因此一个队列使用的资源可能超过其容量,而最大资源使用量可通过参数限制。
如果某个队列任务较少,可将剩余资源共享给其他队列。

yarn也能对用户和任务限制,通过dashboard中的“租户管理”>“动态资源计划”>“队列配置”进行配置。

华为增强特性
YARN动态内存管理
可用来优化NodeManager中Containers的内存利用率。任务在运行过程中可能产生多个Container。
YARN基于标签调度

FIFO-先进先出调度器
  YRAN默认情况下使用的是该调度器,即所有的应用程序都是按照提交的顺序来执行的,这些应用程序都放在一个队列中,只有在前面的一个任务执行完成之后,才可以执行后面的任务,依次执行

capacity-scheduler-容量调度器
本质上,容量调度器允许用户或组织(使用队列自行定义)为每个用户或组织模拟出一个使用FIFO调度策略的独立MapReduce集群。相比之下,公平调度器(实际上也支持作业池内的FIFO调度,使其类似于容量调度器)强制池内公平共享,使运行的作业共享池内的资源。

Fair-scheduler-公平调度器
  所谓的公平调度器指的是,旨在让每个用户公平的共享集群的能力。如果是只有一个作业在运行的话,就会得到集群中所有的资源。随着提交的作业越来越多,限制的任务槽会以“让每个用户公平共享集群”这种方式进行分配。某个用户的好事短的作业将在合理的时间内完成,即便另一个用户的长时间作业正在运行而且还在运行过程中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值