前言

几天前和大哥说起了Yarn,大哥问我,你知道Yarn里面怎么进行资源的动态分配回收的吗?我和诚实,说不知道,然后就有了这个系列博文。不同版本的hadoop版本对应的yarn文档会有差别,本文中选择的是Hadoop 3.3;废话不多说,咱们直接开始吧!

架构

YARN的基本思想是将资源管理和作业调度/监视的功能拆分为单独的守护程序。 这个想法是拥有一个全局的ResourceManager(RM)和每个应用程序的ApplicationMaster(AM)。 应用程序可以是单个作业,也可以是作业的DAG。

ResourceManager和NodeManager构成数据计算框架。 ResourceManager是在系统中所有应用程序之间仲裁资源的最终权限。 NodeManager是每台机器的框架代理,负责容器,监视其资源使用情况(cpu,内存,磁盘,网络),并将其报告给ResourceManager / Scheduler。

实际上,每个应用程序的ApplicationMaster是特定于框架的库,其任务是与来自ResourceManager的资源进行协商,并与NodeManager一起执行和监视任务。

ResourceManager具有两个主要组件:Scheduler和ApplicationsManager。

Scheduler负责将资源分配给各种正在运行的应用程序,但要遵循常见的容量,队列等约束。Scheduler是纯粹的调度器,因为它对应用程序的状态不执行任何监视或跟踪。此外,它也不保证由于应用程序故障或硬件故障而重新启动失败的任务。Scheduler根据应用程序的资源需求执行调度功能;它基于资源容器(Container)的抽象概念来做到这一点,该容器包含诸如内存,cpu,磁盘,网络等元素。

Scheduler具有可插拔策略,该策略负责在各种队列,应用程序等之间分配群集资源。例如CapacityScheduler和FairScheduler这些Scheduler都支持可插拔。

ApplicationsManager负责接受作业提交,协调第一个容器,该容器用于执行应用程序特定的ApplicationMaster,同时提供在发生故障时重新启动ApplicationMaster容器的服务。每个应用程序ApplicationMaster负责与Scheduler协调适当的资源容器,跟踪其状态并监视进度。

hadoop-2.x中的MapReduce保持与以前的稳定版本(hadoop-1.x)的API兼容性。这意味着仅通过重新编译,所有MapReduce作业仍应在YARN上保持不变。

YARN通过ReservationSystem支持资源保留的概念,ReservationSystem是一个组件,该组件可以让用户指定资源永久和临时限制(例如,截止日期)的配置文件,并保留资源以确保重要任务的按预期执行。ReservationSystem可以长期跟踪资源,执行保留的准入控制,并动态指示底层调度器确保保留的资源是充足。

为了将YARN扩展到成千上万个节点,YARN通过YARN Federation功能支持联合的概念。Federation允许将多个YARN(子)集群透明地连接在一起,并使它们看起来像一个单一的集群。这可以用于实现更大的规模,和允许将多个独立的群集一起用于执行大的作业,或用于具有全部权限的租户。

参考链接

yarn官网

一个系列搞懂YARN(1)——Yarn架构的更多相关文章

  1. 一个注解搞懂 Sentinel,@SentinelResource 总结

    在前面的博客中,我给大家演示了使用 @SentinelResource 定义资源完成限流的例子, 下面就从源码解析开始,看下SentinelResource是如何实现限流的,以及@SentinelRe ...

  2. 一文带你搞懂 Kafka 的系统架构(深度好文,值得收藏)

    Kafka 简介 Kafka 是一种高吞吐.分布式.基于发布和订阅模型的消息系统,最初是由 LinkedIn 公司采用 Scala 和 java 开发的开源流处理软件平台,目前是 Apache 的开源 ...

  3. 一个故事搞懂Java并发编程

    最近在给别人讲解Java并发编程面试考点时,为了解释锁对象这个概念,想了一个形象的故事.后来慢慢发现这个故事似乎能讲解Java并发编程中好多核心概念,于是完善起来形成了了这篇文章.大家先忘记并发编程, ...

  4. ERP 到底是什么? 一则故事搞懂ERP

    你知道什么是ERP? ERP是什么? 你知道什么是ERP吗? (通俗易懂版) 一个故事搞懂“ERP” 一天中午,丈夫在外给家里打电话:“亲爱的老婆,晚上我想带几个同事回家吃饭可以吗?”(订货意向) 妻 ...

  5. 一个例子搞清楚Java程序执行顺序

    当我们new一个GirlFriend时,我们都做了什么? 一个例子搞懂Java程序运行顺序 public class Girl { Person person = new Person("G ...

  6. 彻底搞懂 etcd 系列文章(三):etcd 集群运维部署

    0 专辑概述 etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管.etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册与发现,还可以作为 key-value 存储的中间件 ...

  7. 彻底搞懂 etcd 系列文章(二):etcd 的多种安装姿势

    0 专辑概述 etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管.etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册与发现,还可以作为 key-value 存储的中间件 ...

  8. 彻底搞懂 etcd 系列文章(一):初识 etcd

    0 专辑概述 etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管.etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册与发现,还可以作为 key-value 存储的中间件 ...

  9. java线程间通信:一个小Demo完全搞懂

    版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...

随机推荐

  1. 一文读懂 .NET 中的高性能队列 Channel

    介绍 System.Threading.Channels 是.NET Core 3.0 后推出的新的集合类型, 具有异步API,高性能,线程安全等特点,它可以用来做消息队列,进行数据的生产和消费, 公 ...

  2. YAOI Round #3 题解

    前言 比赛链接: Div.1 : http://47.110.12.131:9016/contest/7 Div.2 : http://47.110.12.131:9016/contest/8 Div ...

  3. webdriver xpath

    aa=wd.find_elements_by_xpath('//a') for a in aa: print(a.text) #显示所有A标签中文本 aa=wd.find_elements_by_xp ...

  4. C语言:char[]操作

    C语言中char[]的操作函数1.赋值操作在C语言中,char型数组是不可以直接赋值的.例如在如下的代码中,会得到错误: char c1[20] = "women";char c2 ...

  5. SQL USE语句(选择数据库)

    对于大型的软件系统,会存在多个数据库,用来存储不同的数据,那么我们在开始操作之前,需要选择一个需要操作的数据库,进行后续数据的增.删.改.查工作. SQL USE语句用于选择SQL模式中的任何现有数据 ...

  6. 使用jquery的on方法注册事件遇到的坑

    1,使用on注册事件 $(selector).on(event,childSelector,data,function) 2,$(selector)中的selector可以是document,那么意味 ...

  7. mybatis-4-Mapper映射文件

    Mapper映射文件 映射文件的Mapper标签包含标签 1.CDUS增删改查 2.参数处理 (1)直接传入参数 单个参数 //传入当个参数 public Employee getEmployeeBy ...

  8. ThinkPHP5 5.0.22/5.1.29 远程代码执行漏洞

    http://192.168.49.2:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_ar ...

  9. 用AutoHotkey的热字串功能启动常用电脑程序软件 Version 2 Build 20191214

    ; 用AutoHotkey的热字串功能启动常用电脑程序软件 Version 2 Build 20191214 ; 电脑上的快捷键太多了,记都记不住,容易冲突和搞混,所以做了个热字串启动; 用法:运行此 ...

  10. 白话JavaScript原型链和继承

    原型基础 每个函数都有一个prototype属性,指向函数的原型对象 每个对象都一个私有属性 __proto__, 默认指向其构造函数的prototype 在JS中所有函数都是Function构造出来 ...