4 YARN

Wu Jun 2020-03-14 22:00:28
11 分布式 > 01 分布式资源协调

老的MapReduce架构(俗称MapReduce 1)存在的问题:

  1. Job Tracker 存在单点故障。
  2. Job Tracker 完成太多任务,当MR任务非常多时,造成很大的内存开销。
  3. Task Tracker端,如果两个大内存消耗的任务一起调度,容易出现OOM,如果只有Map任务或Reduce任务时会造成资源浪费。

为了解决这些问题,YARN(俗称MapReduce 2)出现了,它主要分为三个组件:Resource Manager、Node Manager和Application Master。

1 YARN架构

YARN就是将JobTracker的职责进行拆分,将资源管理和任务调度监控拆分成独立的进程:一个全局的资源管理(ResourceManager)和一个每个作业的管理(ApplicationMaster)

2 架构对比

YARN架构下形成了一个通用的资源管理平台和一个通用的应用计算平台,避免了旧架构的单点问题和资源利用率问题,同时也让在其上运行的应用不再局限于MapReduce形式

3 YARN基本流程

  1. Job submission

从ResourceManager中获取一个Application ID 检查作业输出配置,计算输入分片 拷贝作业资源(job jar、配置文件、分片信息)到HDFS,以便后面任务的执行

  1. Job initialization

ResourceManager将作业递交给Scheduler(有很多调度算法,一般是根据优先级)Scheduler为作业分配一个Container,ResourceManager就加载一个application master process并交给NodeManager管理ApplicationMaster主要是创建一系列的监控进程来跟踪作业的进度,同时获取输入分片,为每一个分片创建一个Map task和相应的reduce task Application Master还决定如何运行作业,如果作业很小(可配置),则直接在同一个JVM下运行

  1. Task assignment

ApplicationMaster向Resource Manager申请资源(一个个的Container,指定任务分配的资源要求)一般是根据data locality来分配资源

  1. Task execution

ApplicationMaster根据ResourceManager的分配情况,在对应的NodeManager中启动Container 从HDFSN#x4E2D;读取任务所需资源(job jar,配置文件等),然后执行该任务

  1. Progress and status update

定时将任务的进度和状态报告给ApplicationMaster Client定时向ApplicationMaster获取整个任务的进度和状态

  1. Job completion

Client定时检查整个作业是否完成 作业完成后,会清空临时文件、目录等