Yarn基本概念(一)

1. 前言

从业界使用分布式系统的变化趋势和Hadoop框架的长远来看,MapReduce的JobTracker和TaskTracker机制需要大规模的调整来修复它在可扩展性、内存消耗、可靠性和性能上的缺陷。
为了从跟根本上解决上述问题,从Hadoop0.23.0版本开始,MapReduce框架完全重构,并把新的框架命名为YARN。

2. 为什么要使用Yarn

与旧的MapReduce做比较,Yarn采用了分层的集群架构,主要有如下特点:

  1. 解决了NN的单点故障问题,可以通过配置NN高可用来实现。
  2. 提出了HDFS联邦(Federation),通过HDFS联邦可以使多个NN分别管理不同的目录,从而实现访问隔离及横向扩展。
    在这里插入图片描述
  3. 将资源管理和应用程序管理分离开,分别由ResourceManager和ApplicationMaster负责
  4. 具有向后兼容的特点,运行在MR上的作业不需要做任何修改就可以直接运行在YARN上。
  5. YARN是一个框架管理器,用户可以将各种计算资源移植到YARN上,统一由YARN进行资源的管理和调度,目前支持的计算框架主要由:MapReduce、Storm、Spark、Flink等。

3. Yarn的基本架构

3.1 Yarn的执行和监控过程图

Yarn的核心思想是将功能分开,在MR1.0中,JobTracker有两功能:资源管理、作业调度。在Yarn中则分别由ResourceManager和ApplicationMaster进程来实现,其中,ResourceManager进程完成整个集群的资源管理和调度,而ApplicationMaster则负责应用程序的相关事务,如任务调度、容错和监控等。
系统中所有应用的资源调度最终决定权由ResourceManager担当。每个应用的ApplicationMaster实际上是框架指定的库,其从ResourceManager调度资源并和NodeManager一同执行监控任务,NodeManager会通过心跳信息向ResourceManager汇报自己所在的节点的资源使用情况,下图为执行和监控的过程图:
在这里插入图片描述

3.2 ResourceManager

  1. 处理来自客户端的请求(启动/终止应用程序)
  2. 启动/监控ApplicationMaster,一旦某个AM挂掉之后,RM将会在另外一个节点上启动AM。
  3. 监控NodeManager,接收NodeManger的心跳汇报信息并分配任务到对应的NodeManager去执行,一旦某个NM挂掉,记录该NM的任务信息,同时告诉AM如何进行处理。
  4. 负责整个集群的资源分配和调度

3.3 ApplicationMaster

每个应用一个,负责应用程序的管理。

  1. 数据切分
  2. 为应用程序/作业向ResourceManager申请资源(Container),并分配给内部任务。
  3. 与NodeManger通信以启动/停止任务。
  4. 任务监控和容错(在任务执行失败时重新为该任务申请资源以重启任务)。
  5. 处理ResourceManger发过来的命令:终止Container、让NodeManger重启等。

3.4 NodeManager

整个集群中有多个NodeManager,分则单节点资源管理和使用。

  1. 周期性的向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态。
  2. 接受并处理来自ResourceManager的Container启动/停止的各种命令。
  3. 处理来自ApplicationMaster的命令。
  4. 负责单个节点上的资源管理和任务调度。

3.5 Container

Container是对任务运行环境的抽象。

  1. 任务运行资源(节点、内存、CPU)。
  2. 任务启动命令。
  3. 任务运行环境。
  4. 任务是运行在Container中,一个Container中既可以运行ApplicationMaster,也可以运行具体的Map/Reduce/MPI/Spark Task。

4. Yarn的工作流程

运行在YARN上的应用主要分为两类:短应用程序和长应用程序。其中,短应用程序是☞一定时间内可以运行完成并正常退出的应用程序,如:MapReduce作业、TezDAG作业等。而长应用程序是☞不出意外,永不终止运行的应用程序,通常是一些服务,比如Storm Service(主要包括Nimbus和Supervisor两类服务),HBase Service(包括Hmaster和RegionServer两类服务)等,他们本身作为一个框架提供编程接口供用户使用。尽管这两类应用程序作用不同,但运行在Yarn上的流程是相同的。
当用户向Yarn提交一个应用程序后,Yarn将分两个阶段运行该程序:第一个阶段是启动ApplicationMaster;第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行完成。下图为Yarn的工作流程图:

在这里插入图片描述

  1. Client向ResourceManger提交应用程序,包括启动该应用的ApplicationMaster的必需信息,例如ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
  2. ResourceManager在NodeManager中启动一个Container用于运行ApplicationMaster。
  3. 启动中的ApplicationMaster向ResourceManager注册自己,启动成功后与ResourceManager保持心跳。
  4. ApplicationMaster采用轮询的方式通过RPC请求向ResourceManager申请和获取资源。
  5. ResourceManager返回ApplicationMaster申请的Container信息。申请成功的Container由ApplicationMaster进行初始化。Container的启动信息初始化后,AM与对应的NM通信,要求NodeManager启动Container。
  6. ApplicationMaster与NodeManager保持通信,从而对NodeManager上运行的任务进行监控和管理,Container运行期间ApplicationMaster对Container进行监控。Container通过RPC协议向对应的ApplicationMaster汇报自己的进度和状态等信息。
  7. 应用运行期间Client直接与ApplicationMaster通信获取应用的状态、进度更新等信息。
  8. 应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己,并允许属于它的Container被收回。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值