YARN简介

Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运行于操作系统之上的应用程序。
  它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。
  ResourceManager负责整个系统的资源管理和分配。
  ApplicationMaster负责单个应用程序的管理。
YARN组成结构
  1.ResourceManager是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成。
   (1)调度器(Scheduler):调度器根据容量、队列等限制条件,将系统中的资源分配给各个正在运行的应用程序。资源分配单位用一个抽象概念“资源容器”(Resource Container,简称Container)表示。
   (2)应用程序管理器(ApplicationsManager,ASM):ApplicationsManager负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。
  2.ApplicationMaster:用户提交的每个应用程序均包含1个ApplicationMaster,主要功能包括
   (1)与ResourceManager调度器协商以获取资源
   (2)将得到的任务进一步分配给内部的任务
   (3)与NodeManager通信以启动/停止任务
   (4)监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务
  3.NodeManager是每个节点上的资源和任务管理器
   (1)一方面,它会定时地向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态。
   (2)另一方面,它接收并处理来自ApplicationMaster的Container启动/停止等各种请求
  4.Container是Yarn中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等当ApplicationMaster向ResourceManager申请资源时,ResourceManager为ApplicationMaster返回的资源便是用Container表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。

重要概念
	1.yarn并不清楚用户提交的程序的运行机制
	2.yarn只提供运算资源的调度(用户程序向yarn申请资源,yarn就负责分配资源)
	3.yarn中的主管角色叫ResourceManager
	4.yarn中具体提供运算资源的角色叫NodeManager
	5.这样一来,yarn其实就与运行的用户程序完全解耦,就意味着yarn上可以运行
	  各种类型的分布式运算程序(mapreduce只是其中的一种),比如mapreduce、storm程序,spark程序,tez ……
	6.所以,spark、storm等运算框架都可以整合在yarn上运行,只要他们各自的框架中有符合yarn规范的资源请求机制即可
	7.Yarn就成为一个通用的资源调度平台,从此,企业中以前存在的各种运算集群都可以整合在一个物理集群上,提高资源利用率,方便数据共享
YARN工作流程
	1.用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等
	2.ResourceManager为该应用程序分配第一个Container,并与对应的NodeManager通信,
	  要求它在这个Container中启动应用程序的ApplicationMaster
	3.ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,
	  然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7
	4.ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源
	5.一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务
	6.NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,
	  将任务启动命令写到一个脚本中,并通过运行该脚本启动任务
	7.各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,
	  以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务
	  (在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态)
	8.应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值