凡是过往,皆为序章

0%

大数据_07(Yarn)

本篇总结Yarn资源调度的基础知识。


Yarn介绍

Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一 种新的 Hadoop 资源管理器,它是一个通用资源管理系统和调度平台,可为上层应用提供统 一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

Yarn核心出发点是为了分离资源管理与作业监控,实现分离的做法是拥有一个全局的资源管理(ResourceManager,RM),以及每个应用程序对应一个的应用管理器(ApplicationMaster,AM)

总结一句话就是:Yarn就是为了调度资源,管理任务的

其调度分为两个层次:

  • 一级调度管理:计算资源管理(CPU,内存,网络IO,磁盘)
  • 二级调度管理:任务内部的计算模型管理(AppMaster的任务精细化管理)

Yarn的主要组件介绍和作用

Yarn总体上是Master/Slave结构,主要由ResourceManager、NodeManager、ApplicationMaster和Container等几个组件构成。

1. ResourceManager

每个Hadoop集群只会有一个ResourceManager(如果是HA的话会存在两个,但是有且只有一个处于active状态),它负责管理整个集群的计算资源,并将这些资源分别给应用程序。ResourceManager 内部主要有两个组件

  1. 调度器(Scheduler):负责资源的 分配。
  2. 应用程序管理器 ApplicationsManager (AsM):这个组件用于管理整个集群应用程序的application masters,负责接收应用程序的提交;为application master启动提供资源;监控应用程序的运行进度以及在应用程序出现故障时重启它。

2. NodeManager

NodeManager是YARN中每个节点上的代理,它管理Hadoop集群中单个计算节点,根据相关的设置来启动容器的。NodeManager会定期向ResourceManager发送心跳信息来更新其健康状态。同时其也会监督Container的生命周期管理,监控每个Container的资源使用(内存、CPU等)情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务(auxiliary service)。

3. ApplicationMaster

ApplicationMaster是应用程序级别的,每个ApplicationMaster管理运行在YARN上的应用程序。YARN 将 ApplicationMaster看做是第三方组件,ApplicationMaster负责和ResourceManager scheduler协商资源,并且和NodeManager通信来运行相应的task。ResourceManager 为 ApplicationMaster 分配容器,这些容器将会用来运行task。ApplicationMaster 也会追踪应用程序的状态,监控容器的运行进度。当容器运行完成, ApplicationMaster 将会向 ResourceManager 注销这个容器;如果是整个作业运行完成,其也会向 ResourceManager 注销自己,这样这些资源就可以分配给其他的应用程序使用了。

4. Container

是Yarn中的资源抽象。Container是与特定节点绑定的,其包含了内存、CPU磁盘等逻辑资源。不过在现在的容器实现中,这些资源只包括了内存和CPU。容器是由 ResourceManager scheduler 服务动态分配的资源构成。容器授予 ApplicationMaster 使用特定主机的特定数量资源的权限。ApplicationMaster 也是在容器中运行的,其在应用程序分配的第一个容器中运行。

作业的完整运行如下所示:

~感谢你请我吃糖果~
-------------本文结束,感谢您的阅读,欢迎评论留言!-------------