Yarn的应用场景与原理

Yarn的应用场景与原理

Yarn产生的背景

hadoop1.0不能满足多系统集成的背景孕育了yarn的产生。由于多分布式系统可以很好的集成,因此yarn的出现使得整个集群的运维成本大大降低。同时,yarn可以很好的利用集群资源,避免资源的浪费,除此之外,yarn的出现实现了集群的数据共享问题,不同的分布式计算框架可以实现数据的共享。总结来说为以下两点:

  • 直接源于MR在几个方面的缺陷
    -扩展性受限
    -单点故障
    -难以支持MR之外的计算

  • 多计算框架各自为战,数据共享困难
    -MR:离线计算框架
    -Storm:实时计算框架
    -Spark:内存计算框架

Yarn的基本构成

我们通过Yarn的工作流程图来了解Yarn的组织架构,如下图:

(1)Client向ResourceManager发送请求
(2)ResourceManager指定一个NodeManager启动起ApplicationMaster
(3)ApplicationMaster将计算任务反馈给ResourceManager
(4)ApplicationMaster将任务分割分发到不同的NodeManager
(5)NodeManager启动Task执行work
接着需要了解的是Yarn的每个节点的详细功能:

  • ResourceManager
    整个集群中只有一个,负责集群资源的统一管理和调度
    详细功能:
    -处理客户端请求
    -启动/监控ApplicationMaster
    -监控NodeManager
    -资源分配与调度

  • NodeManager
    整个集群有多个,负责单节点资源管理和使用
    详细功能:
    -单个节点上的资源管理和任务管理
    -处理来自ResourceManager的命令
    -处理来自ApplicationMaster的命令

  • ApplicationMaster
    每个应用只有一个,负责应用程序的管理
    详细功能:
    -数据切分
    -为应用程序申请资源,并进一步分配给内部任务
    -任务监控与容错

  • Container
    对任务运行环境的抽象
    详细信息:
    -任务运行资源(节点,内存,CPU)
    -任务启动命令
    -任务运行环境

下面给出Yarn的运行剖析图:
Yarn的应用场景与原理_第1张图片

  • Yarn具有双层调度策略
    ResourceManager将资源分配给ApplicationMaster,ApplicationMaster再将资源分配给NodeManager。此外,Yarn具有预留的调度策略,资源不够时,会为Task预留资源直到资源积累充足。

  • Yarn具有较好的容错机制
    当任务失败时,ResourceManager将失败任务告诉ApplicationMaster。由ApplicationMaster处理失败任务,ApplicationMaster会保存已经执行的Task,重启不会重新执行。

  • Yarn支持内存和CPU两种资源隔离。
    内存是一种决定生死的资源,CPU是一种影响快慢的资源,其中,内存隔离包括基于线程监控的方案和基于Cgroups的方案,而CPU隔离包括默认不对CPU资源进行隔离和基于Cgroups的方案。

  • Yarn支持的调度语义
    yarn支持的语义有请求某个特定节点/机架上的特定资源量和将某些节点加入(或移除)黑名单,不再为自己分配这些节点上的资源,请求归还某些资源。
    Yarn不支持的语义有请求任意节点/机架上的特定资源量;请求一组或几组符合某种特质的资源;超细粒度资源;动态调整Container资源。

Yarn的设计目标

Yarn是通用的统一资源管理系统,同时运行长应用程序和短应用程序。长应用程序通常情况下,指永不停止运行的程序service,http server等,短应用程序指短时间(秒级,分钟级,小时级)内会运行结束的程序MR job,Spark Job等。
以Yarn为核心的生态系统也越来越多了
Yarn的应用场景与原理_第2张图片
比如,离线计算框架MapReduce,DAG计算框架TeZ,流式计算框架Strom,内存计算框架Spark等等,详细介绍后续更新。

你可能感兴趣的:(hadoop)