网站首页 > 博客文章 正文
我们在学习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 模式的一些特点和实现方式:
- 在 Session 模式下,Flink 集群作为长期存在的会话运行,可以被用于提交多个 Flink 应用程序。这些应用程序可以共享相同的 Flink 集群和资源,从而减少了资源占用和管理的负担。
- 用户可以通过 Yarn 的管理界面或命令行向 Flink 集群发送应用程序提交请求。在接收到提交请求后,Flink 会话会根据应用程序的需求分配资源,并启动相应的 Flink 作业。
- 在 Session 模式下,Flink 集群和应用程序都可以在同一个 Yarn 应用程序中运行。对于每个应用程序,Yarn 将为该应用程序创建一个不同的容器,容器中会运行一个 Flink TaskManager 进程和一个 Flink JobManager 进程。多个容器中的 Flink TaskManager 会连接到同一个 Flink JobManager,通过该 JobManager 协调和管理整个 Flink 集群。
- 在 Flink Session 模式中,用户可以通过 Web UI 或命令行界面来查看每个 Flink 作业的执行情况、资源使用情况以及日志信息等。同时,Flink 支持动态调整任务的资源配置,例如增加某个任务的任务槽数量或内存占用等。
- 综上所述,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 模式的一些特点和实现方式:
- 在 Per Job 模式下,用户需要为每个应用程序创建单独的 Yarn 应用程序并调整相应的参数和配置。每个应用程序都会启动一个新的、独立的 Flink 集群,该集群只为当前作业提供资源。
- 在 Per Job 模式下,Flink 应用程序可以使用 Yarn 集群中的所有可用资源,从而可以充分利用集群资源,并在有限的时间内完成计算任务。
- Yarn 的 ResourceManager 会为每个 Flink 作业分配所需的资源,启动相应的容器并进行初始化。Flink 集群将由一个 JobManager 和多个 TaskManager 组成,它们负责管理和执行传入的作业。
- 在 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 模式。
- 上一篇: 如果在 Ubuntu 24.04 上安装 Yarn ?
- 下一篇: node-sass无法下载的解决
猜你喜欢
- 2024-11-30 Hadoop集群部署(实操干货,建议收藏)
- 2024-11-30 列式存储的分布式数据库——HBase(环境部署)
- 2024-11-30 Vue3.2项目架构详解
- 2024-11-30 Flink安装(Standalone、Yarn模式)
- 2024-11-30 Apache Doris 整合 Iceberg + Flink CDC 构建实时湖仓一体的联邦查询
- 2024-11-30 大数据Apache Druid(二):Druid数据结构及架构原理
- 2024-11-30 CTO来教你:技术人员突然离职,如何接手他的项目?
- 2024-11-30 1.4 Flink on YARN集群部署《Flink核心源码解读》
- 2024-11-30 windows系统下如何安装多版本node.js
- 2024-11-30 从 jQuery 到 Vue3 的快捷通道
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- powershellfor (73)
- messagesource (71)
- plsql64位 (73)
- vueproxytable (64)
- npminstallsave (63)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- nacos启动失败 (64)
- ssh-add (70)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)