关于flink on yarn只能提交一个job的问题

在Flink集群中遇到任务提交后无法启动的问题,原因是不同任务的TaskManager RPC端口冲突。官方建议在使用cluster模式和perjob模式时,不要手动设置cluster.id,避免端口重复。解决方案是检查并移除配置中的cluster.id参数。

问题:第一个任务正常,随后的任务提交一直显示container分配成功后,没有启动task。仔细对比发现,两个任务的taskmanager的rpc端口一样。

解决方法:

官网解释如下:
在使用cluster模式时,如果使用per job模式,不能手动设置cluster.id,每次提交任务时,会自动生成。检查配置参数,不要配置cluster.id就会解决

在这里插入图片描述

### 3.1 Flink On YARN 提交作业的不同方式及其区别 Apache Flink 支持多种在 YARN 上的部署和提交方式,主要分为三种模式:**Session Mode(会话模式)**、**Per-Job Mode(每作业独立模式)** 和 **Application Mode(应用模式)**。每种模式在资源调度、作业生命周期管理、适用场景等方面有明显差异。 --- #### 3.1.1 Session Mode(会话模式) 在该模式下,Flink 会在 YARN 上启动一个长期运行的集群,包含一个 JobManager 和多个 TaskManager。这个集群可以接受多个作业的提交,作业之间共享资源。 - 优点:资源预先分配,作业提交速度快,适合频繁提交小作业的场景。 - 缺点:作业之间共享资源,资源隔离性差,某个作业失败可能影响其他作业。 - 作业执行完成后,JobManager 和 TaskManager 不会释放,集群持续运行,直到手动停止或 YARN 资源超时回收。 启动命令示例: ```bash ./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 2048 ./examples/batch/WordCount.jar ``` --- #### 3.1.2 Per-Job Mode(每作业独立模式) 在该模式下,每个提交的作业都会启动一个独立的 Flink 集群,包括专属的 JobManager 和 TaskManager。作业完成后,集群资源会被释放。 - 优点:资源完全隔离,作业之间互不影响;适合长时间运行的作业。 - 缺点:作业启动延迟较高,因为每次提交都需要申请资源并启动集群。 - 与 Session Mode 不同,Per-Job 模式下的每个作业拥有独立的计算资源,避免资源争用问题。 启动命令示例: ```bash ./flink run \ -m yarn-cluster \ -yjm 1024 \ -ytm 1024 \ -ynm wordcount \ -c org.apache.flink.examples.java.wordcount.WordCount \ examples/batch/WordCount.jar ``` --- #### 3.1.3 Application Mode(应用模式) 该模式与 Per-Job Mode 类似,每个作业都会启动一个独立的集群。不同之处在于用户代码的解析位置。 -Per-Job Mode 中,用户代码在 JobManager 中解析。 - 在 Application Mode 中,用户代码在 YARN 客户端(即提交作业的机器)上解析,这意味着作业提交过程更加集中和独立。 - 优点:资源隔离性好,适合需要独立部署和控制的作业。 - 缺点:启动延迟较高,适合长时间运行的作业。 启动命令示例: ```bash ./bin/flink run-application \ -t yarn-application \ -c com.wwb.wc.SocketStreamWordCount \ -Dparallelism.default=3 \ -Djobmanager.memory.process.size=2048m \ -Dtaskmanager.memory.process.size=4096m \ -Dyarn.application.name="MyFlinkWordCount" \ -Dtaskmanager.numberOfTaskSlots=3 \ -Dyarn.provided.lib.dirs="hdfs://$NameNode:$port/remote-flink-dist-dir/lib" \ hdfs://$NameNode:$port/job/jars/MyApplication.jar ``` --- ### 3.2 三种模式的主要区别 | 模式 | 集群共享 | 资源隔离 | 作业提交延迟 | 适用场景 | |------------------|----------|----------|--------------|----------------------------------| | Session Mode | 是 | 否 | 低 | 作业频繁提交,资源可共享 | | Per-Job Mode | 否 | 是 | 高 | 长时间运行,资源隔离要求高 | | Application Mode | 否 | 是 | 高 | 用户代码需在客户端解析,独立部署 | --- ### 3.3 适用场景对比 - **Session Mode** 适用于作业频繁提交、资源可以共享、对启动时间敏感的场景,例如实时数据处理流水线中的多个小型任务。 - **Per-Job Mode** 适用于资源隔离要求高、作业之间不能互相干扰的场景,例如多个团队共享同一个 YARN 集群时。 - **Application Mode** 适用于用户代码需要在客户端解析的场景,或者需要更细粒度的资源配置控制,例如将 Flink 作为嵌入式组件集成到其他系统中。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值