Yarn资源调度过程详细
在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资源调度过程详细的更多相关文章
- YARN资源调度器
YARN资源调度器 转载请注明出处:http://www.cnblogs.com/BYRans/ 概述 集群资源是非常有限的,在多用户.多任务环境下,需要有一个协调者,来保证在有限资源或业务约束下有序 ...
- 第1节 yarn:13、yarn资源调度的介绍
Yarn资源调度 yarn集群的监控管理界面: http://192.168.52.100:8088/cluster jobHistoryServer查看界面: http://192.168.52.1 ...
- [大数据之Yarn]——资源调度浅学
在hadoop生态越来越完善的背景下,集群多用户租用的场景变得越来越普遍,多用户任务下的资源调度就显得十分关键了.比如,一个公司拥有一个几十个节点的hadoop集群,a项目组要进行一个计算任务,b项目 ...
- MyEclipse10.0的破解过程详细及图解
MyEclipse10.0的破解过程详细图解 准备阶段 : 1. 破解软件(网上有下载) 2. JDK软件(免费软件) 开始破解: 1. 关闭MyEclipse 10.0 2. 安装 JDK 然后解压 ...
- Yarn 资源调度框架
Yarn 资源调度框架 实现对资源的细粒度封装(cpu,内存,带宽) 此外,还可以通过yarn协调多种不同计算框架(MR,Spark) 概述 Apache Hadoop ...
- Hadoop学习之路(8)Yarn资源调度系统详解
文章目录 1.Yarn介绍 2.Yarn架构 2.1 .ResourceManager 2.2 .ApplicationMaster 2.3 .NodeManager 2.4 .Container 2 ...
- Yarn之ResourceManager详细分析
一.概述 本文将介绍ResourceManager在Yarn中的功能作用,从更细的粒度分析RM内部组成的各个组件功能和他们相互的交互方式. 二.ResourceManager的交互协议与基本职 ...
- spark on yarn 资源调度(cdh为例)
一.CPU配置: ApplicationMaster 虚拟 CPU内核 yarn.app.mapreduce.am.resource.cpu-vcores ApplicationMaster占用的cp ...
- Hadoop on Yarn 各组件详细原理
运行在独立的节点上的ResourceManager和NodeManager一起组成了yarn的核心,构建了整个平台.ApplicationMaster和相应的container一起组成了一个Yarn的 ...
随机推荐
- windows本地环境如何用wamp配置多域名绑定访问
https://jingyan.baidu.com/article/acf728fd5fcdadf8e510a3e5.html
- postgresql架构基础(转)-(1)
PostgreSQL使用一种客户端/服务器的模型.一次PostgreSQL会话由下列相关的进程(程序)组成: 一个服务器进程,它管理数据库文件.接受来自客户端应用与数据库的联接并且代表客户端在数据库上 ...
- 南京网络赛J-Sum【数论】
A square-free integer is an integer which is indivisible by any square number except 11. For example ...
- vs 2015
基于应用要求和要使用的语言选择所需工具. Xamarin for Visual Studio:针对所有设备的 C# 中的常用基本代码 Apache Cordova with Visual Studio ...
- Servlet + JSP 时代
Spring,Django,Rails,Express这些框架技术的出现都是为了解决什么问题,现在这些框架都应用在哪些方面? - 知乎 https://www.zhihu.com/question/2 ...
- 006-线程同步解决【ReentrantLock】
一.解决方案 004-线程同步问题引出.同步问题解决.死锁.生产者与消费者 通过以上文章可知,通过原子性AtomicLong .以及内部锁(synchronized)机制可以解决线程安全问题.以下是一 ...
- git-【十】忽略文件
1.在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置 ...
- POJ1523:SPF(无向连通图求割点)
题目:http://poj.org/problem?id=1523 题目解析: 注意题目输入输入,防止PE,题目就是求割点,并问割点将这个连通图分成了几个子图,算是模版题吧. #include < ...
- 数据挖掘-关联分析 Apriori算法和FP-growth 算法
•1.关联分析概念 关联分析是从大量数据中发现项集之间有趣的关联和相关联系. •定义:1.事务:每一条交易称为一个事务,如上图包含5个事务.2.项:交易的每一个物品称为一个项,例如豆奶,啤酒等. ...
- [华为]查找两个字符串a,b中的最长公共子
链接:https://www.nowcoder.com/questionTerminal/181a1a71c7574266ad07f9739f791506来源:牛客网 查找两个字符串a,b中的最长公共 ...