yarn的简单介绍

本来想学习一下yarnAPI相关方面的学习,但是感觉自己的能力不够,所以而中道停止,现在记一下简单的概念。

Yarm框架术语概览

MRv2的基本思想是将JobTracker的两个主要功能,资源管理和作业调度/监视分成单独的守护进程。为实现这一结构我们的想法是拥有一个全局ResourceManager(RM)和每个应用程序ApplicationMaster(AM)。应用程序可以是传统意义上的Map-Reduce作业中的单个作业,也可以是作业的DAG。
ResourceManager和每个节点的从属服务器NodeManager(NM)构成了数据计算框架。
ResourceManager是在系统中的所有应用程序之间仲裁资源的最终权限。
每个应用程序的ApplicationMaster实际上是一个特定于框架的库,其任务是协调来自ResourceManager的资源,并与NodeManager一起执行和监视任务。

yarn的简单介绍_第1张图片 yarn的基本通讯流程

ResourceManager有两个主要组件:Scheduler和ApplicationsManager。
Scheduler负责根据熟悉的容量,队列等约束将资源分配给各种正在运行的应用程序。
Scheduler程序是纯调度程序,因为它不执行应用程序状态的监视或跟踪。此外,由于应用程序故障或硬件故障,它无法保证重启失败的任务。调度程序根据应用程序的资源需求执行其调度功能;它基于资源Container的抽象概念,它包含内存,CPU,磁盘,网络等元素。在第一个版本中,只支持内存。
Scheduler的调度策略是可插拔的。
ApplicationsManager负责接收作业的提交,交涉第一个容器给应用程序执行ApplicationMaster,并提供在ApplicationMaster所在的容器挂掉是进行重新启动的机制。
NodeManager是每台机器框架代理,负责containers,监视其资源使用情况(CPU,内存,磁盘,网络)并将其报告给ResourceManager / Scheduler。
每个应用程序的ApplicaationMaster负责从Scheduler申请适当的资源容器,监控他们的状态,跟踪他们的状态并监控进度。

下面我们来看几个调度器: 

apacity Scheduler
Fair Scheduler

Writing YARN Applications

概念和流程
这一般概念是应用程序客户端提交应用程序给ResourceManager,这可以通过YarnClient实现。启动YarnClient后,客户端可以设置应用程序上下文,准备包含ApplicationMaster(AM)的应用程序的第一个容器,然后提交应用程序。您需要提供信息,例如有关运行应用程序需要可用的本地文件/ jar的详细信息,需要执行的实际命令(使用必要的命令行参数),任何OS环境设置(可选)有效地,您需要描述需要为您的ApplicationMaster启动的Unix进程。
然后,YARN ResourceManager将在已分配的容器上启动ApplicationMaster
ApplicationMaster与YARN集群通信,并处理应用程序执行。它以异步方式执行操作。在应用程序启动期间,ApplicationMaster的主要任务是:
a)与ResourceManager通信以协商和分配未来容器的资源; 
b)在容器分配之后,通信YARN NodeManagers(NM)以在其上启动应用程序容器。
任务a)可以通过AMRMClientAsync对象异步执行,事件处理方法在AMRMClientAsync.CallbackHandler类型的事件处理程序中指定。需要将事件处理程序显式设置为客户端。

任务b)可以通过启动一个可运行的对象来执行,然后在分配容器时启动容器。作为启动此容器的一部分,AM必须指定具有启动信息的ContainerLaunchContext,例如命令行规范,环境等。


在执行应用程序期间,ApplicationMaster通过NMClientAsync对象与NodeManagers进行通信。所有容器事件都由NMClientAsync.CallbackHandler处理,与NMClientAsync相关联。一个典型的回调处理程序处理客户端启动,停止,状态更新和错误。 ApplicationMaster还通过处理AMRMClientAsync.CallbackHandler的getProgress()方法向ResourceManager报告执行进度。
除了异步版本我们还可以使用同步版本。
好了,这就是我们编写yarn的所有步骤了,下面我们来总结一下他们的接口:

Client与ResourceManager进行通讯使用:
YarnClient
ApplicationMaster与ResourceManager进行通讯使用:
AMRMClientAsync并处理AMRMClientAsync.CallbackHandler回调。
ApplicationMaster与NodeManager进行通讯使用:
NMClientAsync并处理NMClientAsync.CallbackHandler回调。
 


 


 

你可能感兴趣的:(hadoop)