Yarn起源

Yarn是Hadoop的子项目,为分离Hadoop2.0资源管理和计算组件而引入
image.png
Yarn具有足够的通用性,可以支持其他的分布式计算模式
image.png

Yarn架构模式

类似于HDFS架构,主从架构模式
image.png

ResourceManager(RM)

  • RM是Yarn中主的角色
  • RM是一个全局的资源管理器,集群只有一个active对外提供服务
    负责整个系统的资源管理和分配
    监控NM资源分配与调度
    处理客户端请求
    启动/监控ASM
  • 两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager ASM)
  • 调度器(Scheduler)
    纯调度器,根据队列、容量等限制条件,将系统中的资源分配到各个正在运行的应用程序
  • 应用程序管理器(Applications Manager ASM)
    负责管理整个系统中所有的应用程序;接收Job的提交请求,为应用分配Container来运行ApplicationMaster

    NodeManager(NM)

  • NM是Yarn中slave的角色

  • 向RM注册并汇报资源情况(磁盘、内存、cpu等),通过心跳汇报
  • 接收及处理来自RM的命令请求,分配容器给应用的某个任务
  • 监控本节点的资源使用情况和各个Container的运行状态

    调度器(Scheduler)

    FIFO调度器

    image.png

    容量调度器(Capacity)

    image.png

    公平调度器(Fair)

    image.png

    MR ON Yarn执行流程

  1. MapReduce client负责切片清单、配置、jar、上传到HDFS,访问ResourceManager申请AppMaster
  2. ResourceManager选择空闲节点通知NodeManager启动一个Container,反射MapReduce AppMaster
  3. 启动MapReduce AppMaster,从HDFS下载切片清单,向ResourceManager申请资源
  4. ResourceManager根据掌握的资源情况得到一个确定的清单,通知NodeManager启动Container
  5. Container启动后反向注册到已经启动的MapReduce AppMaster进程
  6. MapReduce AppMaster(曾今的JobTracker阉割版不带资源管理)最终将任务Task发送给Container(消息)
  7. Container会反射相应的Task类为对象,调用执行方法,即执行业务逻辑代码
  8. 计算框架都会有Task失败重试机制

image.png

1.x PK 2.x

1.x JobTracker和TaskTracker 是MapReduce常服务,2.x之后这些都变成临时服务,用完即删