Flink on Yarn运行模式下三种部署模式的区别与联系

前言

Flink on YARN 运行模式下,Flink 提供了三种主要的部署模式:Session ModePer-Job ModeApplication Mode。每种模式在集群管理、资源分配、作业执行等方面有不同的特点,适用于不同的场景。接下来详细介绍这三种部署模式及其适用场景。

Session Mode

描述

  • 共享集群,一个集群多个作业
    • Session Mode 下,多个作业可以共享一个集群。
    • JobManager 是长期运行的,多个作业可以提交到这个共享的 JobManager 上执行。
    • 每个作业对应一个独立的 JobMaster,但所有作业共享同一个集群资源。

适用场景

多个作业需要共享集群资源且作业生命周期较长的情况。

启动命令

bin/yarn-session.sh -nm test
可用参数解读:
-d:分离模式,如果你不想让Flink YARN客户端一直前台运行,可以使用这个参数,即使关掉当前对话窗口,YARN session也可以后台运行。
-jm(--jobManagerMemory):配置JobManager所需内存,默认单位MB。
-nm(--name):配置在YARN UI界面上显示的任务名。
-qu(--queue):指定YARN队列名。
-tm(--taskManager):配置每个TaskManager所使用内存。

Per-Job Mode

描述

  • 独享集群,一个作业一个集群
    • 每次提交作业时,都会启动一个独立的 Flink 集群,包括一个独立的 JobManager 和多个 TaskManager
    • 作业执行完毕后,整个集群会被销毁。

适用场景

每个作业都需要独立的集群资源,特别是当作业之间没有共享资源需求时。

启动命令

bin/flink run -d -t yarn-per-job -c com.wwb.wc.SocketStreamWordCount SocketStreamWordCount.jar

Application Mode

描述

  • 独享集群,与 Per-Job Mode 的区别在于用户代码的解析位置
    • Per-Job Mode 相似,每次提交作业时都会启动一个独立的集群,包括独立的 JobManagerTaskManager
    • 区别在于用户代码的解析:在 Per-Job Mode 中,作业代码通常是在 JobManager 中解析的,而在 Application Mode 中,用户代码会在 YARN 应用的客户端(Client) 侧进行解析。这意味着 Application Mode 会使得作业的提交和资源分配更为集中和独立。

适用场景

Per-Job Mode 类似,但是适合那些需要将作业作为独立应用提交并控制作业生命周期的场景,尤其是在作业和资源管理之间有较强依赖时。

启动命令

应用模式同样非常简单,与单作业模式类似,直接执行flink run-application命令即可

bin/flink run-application -t yarn-application -c com.wwb.wc.SocketStreamWordCount SocketStreamWordCount.jar 

进一步总结:

特性/模式Session ModePer-Job ModeApplication Mode
集群共享性一个集群多个作业共享每个作业独立使用一个集群每个作业独立使用一个集群
JobManager长期运行的 JobManager,多个作业共享一个 JobManager每个作业启动独立的 JobManager每个作业启动独立的 JobManager,JobManager 与 YARN 应用生命周期绑定
作业数量支持多个作业,作业共享资源每个作业是独立的每个作业是独立的
作业生命周期作业提交后,集群持续运行,直到手动停止作业完成后,集群会被销毁作业完成后,集群会被销毁
代码解析位置作业代码在 JobManager 解析作业代码在 JobManager 解析作业代码在 Client(YARN 应用客户端) 解析
适用场景多个作业共享资源,适合长期运行多个作业独立运行的作业,适合资源隔离较强的场景将作业作为独立应用提交,适合资源需求较独立的作业

总结

  • Session Mode:适用于多个作业共享同一个集群资源,适合需要长时间运行的场景。
  • Per-Job Mode:适用于单个作业运行时,独立启动集群,适合资源隔离要求高的场景。
  • Application Mode:与 Per-Job Mode 类似,但作业代码的解析发生在 JobManager,适合大规模提交作业且作业独立性较强。缓解了Per-Job 模式下单client 端的提交压力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值