Advertisement

yarn原理_Flink on Yarn–Per Job 与 Yarn–Session原理及区别

阅读量:

导读:从功能实现的角度来看,Flink集群部署的方式多种多样,主要包括以下几种类型:Flink Standalone,Flink on Yarn以及基于Kubernetes的部署方案.在采用Yarn的场景下,则可分为两种不同的运行模式:即针对单个作业的任务分配(Yarn–Per Job模式)和基于会话式的任务调度(Yarn–Session模式).本文旨在深入探讨并比较这两种运行模式的理论基础及其适用场景.

  • yarn 架构原理-概述
  • yarn 架构原理-组件构成
  • yarn 架构原理-交互机制
  • 基于每个作业的任务处理
  • 基于会话的流处理机制

Yarn 架构原理–总览

首先让我们来了解一下Yarn的架构设计。如果不深入掌握Yarn内部机制及其设计理念则很难全面理解Flink是如何在其上构建高效的数据流处理框架的

221e8c841785f5fd4e3d36cedadb019a.png

Yarn系统的架构设计如图所示,在其核心机制中起着关键作用的是ResourceManager这一主要组件,在此框架下实现对系统内各类资源的有效整合与协调配置。系统客户端则通过调用特定接口将任务提交给ResourceManager进行处理。

用户在客户端发起请求后将任务授权给Resource Manager。Resource Manager随后会启动Container,并开始运行Application Master。Master节点启动后会再次请求资源。当ResourceManager分配完资源给ApplicationMaster后, ApplicationMaster负责调度具体的Task执行。

Yarn 架构原理–组件

Yarn 集群中的组件包括:

  • ResourceManager (RM) :ResourceManager (RM)负责处理客户端请求、启动/监控 ApplicationMaster、监控 NodeManager、资源的分配与调度,包含 Scheduler 和 Applications Manager。
  • ApplicationMaster (AM) :ApplicationMaster (AM)运行在 Slave 上,负责数据切分、申请资源和分配、任务监控和容错。
  • NodeManager (NM) :NodeManager (NM)运行在 Slave 上,用于单节点资源管理、AM/RM通信以及汇报状态。
  • Container :Container 负责对资源进行抽象,包括内存、CPU、磁盘,网络等资源。

Yarn 架构原理–交互

f01a70dae785a708511a433908c51292.png

以在 Yarn 上运行 MapReduce 任务为例来讲解下 Yarn 架构的交互原理:

在操作过程中, 用户开发了MapReduce代码,随后通过客户端端提交任务. ResourceManager接收到客户端请求后,会接收请求并分配一个容器,用于启动ApplicationMaster服务,并通知相关节点管理器在该容器下启动ApplicationMaster服务. ApplicationMaster服务成功启动后,会发出注册请求至ResourceManager.接着,该服务将根据获取到的资源信息与相关节点管理器建立通信,并指示其启动相应的任务.多个节点管理器会依次发起启动Map/Reduce作业的操作.每个节点管理器都会持续向ApplicationMaster报告作业状态及进度.当所有MapReduce作业都完成之后,ApplicationMaster将向ResourceManager提交任务完成报告并进行注销操作.

edbe4f0ced94f1ead87a8da3bcf77da6.png

Flink on Yarn中的每个作业模式指的是每次提交一个任务,在任务运行完成后会自动释放资源。在深入理解Yarn的工作原理后,掌握Per Job的具体流程就显得相对容易了。具体来说:
第一步是将作业提交到Yarn集群中进行处理;
第二步是由Yarn负责调度并执行这些作业;
第三步是确保资源使用效率的同时完成所有作业的处理;
最后一步是检查并清理中间结果文件夹。
这种工作流程设计不仅提高了资源利用率还简化了作业管理过程

首先是由客户端提交Yarn应用程序(如JobGraph或JARs)。
紧接着,在YARN平台上启动第一个容器进程。
最后,在完成上述步骤后系统将自动启动任务管理器,并根据资源分配情况对任务进行调度执行。

4c625a6ebac4d04b110718701d70df03.png

在PerJob模式下,完成任务后所有资源都会被释放,其中包括JobManager和TaskManagers均退出系统。相比之下,Session模式具有不同的特点,它的Dispatcher和ResourceManager是可以被复用的。当Dispatcher接收到请求后,将触发JobManager(A),由其负责启动并运行相应的TaskManagers;随后会启动JobManagers(B)及其对应的TaskManagers进行处理;只有当A、B两个作业完成之后,相关资源才不会再被占用。值得注意的是,Session模式也被称作多线程模式(即每个作业池之间共享一个Dispatcher),其核心优势在于所有作业池都能共享同一个ResourceManager。

采用不同的应用场景来区分这两种模式:其中一种是采用不同的应用场景来区分这两种模式:其中一种是采用不同场景下的工作流程安排策略

Yarn 模式特点

Yarn 模式的优点有:

  • 资源的统一管理与调度 。在Yarn集群中所有节点(内存、CPU、磁盘、网络等)都被抽象为Container。当计算框架需要执行运算任务时会向Resource Manager申请Container。Yarn模式能够采用多种任务调度策略以提升集群的整体资源利用率。例如FIFO scheduler容量 scheduler和公平 scheduler,并支持根据需求设置任务优先级。
  • 资源隔离 。为了防止各容器之间的相互干扰Yarn采用了轻量级资源隔离机制Cgroups一旦某个容器使用的资源量超过预先设定的上限值就会被终止。
  • 自动 failover 处理 。例如Yarn NodeManager会对运行状态进行监控并在出现异常情况时自动切换到备用方案以保证系统的稳定运行。
  • 异常恢复 。例如Yarn ApplicationManager能够在遇到故障时自动启动故障恢复流程确保服务正常运转。

尽管 Yarn 模式具备诸多优势但也同时存在明显的缺陷。例如其运维部署的成本相对较高并且其灵活性相对较低

最后

本文内容源自 阿里巴巴集团的技术专家周凯波老师(宝牛)对 Flink on Yarn / K8s 原理剖析及实践一文的深度解读。原文: https://mp.weixin.qq.com/s/sVdI61Un8C8ycArdrwgmTg

感谢您的收看!如若感兴趣,请别忘了点赞、收藏与在看。平台致力于持续输出与技术相关的优质内容。如您有任何建议或反馈意见,请随时提出!

全部评论 (0)

还没有任何评论哟~