YARN应用场景原理与资源调度

Posted 知了小巷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YARN应用场景原理与资源调度相关的知识,希望对你有一定的参考价值。


YARN应用场景、原理与资源调度


YARN产生背景

· YARN产生背景—运维成本与数据共享·

1. 运维成本

    如果采用“一个框架一个集群”的模式,则可能需要多个管理员管理这些集群,进而增加运维成本,而共享模式通常需要少数管理员即可完成多个框架。

2. 数据共享

    随着数据量的暴增,跨集群间的数据移动不仅需花费更长的时间,且硬件成本也会大大增加,而共享集群模式可让多种框架共享数据和硬件资源,将大大减小数据移动带来的成本。


直接源于MRv1在几个方面的缺陷

    扩展性受限

    单点故障

    难以支持MR之外的计算

多计算框架各自为战,数据共享困难

    MR:离线计算框架

    Storm:实时计算框架

    Spark:内存计算框架



YARN基本构成与资源调度


YARN应用场景、原理与资源调度

YARN基本架构

YARN应用场景、原理与资源调度

· ResourceManager·

1. 整个集群只有一个,负责集群资源的统一管理和调度

2. 详细功能

    处理客户端请求

    启动/监控ApplicationMaster

    监控NodeManager

    资源分配与调度


· NodeManager·

1. 整个集群有多个,负责单节点资源管理和使用

2. 详细功能

    单个节点上的资源管理和任务管理

    处理来自ResourceManager的命令

    处理来自ApplicationMaster的命令

· ApplicationMaster·

1. 每个应用有一个,负责应用程序的管理

2. 详细功能

    数据切分

    为应用程序申请资源,并进一步分配给内部任务

    任务监控与容错


· Container·

1. 对任务运行环境的抽象

2. 描述一系列信息

    任务运行资源(节点、内存、CPU)

    任务启动命令

    任务运行环境

YARN应用场景、原理与资源调度

YARN运行过程

YARN应用场景、原理与资源调度

· YARN容错性·

1. ResourceManager

    存在单点故障

    基于ZooKeeper实现HA

2. NodeManager

    失败后,RM将失败任务告诉对应的AM

    AM决定如何处理失败的任务

3. ApplicationMaster

    失败后,由RM负责重启

    AM需处理内部任务的容错问题

    RMAppMaster会保存已经运行完成的Task,重启后无需重新运行


· YARN调度框架·

1. 双层调度框架

    RM将资源分配给AM

    AM将资源进一步分配给各个Task

2. 基于资源预留的调度策略

    资源不够时,会为Task预留,直到资源充足

    与“all or nothing”策略不同(Apache Mesos)

· YARN资源调度器·

1. 多类型资源调度

    采用DRF算法(论文:“Dominant Resource Fairness: Fair Allocation of Multiple Resource Types”)

    目前支持CPU和内存两种资源

2. 提供多种资源调度器

    FIFO

    Fair Scheduler

    Capacity Scheduler

3. 多租户资源调度器

    支持资源按比例分配

    支持层级队列划分方式

    支持资源抢占

· YARN资源隔离方案·

1. 支持内存和CPU两种资源隔离

    内存是一种“决定生死”的资源

    CPU是一种“影响快慢”的资源

2. 内存隔离

    基于线程监控的方案

    基于Cgroups的方案

3. CPU隔离

    默认不对CPU资源进行隔离

    基于Cgroups的方案

· YARN支持的调度语义·

1. 支持的语义

    请求某个特定节点/机架上的特定资源量

    将某些节点加入(或移除)黑名单,不再为自己分配这些节点上的资源

    请求归还某些资源

2. 不支持的语义

    请求任意节点/机架上的特定资源量

    请求一组或几组符合某种特质的资源

    超细粒度资源

    动态调整Container资源



YARN上的计算框架

YARN应用场景、原理与资源调度

应用种类繁多

YARN应用场景、原理与资源调度

· YARN的设计目标·

1. 通用的统一资源管理系统

    同时运行长应用程序和短应用程序

2. 长应用程序

    通常情况下,永不停止运行的程序

    Service、HTTP Server等

3. 短应用程序

    短时间(秒级、分钟级、小时级)内会运行结束的程序

    MR job、Spark Job等

· 运行在YARN上的计算框架·

1. 离线计算框架:MapReduce

2. DAG计算框架:Tez

3. 流式计算框架:Storm

4. 内存计算框架:Spark Flink



YARN上的计算框架

· MapReduce 2.0与YARN·

1. 一个MR应用程序的成功运行需要若干模块

    任务管理和资源调度

    任务驱动模块(MapTask、ReduceTask)

    用户代码(Mapper、Reducer...)

2. MapReduce 2.0和YARN区别

    YARN是一个资源管理系统,负责资源管理和调度

    MapReduce只是运行在YARN上的一个应用程序

    如果把YARN看做“android”,则MapReduce只是一个“app”


YARN应用场景、原理与资源调度
YARN应用场景、原理与资源调度

End


以上是关于YARN应用场景原理与资源调度的主要内容,如果未能解决你的问题,请参考以下文章

YARN基础

YARN工作原理 YARN调度器

Yarn_原理

Yarn的原理与资源调度

YARN资源调度框架

Hadoop学习之路Yarn资源调度系统详解