YARN框架详解

YARN框架详解
YARN官方解释

YARN是什么

The fundamental(定义) idea of YARN is to split(分开) up the functionalities(功能) of resource management and job scheduling/monitoring(进程调度) into separate(独立) daemons(守护进程). The idea is to have a global ResourceManager (RM) and per-application ApplicationMaster (AM). An application is either a single job or a DAG(有向无环图(Directed Acyclic Graph)) of jobs.

ResourceManager

全局的资源管理器,整个集群只有一个,负责集群资源的统一管理和调度分配。

*处理客户端请求
*启动/监控ApplicationMaster
*监控NodeManerger
*资源分配与调度

NodeManager

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

*单个节点上的资源管理和任务管理
*处理来自ResourceManeger的命令
*处理来自ApplicationMaster的命令

NodeManager管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源
定时向ResourceManager汇报本节点上的资源使用情况和各个Container的运行情况

ApplicationMaster

管理一个在YARN内运行的应用程序的每个实例

*为应用程序申请资源,进一步分配给内部任务
*任务监控与容错

负责协调来自ResourceManager的资源,并通过NodeManager监控容器的执行和资源使用(CPU、内存等的资源分配)

Container

YARN中的资源抽象,封装某个节点上多维度资源,如内存、CPU、磁盘、网络等。当ApplicationManager向ResourceManager申请资源时便是用的Container表示的
YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源

*对任务运行环境的抽象
*描述一系列信息
*任务运行资源(节点、内存、CPU)
*任务启动命令
*任务运行环境

资源的管理

(资源:CPU、内存和IO,YARN支持CPU和内存的调度,内存的多少会决定任务的生死,CPU仅仅决定了任务运行速度)
资源的调度和隔离是YARN作为一个资源管理系统,最重要和最基础的两个功能。资源调度由ResourceManager完成,而资源的隔离由各个NodeManager实现。

资源调度

ResourceManager将某个NodeManager上资源分配给任务。

资源隔离

NodeManager需按要求为任务提供相应的资源,甚至保证这些资源具有独占性,为任务运行提供基础的保证
posted @ 2017-07-06 11:18  岑忠满  阅读(471)  评论(0编辑  收藏  举报