在MapReduce1.0中,我们都知道也存在和HDFS一样的单点故障问题,主要是JobTracker既负责资源管理,又负责任务分配。

  Yarn中可以添加多种计算框架,Hadoop,Spark,MapReduce,不同的计算框架在处理不同的任务时,资源利用率可能处于互补阶段,有利于提高整个集群的资源利用率。

  同时Yarn提供了一种共享集群的模式,随着数据量的暴增,跨集群间的数据移动,需要花费更长的时间,且硬件成本会增大,共享集群模式可以让多种框架共享数据和硬件资源。

  Yarn基本架构

  

  整个的调度流程为:

  1.应用程序通client类向ResourceManager提交程序,Application运行所需要的入口类,出口类,运行的命令,运行所需要的cpu资源和内存资源,jar包资源。

  2.ResourceManager通过内部的调度器,去集群中寻找资源,找到资源后与NodeManager进行通信,去启动相应的ApplicationMaster,AM会按照事先的规划将任务切分为许多的task任务。

  3.ApplicationMaster之后向ResourceManager进行申请资源,RM会将资源进行动态的分配。

  4.ApplicationMaster获得资源后会再将资源进一步分配给内部的task.

  5.之后,ApplicationMaster会向NodeManager进行请求,让NM给启动起来Task,NM会把Task封装到Container中允许。

  ResourceManager

  整个集群只有一个,负责集群资源的统一管理和调度

  处理客户端请求

  启动监控ApplicationMaster

  监控NodeManager

  资源分配与调度

  NodeManager

  整个集群存在多个,负责单节点资源管理与使用

  处理来自ResourceManager的命令

  处理来自ApplicationMaster的命令

  ApplicationMaster

  每一个应用有一个,负责应用程序的管理

  数据切分,申请资源,任务监控,任务容错

  Container

  对任务环境的抽象

  Yarn的容错性

  ResourceManager存在单点故障,基于Zookeeper实现HA,通常任务失败后,RM将失败的任务告诉AM,RM负责任务的重启,AM来决定如何处理失败的任务。RMAppMaster会保存已经运行完成的Task,重启后无需重新运行。

  Yarn资源调度框架与调度器

  Yarn采用的双层调度框架,RM将资源分配给AM,AM再将资源进一步分配给Task,资源不够时会为TASK预留,直到资源充足。在Hadoop1.0中我们分配资源通过slot实现,但是在Yarn中,直接分配资源。

  资源调度器有:FIFO,Fair scheduler,Capacity scheduler

  Yarn支持CPU和内存两种资源隔离,内存时决定生死的资源,CPU时影响快满的资源,内存隔离采用的是基于线程监控和基于Cgroup的方案。

  Tez

  Tez俗称DAG计算,多个计算作业之间存在依赖关系,并形成一个依赖关系的有向图。

  Tez是运行在Yarn上的DAG,动态的生成计算的关系流。

  

  如上图左所示的Top K问题,第一个Mapreduce实现wordcount的功能,第二个Mapreduce只用使用Reduce实现排序的问题,但是在Mapreduce中必须创建两个MapReduce任务,但是在Tez优化后,可以直接再第一个reduce后,不进行输出,直接输出到第二个reduce中,优化了Mapreduce.

  上图中右为一个HiveQL实现的MapReduce,mapreduce为其创建了4个mapreduce任务,使用Tez可以只使用一个Mapreduce任务。

  Tez on Yarn和,mapreduce on Yarn上的作业的流程基本一样。

  Tez的优化技术

  产生一个Mapreduce任务就提交,影响任务的效率,Tez的优化策略是创建一个ApplicationMaster的缓存池,作业提交到AMppplserver中,预先启动若干ApplicationMaster形成AM缓冲池。

  同时ApplicationMaster启动的时候也可以预先启动几个container,做为容器的缓冲池。

  此外ApplicationMaster运行完成后,不会马上注销其下的container,而是将其预先分配给正要运行的任务。

  Tez的好处就是避免产生较多的Mapreduce任务,产生不必要的网络和磁盘IO.

  Strom

  Strom是实时处理永不停止的任务,像流水一样不断的处理任务。

  

  Strom非常类似与MapReduce1.0的架构,如上图所示。

  

  但是其任务的调度的流程与Mapreduce的不一样。

  主要的区别是Strom client可以直接操作 Strom ApplicationMaster

  Spark

  spark克服了MapReduce在迭代式计算和交互式计算方面的不足。

  spark中引入了RDD,可以并行计算的数据集合,能够被缓存到能存和硬盘中。

  spark on Yarn 和MapReduce on Yarn 基本上类似

  MapReduce2.0和Yarn

  MR运行需要进行任务管理和资源管理调度,Yarn只是负责资源管理调度。Mapreduce只是运行在Yarn上的应用。

  MapReduce2.0包括Yarn 和MRMapreduce,所以说Yarn是从MapReudce中独立出来的一个模块。但是现在Yarn已经成为多种计算框架的资源管理器。

  MapReduce1.0与MapReduce2.0的区别

  MapReduce1.0是可以直接运行的linux系统上的,因为其自带了JobTracker服务和TaskTracker服务,它们可以自己进行资源管理与任务的分配。

  MapReduce2.0中mapreduce是只有任务管理,所以其必须运行在Yarn上进行资源的调度。

