专业的编程技术博客社区

网站首页 > 博客文章 正文

Flink的YARN Session模式和per-job模式有什么区别

baijin 2024-11-30 11:14:01 博客文章 4 ℃ 0 评论

我们在学习Flink这个主流计算框架的过程中,肯定知道在基于yarn进行资源调度的时候,有两种常用的提交流程,一种是session,一种是per-job模式。让我们通过下文的阅读看看他们之间有什么区别吧。

一、YARN

Yet Another Resource Negotiator简称YARN ,另一种资源协调者,是Hadoop的资源管理器。

说到yarn,我们肯定要说一下yarn的几个组件,以及他们的作用:

Container

容器(Container)这个东西是 Yarn 对资源做的一层抽象。就像我们平时开发过程中,经常需要对底层一些东西进行封装,只提供给上层一个调用接口一样,Yarn 对资源的管理也是用到了这种思想。

如上所示,Yarn 将CPU核数,内存这些计算资源都封装成为一个个的容器(Container)。需要注意两点:

1. 容器由 NodeManager 启动和管理,并被它所监控。

2.容器被 ResourceManager 进行调度。

ResourceManager

从名字上我们就能知道这个组件是负责资源管理的,整个系统有且只有一个 RM ,来负责资源的调度。它也包含了两个主要的组件:定时调用器(Scheduler)以及应用管理器(ApplicationManager)。

定时调度器(Scheduler):从本质上来说,定时调度器就是一种策略,或者说一种算法。当 Client 提交一个任务的时候,它会根据所需要的资源以及当前集群的资源状况进行分配。注意,它只负责向应用程序分配资源,并不做监控以及应用程序的状态跟踪。

应用管理器(ApplicationManager):同样,听名字就能大概知道它是干嘛的。应用管理器就是负责管理 Client 用户提交的应用。上面不是说到定时调度器(Scheduler)不对用户提交的程序监控嘛,其实啊,监控应用的工作正是由应用管理器(ApplicationManager)完成的。

ApplicationMaster

它是由每个应用程序提交到 YARN 集群上的作业自动创建的,负责协调和管理应用程序所需的资源,从 ResourceManager 中申请合适的资源来运行该应用程序,然后通过与 NodeManagers 合作启动和监督运行应用程序的进程。

具体来说,ApplicationMaster 主要有以下几个作用:

1. 与 ResourceManager 协商获取应用程序所需的资源(如内存、CPU等)。

2. 分配资源给要执行的任务,并维护任务运行状态。

3. 与 NodeManagers 通信,以确定可用的资源,并启动和监视容器来运行任务进程。

4. 处理应用程序的各种异常情况,如任务失败、节点故障等,以保证应用程序的稳定运行。

NodeManager

NodeManager 是一个在集群节点上运行的 YARN 的代理程序,它管理着节点上的指定资源并负责启动和监视容器(Container)进程。NodeManager 的作用是为应用程序提供可用的计算资源并管理这些资源的使用。

具体来说,NodeManager 的主要作用包括以下几个方面:

1. 启动和监控容器。一旦 ApplicationMaster 申请到资源,NodeManager 就负责启动并监测该容器,确保容器进程按预期执行。

2. 监控节点资源使用。NodeManager 不断监控节点的资源使用情况,包括 CPU、内存、网络和磁盘等,并向 ResourceManager 发送相应的心跳信号,以便资源管理器能够了解当前节点的资源使用状况。

3. 清理节点上的无用资源。当容器退出或发生故障时,NodeManager 会及时清理容器进程遗留下的资源,以便这些资源可以被其他容器或应用程序使用。

二、Flink on yarn-session

Flink on Yarn–Session 模式指的是在 Yarn 集群中以会话模式运行 Apache Flink 应用程序。在 Session 模式下,用户可以创建和维护一个长时间运行的 Flink 会话,并在该会话中提交多个应用程序,在不同的时间异步地运行它们。这种模式能够充分利用集群资源并提高运行效率。

