本文源码:GitHub·点这里 || GitEE·点这里

一、Yarn基本结构

Hadoop三大核心组件:分布式文件系统HDFS、分布式计算框架MapReduce,分布式集群资源调度框架Yarn。Yarn并不是在Hadoop初期就有的,是在Hadoop升级发展才诞生的,典型的Master-Slave架构。

Yarn包括两个主要进程:资源管理器Resource-Manager,节点管理器Node-Manager。

资源管理器

  • 通常部署在独立的服务器,处理客户端请求;
  • 处理集群中的资源分配和调度管理;

节点管理器

  • 管理当前节点上的资源;
  • 执行处理各种具体的命令;
  • 监视节点资源情况,并上报资源管理器;

ApplicationMaster

  • 提供容错能力,切割数据;
  • 给应用程序申请资源并分配任务;

Container

  • Yarn中的一个动态资源分配的概念;
  • 容器包含了一定量的内存、CPU等计算资源;
  • 由NodeManager进程启动和管理;

二、基本执行流程

  • 向Yarn提交MapReduce应用程序程序进行调度;
  • RM组件返回资源提交路径和ApplicationId;
  • RM进程NM进程通信,根据集群资源分配容器;
  • 将MRAppMaster分发到上面分配的容器上面;
  • 运行所需资源提交到HDFS上申请运行MRAppMaster;
  • RM经过上述操作把客户端请求转换为Task任务;
  • 容器中运行的就是Map或者Reduce任务;
  • 任务在运行期间和MRAppMaster通信上报状态;
  • 任务执行结束后进程注销并且释放容器资源;

MapReduce应用开发遵循Yarn规范的MapReduceApplicationMaster,所以可以在Yarn上运行,其它计算框架如果也遵守该规范,这样就实现资源的统一调度管理。

三、资源调度器

调度器的基本作用就是根据节点资源的使用情况和作业需求,将任务调度到各个节点上执行。单理解任务队列的话关键的因素有如下几个:进出方式,优先级,容量等。

Hadoop作业调度器主要有三种:FIFO、CapacityScheduler和FairScheduler,默认的资源调度器是CapacityScheduler。

先进先出调度器

FIFO一种批处理调度器,调度策略先按照作业的优先级高低,再按照到达时间的先后选择被执行的作业。

容量调度器

CapacityScheduler支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略,计算队列中正在运行的任务书和计算资源的比值,选中比值小相对空闲的队列,然后安装作业优先级和提交时间的排序。为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。

例如上面图例,假设100个slot分为三个队列(ABC),按照如下分配规则:队列A给20%的资源,队列B给50%的资源,队列C给30%的资源;三个队列都按照任务的先后顺序依次执行,上面的job11、job21、job31是最先运行,也是并行运行。

公平调度器

和容量调度器原理类似,支持多队列多用户,每个队列中的资源量可以配置,同一队列中的作业公平共享队列中所有资源。

比如有三个队列(ABC),每个队列中的job按照优先级分配资源,优先级越高分配的资源越多,但是每个job都会分配到资源以确保公平。在资源有限的情况下,每个job理想情况下获得的计算资源与实际获得的计算资源存在一种差距,,这个差距就叫做缺额。在同一个队列中,job的资源缺额越大,越先获得资源优先执行,作业是按照缺额的高低来先后执行的。

四、源代码地址

GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent

推荐阅读:编程体系整理

序号 项目名称 GitHub地址 GitEE地址 推荐指数
01 Java描述设计模式,算法,数据结构 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
02 Java基础、并发、面向对象、Web开发 GitHub·点这里 GitEE·点这里 ☆☆☆☆
03 SpringCloud微服务基础组件案例详解 GitHub·点这里 GitEE·点这里 ☆☆☆
04 SpringCloud微服务架构实战综合案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
05 SpringBoot框架基础应用入门到进阶 GitHub·点这里 GitEE·点这里 ☆☆☆☆
06 SpringBoot框架整合开发常用中间件 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
07 数据管理、分布式、架构设计基础案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
08 大数据系列、存储、组件、计算等框架 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆

