Yarn

1、概述
Yarn是一个资源调度平台,负责为运算程序提供服务器预算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序相当于运行于操作系统之上的应用程序

2、概念
1、Yarn并不清楚用户提交的程序的运行机制
2、Yarn只提供运算资源的调度(用户程序向Yarn申请资源,Yarn就负责分配资源)
3、Yarn中的主管角色叫ResourceManager
4、Yarn中具体提供运算资源的角色叫nodeManager
5、Yarn与用户程序完全解耦,Yarn上可以运行各种类型的分布式运算程序(MapReduce只是其中的一种)
6、Spark、flink,storm等运算框架都可以整合在Yarn上运行,只要在各自框架中有符合Yarn规范的资源请求机制即可
7、Yarn是一个通用的资源调度平台,企业中的各种运算集群都可以整理到一个物理集群上,提高资源利用率,方便数据共享

3、基本架构
1、ResourceManager
1、处理客户端请求
2、启动或监控ApplicationMaster
3、监控NodeManager
4、资源的分配与调度
2、ApplicationMaster
1、负责数据的切分
2、为应用程序申请资源并分配给内部的任务
3、任务的监控与容错
3、NodeManager
1、管理单个节点上的资源
2、处理来自ResourceManager的命令
3、处理来自ApplicationMaster
4、Container
1、对任务运行环境进行抽象,封装CPU、内存等多维度的资源以及环境变量、启动命令等任务运行相关的信息

4、工作机制
1、Mr程序提交到客户端所在节点
2、Yarnrunner向ResourceManager申请一个Application
3、RM将该应用程序的资源路径返回给Yarnrunner
4、该程序将运行所需的资源提交给HDFS上
5、程序资源提交完毕后,申请运行MRAppMaster
6、RM将用户的请求初始化成一个task
7、其中一个NodeManager领取到Task任务
8、该NodeManager创建容器Container,并产生MRAppMaster
9、Container从HDFS上拷贝资源到本地
10、MRAppMaster向RM申请运行MapTask容器
11、RM将运行MapTask任务分配给另外两个NodeManager,NodeManager分别领取任务并创建容器
12、MR向两个接受到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序
13、MRAppMaster向RM申请2个容器,运行ReduceTask
14、reduceTask向maptask获取相应的分区的数据
15、程序运行完毕后,MR会向RM注销自己

5、资源调度器
1、调度器分类
1、先进先出调度器FIFO
FIFO是Hadoop中默认的调度器,也是一种批处理调度器。它先按照作业的优先级高低,在按照到达时间的先后选择被执行的作业
2、容量调度器Capacity Scheduler
支持多个队列,每个队列可配置一定的资源量,每个队采用FIFO调度策略,为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源进行限定。
3、公平调度器Fair Scheduler
支持多队列多用户,每个队列中的资源量可以配置,同意队列中的作业公平共享队列中所有资源
2、调度器区别
1、FIFO调度器支持单队列。先进先出,生产环境不会使用
2、容量调度器,支持多队列,保证先进入的任务优先执行
3、公平调度器支持多队列,保证每个任务公平享有队列资源
3、生产环境下调度器的选择
1、大厂如果对并发度要求比较高,选择公平,要求服务器性能必须OK
2、中小公司,集群服务器资源不太充裕选择容量
4、在生产环境下如何创建队列
1、调度器默认就1个default队列,不能满足生产要求
2、按照框架:hive、spark、flink每个框架的任务放入指定的队列
3、按照业务模块:登录注册、购物车、下单、业务部门1.。。
5、创建多队列的好处
1、担心员工写递归死循环代码,把所有资源全部耗尽
2、实现任务的降级使用,特殊时期保证重要的任务队列资源充足

6、作业提交全过程
1、图解
1、作业提交过程之Yarn
2、作业提交过程之MapReduce
3、HDFS读数据
4、HDFS写数据
2、详解
1、作业提交
2、作业初始化
3、任务分配
4、任务运行
5、进度和状态更新
6、作业完成

7、任务的推测执行
1、作业完成时间取决于最慢的任务完成时间
2、推测执行机制

posted @ 2021-09-15 16:42  tonggang_bigdata  阅读(124)  评论(0编辑  收藏  举报