Hadoop()Yarn

版权声明:@GaoShan https://blog.csdn.net/weixin_42969976/article/details/87118782

Yarn流程

1.用户向yarn提交应用程序,其中包括ApplicationMaster程序,启动的命令,用户程序等
2.ResourceManager为该应用程序分配第一个Container,并与对应的NodeManager通信,要求它在这个container中启动应用程序的ApplicationMaster
3.ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序运行状态,然后它将为各个任务
  申请资源,并监控运行状态,直到任务结束,重复4-7步
4.ApplicationMaster轮询的方式通过RPC协议向ResourceManager申请和领取资源
5.一旦ApplicationMaster领取到资源后,便和NodeManager通信,要求启动任务
6.NodeManager为任务设置好环境后,将任务启动命令写到一个脚本中,并通过运行脚本启动任务
7.各个任务通过RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在
  任务失败重新启动任务。
8.应用程序执行完成后,ApplicationMaster向ResourceManager注销并关闭自己。

Yarn中调度原则

Yarn中调度原则:FIFO
简单易懂,不需要任何配置,但是不适合共享集群。
大的应用会占用集群中的所有资源,所以每个应用都必须等待到自己运行。
在一个共享集群中,更适合使用容量调度器(CapacityScheduler)和公平调度器(FairScheduler)。
这两种调度器都允许长时间运行的作业能及时完成,同时也允许正在运行较小临时查询的用户能够在合理时间内得到返回结果。

Yarn中四个主要成员

1.ResourceManager
	资源管理器,主要负责资源管理和调度,主要有两个组件组成:ApplicationManager+Scheluder
	ApplicationManager负责监控各个系统应用,启动和监测ApplicationMaster
	Scheluder负责分配Container给ApplicationMaster,根据不同需求选择不同的调度策略
2.NodeManager
	节点管理器,主要负责维护本节点的资源情况和任务管理。NodeManager需要定期向ResourceManager汇报资源使用情况,以便
	ApplicationManager根据情况向ApplicationMaster分配资源,其次需要管理ApplicationMaster提交的task,比如启动或停止的请求。
3.ApplicationMaster
	用户提交的每个Program都会有一个对应的ApplicationMaster,主要负责监控应用,任务容错。它同时和ResourceManager和
	NodeManager有交互,向ResourceManager申请资源,请求NodeManager启动或提示task
4.Container
	容器是资源调度的单位。它是内存,磁盘和IO的集合。ApplicationMaster会分配Contaniner给task,task只能用分配给它的container
	的资源。分配流程为:ResourceManager->ApplicationMaster->task

Yarn中调度过程


Yarn中job提交流程

在这里插入图片描述

Yarn中常见问题

“MapReduce2.0”与“YARN”是否等同,尝试解释说明

MapReduce2.0--mapreduce+yarn
YARN是“YetAnotherResourceNegotiator”的简称。在进一步了解YARN框架之前我们需要知道,相比较而言,MapReduce则是YARN的
一个特例。YARN则是MapReduce的一个更加通用和高级的框架形式,并在其上增加了更多的功能。例如通过加载分布式执行脚本可以
集群节点上执行独立的脚本任务,并且更多功能正在被追加中。所以我们可以看到,YARN可以直接运行在MapReduce运行的框架上而
不会造成更多的干扰,并且会为集群的运算带来更多的好处。更一步的开发显示了YARN会允许开发者根据自己的需求运行不同版本的
MapReduce在集群中,这将为开发者提供更为便捷的服务



猜你喜欢

转载自blog.csdn.net/weixin_42969976/article/details/87118782