Yarn资源调度过程详细的更多相关文章

  1. YARN资源调度器

    YARN资源调度器 转载请注明出处:http://www.cnblogs.com/BYRans/ 概述 集群资源是非常有限的,在多用户.多任务环境下,需要有一个协调者,来保证在有限资源或业务约束下有序 ...

  2. 第1节 yarn:13、yarn资源调度的介绍

    Yarn资源调度 yarn集群的监控管理界面: http://192.168.52.100:8088/cluster jobHistoryServer查看界面: http://192.168.52.1 ...

  3. [大数据之Yarn]——资源调度浅学

    在hadoop生态越来越完善的背景下,集群多用户租用的场景变得越来越普遍,多用户任务下的资源调度就显得十分关键了.比如,一个公司拥有一个几十个节点的hadoop集群,a项目组要进行一个计算任务,b项目 ...

  4. MyEclipse10.0的破解过程详细及图解

    MyEclipse10.0的破解过程详细图解 准备阶段 : 1. 破解软件(网上有下载) 2. JDK软件(免费软件) 开始破解: 1. 关闭MyEclipse 10.0 2. 安装 JDK 然后解压 ...

  5. Yarn 资源调度框架

    Yarn 资源调度框架    实现对资源的细粒度封装(cpu,内存,带宽)    此外,还可以通过yarn协调多种不同计算框架(MR,Spark)    概述        Apache Hadoop ...

  6. Hadoop学习之路(8)Yarn资源调度系统详解

    文章目录 1.Yarn介绍 2.Yarn架构 2.1 .ResourceManager 2.2 .ApplicationMaster 2.3 .NodeManager 2.4 .Container 2 ...

  7. Yarn之ResourceManager详细分析

    一.概述     本文将介绍ResourceManager在Yarn中的功能作用,从更细的粒度分析RM内部组成的各个组件功能和他们相互的交互方式. 二.ResourceManager的交互协议与基本职 ...

  8. spark on yarn 资源调度(cdh为例)

    一.CPU配置: ApplicationMaster 虚拟 CPU内核 yarn.app.mapreduce.am.resource.cpu-vcores ApplicationMaster占用的cp ...

  9. Hadoop on Yarn 各组件详细原理

    运行在独立的节点上的ResourceManager和NodeManager一起组成了yarn的核心,构建了整个平台.ApplicationMaster和相应的container一起组成了一个Yarn的 ...

随机推荐

  1. Python - 3.6 学习第一天

    开始之前 基础示例 Python语法基础,python语法比较简单,采用缩紧方式. # print absolute value of a integer a = 100 if a >= 0: ...

  2. js对字符串进行加密和解密方法!

    在做一些微信小程序,或混合 app 的时候,或者是考虑到一些 JS 数据安全的问题.可能会使用到 JS 对用户信息进行缓存. 例如在开发:微信小程序对用户进行加密缓存,开发混合APP对用户信息进行加密 ...

  3. Introduction to Structured Data json的2种形式 JAVA解析JSON数据 - JsonArray JsonObject

    https://developers.google.com/search/docs/guides/intro-structured-data Structured data refers to kin ...

  4. ETL__pentaho__SPOON_PDI

    Pentaho Data Integration (PDI, also called Kettle),是pentaho的etl工具.虽然etl工具一般都用在数据仓库环境中,可是,PDI还是可以做以下事 ...

  5. float和double

    Java中,使用Float.floatToRawIntBits()函数获得一个单精度浮点数的IEEE 754 表示,例如: float fNumber = -5; //获得一个单精度浮点数的IEEE ...

  6. Django - ORM - 进阶

    一.多表操作 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是 ...

  7. rbac - 初识

    一.rbac 权限组件 1 项目与应用 一个项目,可以有多个应用 一个应用,可以在多个项目下 前提:应用是组件!! 2 什么是权限? 一个包含正则表达式url就是一个权限 who what how - ...

  8. 【Python】如何取到input中的value值?

    练习:取到下方链接下所有海贼王的下载链接. # coding=utf-8 from selenium import webdriver from time import sleep import ke ...

  9. MySQL和MSSQL差异(增量)备份的原理

    MySQL和MSSQL差异(增量)备份的原理 对于真正的增量备份来说,只需要记录当前每页最后的检查点的LSN,如果大于之前全备时的LSN,则备份该页面,否则不用备份 这大大加快了备份速度和恢复时间,同 ...

  10. [css]浮动造成的影响

    浮动造成的影响: 子元素浮动,父元素无法被撑出高了. 如果要给父元素做通栏background? 如果两个box的子元素都浮动,且希望两个box分行显示? box1 box2 box3: float: ...