Hadoop框架:Yarn基本结构和运行原理的更多相关文章

  1. Hadoop基础-Hdfs各个组件的运行原理介绍

    Hadoop基础-Hdfs各个组件的运行原理介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode工作原理(默认端口号:50070) 1>.什么是NameN ...

  2. 理解Web应用程序的代码结构和运行原理(3)

    1.理解Web应用程序的运行原理和机制 Web应用程序是基于浏览器/服务器模式(也称B/S架构)的应用程序,它开发完成后,需要部署到Web服务器上才能正常运行,与用户交互的客户端是网页浏览器. 浏览器 ...

  3. Jmeter组成结构及运行原理

    Jmeter结构主要组成要素包括:测试计划,线程组,采样器以及监听器.对于各部件的作用域关系如下图: Jmeter是纯Java程序,使用JVM,运行采用多线程完成,往往单台负载机由于机器配置有限,支持 ...

  4. 爬虫框架Scrapy 之(四) --- scrapy运行原理(管道)

    解析后返回可迭代对象 这个对象返回以后就会被爬虫重新接收,然后进行迭代 通过scrapy crawl budejie -o xx.josn/xx.xml/xx.csv 将迭代数据输出到json.xml ...

  5. 更快、更强——解析Hadoop新一代MapReduce框架Yarn(CSDN)

    摘要:本文介绍了Hadoop 自0.23.0版本后新的MapReduce框架(Yarn)原理.优势.运作机制和配置方法等:着重介绍新的Yarn框架相对于原框架的差异及改进. 编者按:对于业界的大数据存 ...

  6. hadoop MapReduce Yarn运行机制

    原 Hadoop MapReduce 框架的问题 原hadoop的MapReduce框架图 从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路: 首先用户程序 (JobClient) ...

  7. Hadoop 新 MapReduce 框架 Yarn 详解

    Hadoop 新 MapReduce 框架 Yarn 详解: http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/ Ap ...

  8. Flink 集群运行原理兼部署及Yarn运行模式深入剖析

    1 Flink的前世今生(生态很重要) 原文:https://blog.csdn.net/shenshouniu/article/details/84439459 很多人可能都是在 2015 年才听到 ...

  9. Hadoop 新 MapReduce 框架 Yarn 详解【转】

    [转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/] 简介: 本文介绍了 Hadoop 自 0.23.0 版本 ...

随机推荐

  1. 修改ssh的默认22端口,并使用scp的方法

    修改默认的22的ssh端口只需要修改 /etc/ssh/sshd_config 中的 port 字段为你想要的端口就可以了 以后用其他机器ssh登录这台机器只需要: ssh -p (port) (ip ...

  2. shell脚本快速入门----正则表达式

    一. "." 符号 (一个英文句号) 用于匹配换行符之外的任意一个字符 如 root 可用r..t来匹配 二. "*"符号 重复匹配前一个字符 如ab abc ...

  3. Linux 文本处理批量查找与替换

    # 搜索含有特定字符串在某个目录并打印出文件名grep -rl "www.baidu.com" /data* -r, --recursive like --directories= ...

  4. 吉他自学用Guitar Pro好不好?

    很多人心中都有一个吉他梦,可苦于没有坚持下来.其实一个人自学吉他过程是非常枯燥的.经常手上被磨得都是茧,但是也不清楚自己弹的到底对不对. 如果不跟着老师练习,那很有可能就走了歪路或者是无法长期坚持.所 ...

  5. 错误原因:因为desc是mysql里面的关键字

    SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check ...

  6. Sysbench对Mysql进行基准测试

    前言 1.基准测试(benchmarking)是性能测试的一种类型,强调的是对一类测试对象的某些性能指标进行定量的.可复现.可对比的测试. 进一步来理解,基准测试是在某个时候通过基准测试建立一个已知的 ...

  7. jmeter简单的压力测试

    Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好.相比LR来说操作简单方便,关键是免费,基于JAVA开发,所以需 ...

  8. win10下安装anaconda3+tensorflow

    安装了三天终于安装成功了,今天简单写下自己的安装步骤 1.下载可以在Anaconda3官网下载:https://www.anaconda.com/products/individual 也可以通过清华 ...

  9. oracle 流程控制句式

    --for loop declare val number(10):=0; begin for val in 0..10 loop dbms_output.put_line('val='||val); ...

  10. fist-冲刺第二天随笔

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...