▶ \blacktriangleright ▶ Yarn基本架构的4个组件及其作用
-
ResourceManager 主要作用
- 处理客户端请求
- 监控nodeManager
- 启动或监控ApplicationManager
- 资源调度和分配
-
nodeManager 主要作用
- 管理单个节点上的资源
- 处理ResourceManager的命令
- 处理applicationManager的命令
-
applicationManager(主要作用和执行的时候会启动)
- 负责数据的切分
- 为应用程序申请资源并分配
- 任务的监控 容错
-
Containers
- 封装资源的:内存 CPU 磁盘 网络
▶ \blacktriangleright ▶ Yarn工作机制
- mr提交到客户端所在的节点
- YarnRunner向ResourceManager申请Application
- Resource把路径返回给yarnRunner
- 把运行所需资源提交到HDFS上
- 资源提交完毕,申请mrAppMaster
- ResourceManager将用户请求初始化成一个Task
- NodeManager领取到Task任务
- 这个NodeManager创建一个containers容器 ,并产生MRAppMaster
- Containers从hdfs上拷贝job资源到本地
- MRAppMaster向MR申请运行MapTask
- RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器
- MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序
- MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask
- ReduceTask向MapTask获取相应分区的数据
- 程序运行完毕后,MR会向RM申请注销自己
▶ \blacktriangleright ▶ Yarn资源调度器
- FIFO:按照到达时间排序,先到先服务
- 容量调度器:支持多个队列,每个队列采用FIFO调度策略
- 公平调度器:按照缺额排序,缺额大的先优先
▶ \blacktriangleright ▶ Yarn任务的推测执行
-
前提条件
- 每Task只能有一个备份任务
- 当前Job已完成的Task必须不小于0.05(5%)
- 开启推测执行参数设置。mapred-site.xml文件中默认是打开的。
-
不能启用推测执行机制情况
- 数据太大:负载倾斜
- 向数据库的写任务
-
推测执行算法原理
- 推测任务时间:(当前时刻-任务启动时刻)/progess
- 推测任务执行结束的时刻:推测任务时间+任务启动时刻
- 备份任务推测完成时间:当前时刻+任务完成的平均时间