YARN是从最早的MapReduce中抽取出来的资源管理调度平台,可以跑mapreduce、spark,Hadoop2.4.X以后可以跑flink。
YARN主要分为ResourceManage、NodeManager、ApplicationMaster。
ResourceManager负责集群资源的分配和管理,处理客户端请求,监控NodeManager,启动和监控ApplicationMaster。
NodeManager对单前节点进行资源管理,并负责处理来自ResourceManager和ApplicationMaster的命令。
ApplicationMaster是应用程序管理器,对数据做切分,申请和分配资源,并进行监控和容错。
YARN有三种调度器:FIFO Scheduler(先进先出调度器)、Capacity Scheduler(容量调度器)、Fair Scheduler(公平调度器)
FIFO Scheduler:任务一个一个执行,先进入的占据全部资源。
Capacity Scheduler:可以将资源分为多个队列,每个队列内部一个一个按顺序执行。
Fair Scheduler:每个队列可以共享全部资源,队列内有任务时队列内部按需要资源的大小比例分配资源。
任务提交流程:1.客户端启动yarnRunner后,yarnRunner向RM申请Application。2.RM返回提交路径和资源id。3.客户端提交所需要的资源到指定路径。4.申请运行AM。5.将这个请求初始化task放入队列。6.NM领取任务。7.创建Container,启动AM。8.下载资源到本地AM。9.AM申请运行MapTask Container。10.NodeManager通过心跳领取到任务,创建Container。11.NM接受AM发送来的启动脚本,启动MapTask。12.MapTask结束后,AM申请ReduceTask容器。13.Reduce向Map获取对应分区的已排序数据。
网友评论