YARN简介及原理

概述

  1. YARN(Yet Another Resource Negotiator,迄今另一个资源调度器)是Hadoop提供的一套用于进行资源管理和任务调度的框架
  2. YARN是Hadoop2.0中最重要的特性之一
  3. YARN产生的原因:
  • 内因:在Hadoop1.0中,JobTracker既要接收任务还得分配任务并且还需要监控这些任务是否执行完成,这就使得JobTracker成为了MapReduce的性能瓶颈。在官方文档中给定,Hadoop1.0中,TaskTracker的个数不能超过4000个
  • 外果:随着数据的发展,产生了越来越多的计算框架(Pig、Storm、Spark等),在Hadoop1.0中,这些计算框架都是直接抢占Hadoop集群的资源从而容易导致资源冲突,所以在Hadoop2.0中提供了一个统一的资源调度器
  1. YARN的结构:
  • ResourceManager:主节点。作用是资源管理
  • ResourceScheduler:资源分配
  • ApplicationsManager:任务调度以及管理ApplicationMaster
  • NodeManager:从节点。作用是执行任务

YARN的Job执行流程

  1. 客户端将job任务提交给ResourceManager
  2. 当ResourceManager收到任务之后,会先将这个任务临时缓存,等待NodeManager的心跳
  3. 当ResourceManager收到NodeManager心跳之后,ResourceManager会进行心跳响应,会将这个job任务分配给这个NodeManager,同时在心跳响应中要求NodeManager来开启ApplicationMaster
  4. NodeManager收到心跳响应后,会在本节点内部开启ApplicationMaster,同时将job任务交给ApplicationMaster来进行处理
  5. ApplicationMaster收到ApplicationMaster的请求之后,会将这个请求所需要的资源封装成Container对象(封装的是CPU核和内存描述)返回给ApplicationsManager,然后ApplicationsManager在将Container返回给ApplicationMaster
  6. ApplicationMaster收到资源之后,会对资源进行二次分配,将资源分配给子任务,然后将子任务分配到不同的NodeManager上执行(MapTask在分配的时候要尽量满足数据本地化策略,ReduceTask在分配的时候是分配到相对空闲的节点上),同时ApplicationMaster会监控这些子任务的完成情况
  7. 注意问题:
  • a. 一个job对应一个ApplicationMaster
  • b. YARN的管理结构:ResourceManager中的ApplicationsManager管理ApplicationMaster,ApplicationMaster管理子任务
  • c. 默认情况下一份资源包含1个CPU核+1G内存
  • d. ApplicationMaster在申请资源的时候会多要,但是ResourceManager不会多给。例如一个job拆分出来4个MapTask和1个ReduceTask,那么默认情况下,考虑数据本地化策略,ApplicationMaster申请4*3+1=13份资源,但是注意ResourceManager只返回5份资源。"要的多"的目的是为了减少阻塞提高job的执行效率,"给的少"的目的为了避免资源浪费

ResourceScheduler

  1. ResourceScheduler是一个纯粹的资源调度器,并不参与具体的任务
  2. ResourceScheduler本身被设计成一个可拔插的组件,可以根据不同的场景来设计不同的资源调度策略
    • FCFS(First Come First Serve) - 先来先得 - ResourceScheduler默认采用也是这种策略
    • 优先级/权重策略 - 给每一个请求来设置优先级,优先级越高,那么越早分配资源
    • 端任务有限策略 - 如果在能够估计任务的执行时间的情况下,且任务之间的时间差别特别的时候,可以将资源有限分配给短任务
  3. 实际开发中,资源分配调度不再是单一使用而是结合使用,如果任务执行时间相差较大,考虑短任务优先;如果任务执行时间相差不大,那么考虑优先级;如果执行时间相差不大且优先级又一致,那么考虑FCFS
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值