Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统。
YARN关键组件:
- ResourceManager
- NodeManager
- ApplicationMaster
- Container等组件 ![[YARN资源架构.png]]
YARN工作机制 ![[YARN资源调度器-工作机制.png]]
资源调度器分类
- FIFO:按照到达时间顺序,先到先服务
- Capacity Scheduler:
- 支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略
- 为防止统一用户作业独占队列中的资源,该调度器会对统一用户提交的作业所占资源量进行限定
- 首先,计算每一个队列正在运行任务数与应该分得的计算资源之间的比值,选这一个该比值最小的队列---最闲的
- 其次,按照作业优先级和提交时间顺序,同时考虑用户资源量限制和内存限制对队列内任务排序
- 三个队列同时按照任务的先后顺序依次执行
- Fair Scheduler:按照缺额排序,缺额大者优先
- 支持多队列多用户,每个队列中的资源量可以配置,同一队列中的作业公平共享队列中的所有资源
![[YARN-公平调度器.png]]
任务的推测执行
- 作业完成时间取决于最慢的任务完成时间
- 推测执行机制
- 发现拖后腿任务,为其启动一个备份任务,谁先完成,用哪个结果
- 执行推测任务的前提条件
- 每个task只能有一个备份任务
- 当前job已完成task必须不小于0.05(5%)
- 开启推测执行参数设置,mapred-site.xml默认是打开的
- mapreduce.map.speculative
- mapreduce.reduce.speculative
- 不能启用推测执行机制情况
- 任务间存在严重的负载均衡
- 特殊任务,比如任务向数据库中写任务
- 算法原理 ![[YARN-算法运力.png]]
评论 (0)