YARN

2022-03-31 10:34:51 浏览数 (1)

简介

YARN(Yet Another Resource Negotiator),下一代MapReduce框架。该框架已经不再是一个传统的MapReduce框架,是一个通用的运行时框架,用户可以编写自己的计算框架,在该运行环境中运行。

MapReduce v1的不足

  • JobTracker职责太多(资源分配模型
    1. JobTracker具有两种不同的职责:
      1. 资源管理。这涉及到维护活动节点列表、可用和已用的map和 reduce slot列表,以及依据所选的调度策略将可用slots分配给合适的作业和任务。
      2. 任务调度和任务监控。这涉及到指导TaskTracker启动map和reduce任务,监视任务的执行,重新启动失败的任务,推测性地运行缓慢的任务,等等。
    2. JobTracker是集群事务的集中处理点,存在单点故障;
    3. JobTracker需要完成的任务太多,既要维护job的状态又要维护task的状态;
  • TaskTracker上的资源强制划分为map slot、reduce slot(资源表示模型
    1. 用map slot、reduce slot作为资源的表示过于简单,没有考虑到CPU、内存等资源情况,当把两个需要消耗大内存的task调度到一起,很容易出现OOM;
    2. 当只有map task时,reduce slot不能用;当只有reduce task时,map slot不能用,容易造成资源利用不足;

YARN的改进

  • Clien

(1) 提交任何支持YARN的Application

  • ResourceManager

(1) 持续跟踪活着的NodeManager和可用资源

(2) 给Application和Task分配合适的资源

(3) 监视所有的Application Master

  • NodeManager

(1) 以Container的形式提供计算资源

(2) 管理运行在Container中的进程

  • Application Master

(1) 协调此Application所拥有的所有Task的运行

(2) 请求合适的Container运行Task

  • Container

(1) 可以运行不同类型的任务(包括Application Master)

(2) 有不同的大小属性,例如,内存、CPU

综上,Yarn将之前JobTracker监控和协调Tasks的运行状况的责任扔给了ApplicationMaster,而ResourceManager中有一个ApplicationsMasters组件,这个组件来监测所有ApplicationMaster的运行状况。

重构根本的思想是将JobTracker两个主要的功能,资源管理、任务调度和任务监控,分离成单独的组件。就是将JobTracker的功能分成ResourceManager、ApplicationsMasters、ApplicationMaster,而将ApplicationMaster剥离JobTracker。TaskTracker分成NodeManager和Container,并将运行任务的Container剥离TaskTracker。

0 人点赞