码迷,mamicode.com
首页 > 其他好文 > 详细

yarn初始

时间:2020-11-19 12:56:26      阅读:17      评论:0      收藏:0      [点我收藏+]

标签:单点   not   sch   alt   单点故障   strong   进程   交互   contain   

yarn是什么:

旧版本MapReduce中的JobTracker/TaskTracker在可扩展性、内存消耗、可靠性和线程模型方面存在很多问题,需要开发者做很多调整来修复。

Hadoop的开发者对这些问题进行了Bug修复,可是由此带来的成本却越来越高,为了从根本上解决旧MapReduce存在的问题,同时也为了保障Hadoop框架后续能够健康地发展,从Hadoop 0.23.0版本开始,Hadoop的MapReduce框架就被动了“大手术”,从根本上发生了较大变化。同时新的Hadoop MapReduce框架被命名为MapReduce V2,也叫YARN(Yet Another Resource Negotiator,另一种资源协调者)。

yarn的优点:

1.与旧MapReduce作比较,YARN采用了一种分层的集群框架。

2·解决了NameNode的单点故障问题,可以通过配置NameNode高可用来解决。

3.·提出了HDFS联邦,通过HDFS联邦可以使多个NameNode分别管理不同的目录,从而实现访问隔离及横向扩展。

4.·将资源管理和应用程序管理分离开,分别由ResouceManager和ApplicationMaster负责。

5.·具有向后兼容的特点,运行在MR1上的作业不需要做任何修改就可以运行在YARN上。

6.·YARN是一个框架管理器,用户可以将各种计算框架移植到YARN上,统一由YARN进行管理和资源调度。目前支持的计算框架有MapReduce、Storm、Spark和Flink等。

在YARN中,ResourceManager进程完成整个集群的资源管理和调度  ,而Application Master进程则负责应用程序的相关事务,如任务调度、容错和任务监控等。

系统中所有应用资源调度的最终决定权由ResourceManager担当。

每个应用的ApplicationMaster实际上是框架指定的库,其从ResourceManager调度资源并和Node Maneger一同执行监控任务,NodeManager会通过心跳信息向ResourceManager汇报自己所在节点的资源使用情况,如图7.1所示。

技术图片

 

 ResourceManager进程包含两个主要内容:Scheduler和ApplicationManager。

Scheduler依据容量和队列等类似的约束分配资源到运行的不同应用中。Scheduler是一个纯调度器,它不监督也不跟踪应用的状态。同样地,它不确保重启由应用失败或硬件失败所造成的失败任务。Scheduler根据应用所需的资源执行调度,调度内存、CPU、硬盘和网络等资源到Container中。

ApplicationManager进程负责接收作业提交,协商首个Container执行应用指定的ApplicationManager并提供重启失败的ApplicationManager Container的服务。

每个机器上的NodeManager作为框架代理,负责监控Container资源使用的监控并提供类似ResourceManager或者Scheduler之类提供的报告。

每个应用的ApplicationMaster进程负责协调Scheduler上合适的资源容器,并跟踪容器状态和监控执行。

YARN工作流程

技术图片

 

 YARN的工作流程主要分为以下几个步骤。

(1)用户向YARN中的Resource Manager提交应用程序,包括用户程序、启动ApplicationMaster命令和ApplicationMaster程序等。

(2)ResourceManager为应用程序分配Container,随后与Container所在的NodeManager进行通信,并且由NodeManager在Container中启动对应的ApplicationMaster。

(3)ApplicationMaster会在ResourceManager中进行注册,这样用户就能够通过ResourceManager来查看应用程序的运行情况,然后它会为这个应用程序的各项任务申请资源,同时监控其运行状态直到结束。

(4)ApplicationMaster采用的是轮询方式,基于RPC协议向ResourceManager申请和获取所需要的资源。

(5)在ApplicationMaster申请到资源后,它会和申请到的Container所对应的NodeManager进行交互通信,同时要求在该Container中启动任务。

(6)NodeManager为要启动的任务准备好运行环境,并且将启动命令写在一个脚本中,通过该脚本来运行任务。

(7)每个任务基于RPC协议向对应的ApplicationMaster汇报自己的运行状态与进度,以便让ApplicationMaster随时掌握各个任务的运行状态,这样就可以在任务运行失败时重启任务。

(8)在应用程序运行完之后,其对应的ApplicationMaster会通过与ResourceManager通信来要求注销和关闭自己。

yarn初始

标签:单点   not   sch   alt   单点故障   strong   进程   交互   contain   

原文地址:https://www.cnblogs.com/gzgBlog/p/13974696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!