日志

Hadoop之YARN/MRv2

YARN又称为Mapreduce version 2(MRv2)是hadoop2.x的新架构,它将旧Hadoop Mapreduce框架中的JobTracker的资源管理和作业生命周期管理拆分成两个组件即ResourceManager(RM)和ApplicationMaster(AM)

一、为何需要MRv2?

mr1vsmr2

MRv1与MRv2对比

MRv1资源管理问题

  1. Hadoop1.0引入了“slot”的概念,每个slot代表了各个节点上的一份资源(CPU、内存等),MRv1把Map和Reduce的资源单独区分,即Map slot、Reduce slot,两个阶段的slot不能共享,这意味着资源的利用率大大降低
  2. 非MR应用不能分享资源,所以只能运行MR计算框架的应用
  3. 每个集群只有一个JobTracker,限制了集群的扩展,集群规模限制在4000个节点左右

MRv2资源管理方案

  1. 舍弃“slot”的概念,每个节点以“资源”(CPU、内存等)为单位分配给有需要的应用
  2. 支持运行MR应用和非MR应用
  3. JobTracker的大量功能被迁移到ApplicationMaster(AM),集群内可以存在多个AM(每个应用程序都拥有一个独立的AM),集群可以扩展到上万个节点

二、YARN架构

YARN_Architecture

YARN架构图(via Apache Hadoop)

资源管理器(ResourceManager,RM)

ResourceManager运行在主节点(Master)上,负责全局资源调度(分配/回收),处理各个应用的资源请求,ResourceManager由调度器(Scheduler)和应用管理器(ApplicationsManager, AsM)组成

  • 调度器(Scheduler)
    调度器根据资源调度策略(例如Capacity Scheduler、Fair Scheduler),将包含适当资源(CPU、内存等)的资源容器(Container)分配给相应的节点,应用程序的各个任务均在容器内执行,且只能使用容器分配到的资源.调度器只负责资源调度,不关心应用的执行状态.
  • 应用管理器(ApplicationsManager,AsM)
    AsM主要负责接收作业,申请第一个Container用于运行ApplicationMaster(AM),AsM负责管理各个AM的生命周期,AM会定期向AsM发送心跳(heartbeat),失去心跳的AM视为失败,AsM负责重启运行失败的AM Container

资源容器(Container)

  1. Container由RM根据应用的请求在不同的节点上创建和管理
  2. 每个Container包含一定数量的资源和上下文信息(例如: CPU、内存资源, 容器对应的ID、节点,启动容器需要的文件资源、环境变量、命令等)
  3. 应用程序会运行在一个或多个Container中

应用总管(ApplicationMaster,AM)

  1. AM运行在AsM申请的容器内,它负责向调度器申请合适的资源容器(一个或多个)供应用程序执行任务(task),另外还会跟踪容器的状态和监控执行的进度
  2. 每个应用程序有一个AM
  3. AM是框架特殊的库,例如Mapreduce计算框架有其AM的实现(MR AM),用户需要为自身的计算框架实现AM才能部署到YARN上运行

节点管理器(NodeManager,NM)

  1. 运行在各个从节点(Slave)上,每个NM都需要先向RM注册其节点并提供节点信息
  2. 定期向RM发送心跳以及节点上各个Container的状态信息
  3. 启动AM
  4. 负责启动AM申请得到的Container,同时监测Container的资源使用情况,必要时杀死进程
  5. 聚集应用日志并保存到HDFS
  6. 运行附加服务(auxiliary services)
转载请注明出处:

© http://hejunhao.me