在面试中,常考的Yarn相关的内容基本就两点,一是Yarn的工作机制(Yarn的job提交流程),二是Yarn的调度器(调度器的分类和区别)。
一、Yarn工作机制在此之前先了解一下Yarn的基础架构
ResourceManager(RM)
1)处理客户端请求 2)监控NodeManager 3)启动或监控ApplicationMaster 4)资源的分配与调度
NodeManager(NM)
1)管理单个节点上的资源 2)处理来自ResourceManager的命令 3)处理来自ApplicationMaster的命令
ApplicationMaster(AM)
1)为应用程序申请资源并分配给内部的任务 2)任务的监控与容错
Container
1)Container是Yarn资源中的抽象,它封装了某个节点上的多维度资源,如内存,CPU,磁盘,网络等。
1)MR程序提交到客户端所在的节点 2)YarnRunner向ResourceManager申请一个Application 3)ResourceManager将该应用程序的资源路径返回给YarnRunner 4)YarnRunner将该job运行所需资源提交到HDFS上 5)资源提交完毕以后,YarnRunner向ResourceManager申请运行MRAppMaster 6)ResourceManager将用户的请求初始化成一个Task 7)其中一个NodeManager领取到Task任务 8)该NodeManager创建容器Container,并产生MRAppMaster 9)Container从HDFS上拷贝资源到本地 10)MRAppMaster向ResourceManager申请运行MapTask资源 11)ResourceManager将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器Container 12)MRAppMaster向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据进行分区排序 13)MRAppMaster等待所有MapTask运行完毕后,向ResourceManager申请容器,运行ReduceTask 14)ReduceTask向MapTask获取相应分区的数据 15)程序运行完毕,MRAppMaster会向ResourceManager申请注销自己二、Yarn的调度器
1.Yarn的调度器分为三类
1)FIFO:先进先出调度器 单队列,根据提交作业的先后顺序,先来先服务 优点:简单易懂 缺点:不支持多队列,生产环境很少使用 2)Capacity Scheduler:容量调度器(Apache Hadoop3.1.3默认的调度器) Yahoo开发的多用户调度器 允许创建多个任务队列,多个任务队列可以同时执行,但一个队列内部还是遵循先进先出 1.多队列:每个队列可配置一定的资源量,每个队列采用FIFO调度策略 2.容量保证:管理员可以为每个队列设置资源最低保证和使用上限 3.灵活性:如果一个队列资源有剩余,可以暂时共享给需要资源的队列,而一旦该队列有新的资源提交,借调的资源会归还给该队列 4.多租户:支持多用户,多程序同时执行 3)Fair Scheduler:公平调度器(CDH框架默认调度器) Facebook开发的多用户调度器 特点上与容量调度器相同,但核心调度策略不同,容量调度器优先选择资源利用率低的队列,而公平调度器优先选择对资源的缺额比例大的队列。 “缺额”:某一时刻,一个作业应该获得的资源和实际获得的资源的差距。



