Yarn

  • 概述
  • 主要角色
  • 运行流程(重点)
  • 调度策略


资料来源:拉勾大数据训练营【第二期】



概述

YarnHadoop 2.x 引入的新的资源管理系统模块,主要用于管理集群当中的资源(主要是服务器的各种硬件资源,比如内存CPU等),它不光管理硬件资源,还管理运行的一些任务信息等。

Yarn调度资源可以分为两个层级:
一级管理调度:管理计算机的资源、运行job任务的生命周期
二级管理调度:任务的计算模型(maptask,reducetask的代码)、多样化的计算模型(spark,storm)


主要角色

角色

作用

ResourceManage

主节点,主要用于接受用户请求,分配资源

NodeManager

从节点,主要用于处理任务的计算

ApplicationMaste

申请资源,分配资源(分配 Container ),监控任务执行的进度状况,回收资源,和 ResourceManager 通信,报告任务的执行状况“自杀”

Container

资源分配的单位,所有的资源都是以 Container 的形式来进行划分的,便于资源的分配和回收

JobHistoryServer

历史完成的任务信息

TimeLineServer

2.4版本之后出来的新特性,查看正在执行任务的信息


运行流程(重点)

yarn内核数 简述yarn的两个核心进程_yarn

1. 客户端向 ResourceManagement 提交 运行的请求 (hadoop jar xxxx.jar)。
2. ResourceManager 进行检查,没有问题的时候,向客户端返回一个共享资源的路径以及 JobId
3. 客户端HDFS 提交资源,将共享资源放入共享路径下(/tmp/hadoop-yarn/staging-dir/xxxxxxxx)。
4. 客户端ResourceManager 反馈共享资源放置完毕,进行 job 的正式提交。
5. ResourceManager 为这个 job 分配一个节点,并在这个节点上启动 MRAppMaster 任务。
6. ResourceManager 到对应的节点上去启动 Container 容器用于装载 MRAppMaster
7. MRAppMaster 对 job 进行初始化,生成一个 job 工作簿,job 的工作簿记录着 MapTask 和 ReduceTask 的运行进度和状态。
8. MRAppMasterResourceManager 申请 MapTaskReduceTask 的运行的资源,先发 MapTask 然后发 ReduceTask
9. ResourceManagerMRAppMaster 返回 MapTaskReduceTask 的资源节点。


调度策略

fifo 队列调度器(first in first out)(一般没人用)
运行规则:第一个任务来了,先执行,第二个任务来了,等着
弊端:如果有一个很大的计算任务先来,需要执行两个小时,再来一个小任务,需要两分钟,第二个任务必须要等第一个完成。

capacity scheduler 容量调度器(apache 的 hadoop 版本默认使用的调度器)
运行规则:将集群的资源,划分成好几个队列,任务提交的时候,可以选择不同的队列进行提交。
优点:根据提交任务需要资源的大小不同,可以将任务划分到不同给的队列下面去。

第三种fair scheduler 公平调度器(CDH 版本的 hadoop 默认的调度规则)
运行规则:如果没有任务提交,收到第一个任务,将进群当中所有的资源全部给第一个任务,如果此时收到第二个任务,就会将第一个任务的资源划分一点出来给第二个任务,让第二个任务也可以执行,以此类推,保证每一个任务都可以公平地一起执行