Yarn资源调度器与调度算法

Yarn

YARN核心思想是将资源管理和任务的监控和调度分离

Yarn基础架构

  1. ResourceManager(RM):
    1. 整个集群资源的控制器
    2. 处理客户端的请求
    3. 监控NodeManager
    4. 启动和监控ApplicationMaster
    5. 资源的分配与调度
  2. NodeManager(NM):
    1. 单个节点的管理器,管理单个节点上的资源
    2. 处理来自ResourceManager的命令
    3. 处理来自ApplicationMaster的命令
  3. ApplicationMaster(AM):
    1. 单个任务的管理器
    2. 为应用程序向ResourceManager申请资源并分配给内部的任务
    3. 任务的监控与容错(监控MapTask与RedeceTask)
  4. Container:是Yarn资源的抽象,封装了某个节点上的多维度资源,入内存、CPU、磁盘、网络等

Yarn工作机制

Yarn

  1. 客户端提交作业,向RM申请jobId

  2. RM返回applicationId和应用程序的资源提交路径给客户端

  3. 客户端根据返回的信息,检查作业的输入输出目录是否正确,计算作业分片是否正常,将运行作业所需要的资源(job.xml,job.split,Jar包)上传到返回的HDFS路径

  4. 上传成功后,向RM正式提交作业,请求执行作业,申请运行ApplicationMaster

  5. RM将请求信息传递给自己的调度器Scheduler,请求分配一个Container来执行作业

  6. 调度器会将任务放入调度队列,当执行到相应的请求时,会通知ApplicationMaster分配容器,调用NodeManager开辟的Container,创建作业对应的ApplicationMaster

  7. ApplicationManager与指定的NodeManager通信,要求开辟Container启动ApplicationMaster

  8. ApplicationMaster获取HDFS上提交的作业,根据切片信息创建MapTask和ReduceTask

  9. ApplicationMaster向调度器申请MapTask和ReduceTask所需要的资源

  10. 调度器返回ApplicationMaster所需要的资源,分片给它两个NodeManager,分别领取任务并创建容器

  11. ApplicationMaster与对应的NodeManager通信申请Container启动任务

  12. NodeManager启动MapTask,ApplicationMaster等待所有的MapTask运行完毕后,另一个NodeManager开启ReduceTask任务

  13. ReduceTask向MapTask拉取相应分区的数据,接收共享的文件数据

  14. 运行过程中,任务会将状态和进度报告给ApplicationMaster,Client会从ApplicationMaster获取状态。运行完毕后,MR会向RM申请注销自己,容器Container与ApplicationMaster也会注销自己,释放资源

Yarn调度器与调度算法

Hadoop作业调度器:

  1. FirstInFirstOut(FIFO)先进先出调度器:
  2. Capacity Scheduler容量调度器:ApacheHadop的默认调度器
  3. Fair Scheduler公平调度器:CDH框架的默认调度器

FIFO调度器:

单队列,根据作业的提交先后顺序,先提交的先服务;一般不使用

Capacity Scheduler容量调度器:

  1. 多队列:每个队列可配置一定的资源量,每个队列采用FIFO调度策略,即优先满足先进入的任务。
  2. 容量保证:管理员可为每个队列设置资源最低保证和资源使用上限
  3. 灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用 程序提交,则其他队列借调的资源会归还给该队列。
  4. 多租户:
    1. 支持多用户共享集群和多应用程序同时运行。
    2. 为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定

容量调度器资源分配算法:

容量调度器资源分配算法

  1. 队列资源分配,谁的资源占比最少,优先执行谁;
  2. 作业资源分配,如何对作业设置了优先级,按照优先级顺序分配,如果没有设置优先级,按照作业提交时间分配;
  3. 容器资源分配,如何对容器设置了优先级,按照优先级顺序分配,如果没有设置优先级,按照任务与数据的距离大小分配,距离越近先分配;

Fair Scheduler公平调度器

  1. 与容量调度器相同点:
    1. 多队列:支持多队列多作业。
    2. 容量保证:管理员可为每个队列设置资源最低保证和资源使用上限。
    3. 灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列。
    4. 多租户:支持多用户共享集群和多应用程序同时运行;为了防止同一个用户的作业独占队列中的资源,该调度器 会对同一用户提交的作业所占资源量进行限定。
  2. 与容量调度器不同的:
    1. 核心调度策略不同:
      1. 容量调度器优先选择资源利用率低的队列
      2. 公平调度器优先选择对资源的缺额比例大
    2. 每个队列可以单独设置资源分配方式
      1. 容量调度器:FIFO、DRF
      2. 公平调度器:FIFO、DRF、FAIR
  3. 缺额:公平调度器设计目标是:在时间尺度上,所有作业获得公平的资源。当多作业运行时,又添加一个作业,系统需要一定时间才能给新添加的作业分配资源,这个时间差叫缺额。调度器会优先为缺额大的作业分配资源。
  4. 公平调度器队列资源分配方式:
    1. FIFO策略:此时公平调度器相当于容量调度器。
    2. Fair策略:Fair 策略(默认)是一种基于最大最小公平算法实现的资源多路复用方式,默认情况下,每个队列内部采用该方式分配资 源。这意味着,如果一个队列中有两个应用程序同时运行,则每个应用程序可得到1/2的资源;如果三个应用程序同时运行,则 每个应用程序可得到1/3的资源。
      1. Fair策略资源分配流程与容量调度器一致,队列->作业->容器;均按照公平策略分配资源
      2. 实际最小资源份额:minshare=(资源需求量,配置的最小资源)
      3. 是否饥饿:isNeedy=资源使用量<minshare(实际最小资源份额)
      4. 资源分配比:minShareRatio=资源使用量/Max(minshare,1)

Fair策略判断顺序

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值