YARN发展和架构组件功能详解

YARN的架构

YARN业务架构图

ResourceManager

全局资源管理器,整个集群只有一个,负责集群资源的统一管理和调动分配。(可以理解为肯德基里面唯一一个收银员,处理客户请求,启用客户下单处理的厨师,并且监控厨师,为订单分配厨房资源 )
  • 处理客户端请求
  • 启动/监控ApplicationMaster
  • 监控NodeManager
  • 资源分配与调度

The ResourceManager has two main components: Scheduler and ApplicationsManager.
ResourceManager有两个主要组件:Scheduler 和ApplicationsManager.

Scheduler介绍

Scheduler负责为各种运行中的应用程序分配资源,这些应用程序通常受到容量、队列等的限制。Scheduler是纯粹的调度程序,因为它不为应用程序执行状态监视或跟踪。此外,它也不能保证由于应用程序故障或硬件故障而重新启动失败的任务。Scheduler根据应用程序的资源需求执行其调度功能;它是基于资源容器(Container)的抽象概念执行的,该概念包含内存、CPU、磁盘、网络等元素。在第一个版本中,只支持内存。

ApplicationsManager介绍

The ApplicationsManager is responsible for accepting job-submissions, negotiating the first container for executing the application specific ApplicationMaster and provides the service for restarting the ApplicationMaster container on failure.
ApplicationsManager负责接受作业提交,协商执行特定于应用程序的ApplicationMaster的第一个容器,并为失败时重新启动ApplicationMaster容器提供服务。

NodeManager介绍

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

  • 单个节点上的资源管理
  • 处理来自ResourceManager的命令
  • 处理来自ApplicationMaster的命令
    NodeManager管理抽象容器,这些容器代表可供一个特定应用程序使用节点资源。
    并向ResourceManager/Scheduler报告的每台机器框架代理。

The NodeManager is the per-machine framework agent who is responsible for containers, monitoring their resource usage (cpu, memory, disk, network) and reporting the same to the ResourceManager/Scheduler.
NodeManager是负责容器、监视它们的资源使用情况(CPU、内存、磁盘、网络)并向ResourceManager/Scheduler报告的每台机器框架代理。

ApplicationMaster

管理一个在yarn内运行的应用程序的每个实例(hive,spark)

  • 数据切分
  • 为应用程序申请资源,并分配给内部任务
  • 任务监控与容错

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

container

image.png

yarn资源管理

image.png

说明:yarn主要工作是资源调度和资源隔离。他是一个部门经理,可以在不同的项目组调度任何人员,而各个资源(人员)是各个项目组的。部门经理只是协调资源,任务下达,而项目组长需要根据任务要求提供相应的资源(人员),项目组长保证这个人只处理这个任务。这个人员不会共享。

类比:ResourceManager表示部门经理、nodemanager表示项目组长、container表示组员、applicationMaster表示项目经理

上一篇:2017年勒索软件、物联网攻击将继续肆虐


下一篇:java性能优化方案3——不要使用iterator()方法