下面是 Flink on Yarn–Session 模式的一些特点和实现方式:

  1. 在 Session 模式下,Flink 集群作为长期存在的会话运行,可以被用于提交多个 Flink 应用程序。这些应用程序可以共享相同的 Flink 集群和资源,从而减少了资源占用和管理的负担。
  2. 用户可以通过 Yarn 的管理界面或命令行向 Flink 集群发送应用程序提交请求。在接收到提交请求后,Flink 会话会根据应用程序的需求分配资源,并启动相应的 Flink 作业。
  3. 在 Session 模式下,Flink 集群和应用程序都可以在同一个 Yarn 应用程序中运行。对于每个应用程序,Yarn 将为该应用程序创建一个不同的容器,容器中会运行一个 Flink TaskManager 进程和一个 Flink JobManager 进程。多个容器中的 Flink TaskManager 会连接到同一个 Flink JobManager,通过该 JobManager 协调和管理整个 Flink 集群。
  4. 在 Flink Session 模式中,用户可以通过 Web UI 或命令行界面来查看每个 Flink 作业的执行情况、资源使用情况以及日志信息等。同时,Flink 支持动态调整任务的资源配置,例如增加某个任务的任务槽数量或内存占用等。
  5. 综上所述,Flink Session 模式是一种长时间运行的 Flink 集群,可以用于提交多个 Flink 应用程序,并共享相同的资源和集群。它可以提高资源利用率和运行效率。

三、Flink on yarn-Per job

Flink on Yarn–Per Job 模式指的是通过向 Yarn 集群提交独立的 Flink 作业来运行 Apache Flink 应用程序。在 Per Job 模式下,每次提交作业时,Flink 会启动一个新的 Flink 集群来运行该作业,作业完成后该集群也会被关闭。这种模式适用于需要独立资源且彼此不相关的场景。

下面是 Flink on Yarn–Per Job 模式的一些特点和实现方式:

  1. 在 Per Job 模式下,用户需要为每个应用程序创建单独的 Yarn 应用程序并调整相应的参数和配置。每个应用程序都会启动一个新的、独立的 Flink 集群,该集群只为当前作业提供资源。
  2. 在 Per Job 模式下,Flink 应用程序可以使用 Yarn 集群中的所有可用资源,从而可以充分利用集群资源,并在有限的时间内完成计算任务。
  3. Yarn 的 ResourceManager 会为每个 Flink 作业分配所需的资源,启动相应的容器并进行初始化。Flink 集群将由一个 JobManager 和多个 TaskManager 组成,它们负责管理和执行传入的作业。
  4. 在 Flink Per Job 模式下,用户可以通过 Web UI 或命令行界面来查看每个 Flink 作业的执行情况、资源使用情况以及日志信息等。同时,用户也可以在提交作业之前配置 Flink 集群的参数和资源限制,例如任务槽数量、内存占用等。

综上所述,Flink on Yarn–Per Job 模式适用于需要独立资源且彼此不相关的场景。它通过向 Yarn 集群提交独立的 Flink 作业来运行应用程序,并为每个作业启动一个新的 Flink 集群,从而充分利用集群资源,提高了应用程序的计算效率。

总结

Flink on Yarn–Session 模式适合于长时间运行的 Flink 会话,该会话可以为多个应用程序提供共享资源,并以异步方式运行这些应用程序。该模式的主要优点是提高了集群资源的利用率和运行效率,适用于处理大规模数据和实时流式处理等场景。比如flink-sql 调试的时候。

Flink on Yarn–Per Job 模式则适用于需要独立资源且彼此不相关的场景,在每次提交一个作业时,Flink 会启动一个新的 Flink 集群来运行该作业,作业完成后该集群也会被关闭。该模式的主要优点是资源隔离和管理相对简单,适用于一次性计算任务或有限时间内需要完成的任务。

具体区别如下:

  • 生命周期和资源隔离方式不同:Flink on Yarn–Session 中的 Flink 集群是长期存在的会话模式,可以为多个应用程序提供资源;而 Flink on Yarn–Per Job 则是每次提交一个作业就会启动一个新的 Flink 集群,作业完成后该集群也会被关闭。
  • 资源使用方式不同:Flink on Yarn–Session 中 Flink 应用程序以异步方式运行,并共享相同的资源和集群,而 Flink on Yarn–Per Job 则需要为每个应用程序创建单独的 Yarn 应用程序,并调整相应的参数和配置,每个应用程序都会启动一个新的、独立的 Flink 集群,该集群只为当前作业提供资源。

综上所述,当需要长时间运行的 Flink 会话且多个应用程序需要共享资源时,可以选择 Flink on Yarn–Session 模式;当需要独立资源且彼此不相关的场景时,可以选择 Flink on Yarn–Per Job 模式。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表