解决Flink on Yarn模式多Yarn Session会话提交

目录

1、存在问题

[1.1 提交指定application的会话](#1.1 提交指定application的会话)

[1.2 提交application不存在的会话](#1.2 提交application不存在的会话)

[1.3 Kill 最新的application会话,然后指定application会话提交](#1.3 Kill 最新的application会话,然后指定application会话提交)

2、如何解决

3、补充说明

[3.1 默认/tmp目录下指定的最新会话的ID](#3.1 默认/tmp目录下指定的最新会话的ID)

[3.2 修改/tmp目录下的临时缓存文件,不设置参数"-D execution.target=yarn-session"](#3.2 修改/tmp目录下的临时缓存文件,不设置参数"-D execution.target=yarn-session”)

[3.3 修改/tmp目录下的临时缓存文件,设置参数"-D execution.target=yarn-session"](#3.3 修改/tmp目录下的临时缓存文件,设置参数"-D execution.target=yarn-session”)

[3.4 删除/tmp目录下的临时缓存文件(前面设置的ID为22)](#3.4 删除/tmp目录下的临时缓存文件(前面设置的ID为22))

[3.4.1 情景一(设置参数,指定ID):](#3.4.1 情景一(设置参数,指定ID):)

[3.4.2 情景二(不设置参数,指定ID):](#3.4.2 情景二(不设置参数,指定ID):)

[3.4.3 情景三(不存在的ID):](#3.4.3 情景三(不存在的ID):)

1、存在问题

Flink on Yarn模式启动多个Session会话,使用命令行提交sql文件,默认会提交到最近的一个Yarn Session会话里面。

在flink的bin目录下启动yarn会话的命令如下:

bash 复制代码
yarn-session.sh -nm flink-session-1 -d -s 4 -n 2 -jm 1024 -tm 4096
yarn-session.sh -nm flink-session-2 -d -s 4 -n 2 -jm 1024 -tm 4096
yarn-session.sh -nm flink-session-3 -d -s 4 -n 2 -jm 1024 -tm 4096

1.1 提交指定application的会话

在flink的bin目录下提交sql文件的命令如下:

bash 复制代码
./bin/sql-client.sh embedded     -D yarn.application.id=application_1763460582895_0006    -f /home/bigdata/download/sql/content_is_delete.sql

对应提交的会话是application_1763460582895_0008

1.2 提交application不存在的会话

!!!注意:如果是其他ID,如application_1763460582895_0009,没有报错,仍然是提交到最近存在的一个Yarn会话(这里是application_1763460582895_0008)

在flink的bin目录下提交命令如下:

bash 复制代码
./sql-client.sh embedded     -D yarn.application.id=application_1763460582895_0009    -f /home/bigdata/download/sql/content_is_delete.sql

1.3 Kill 最新的application会话,然后指定application会话提交

Kill最新的application会话如下:

bash 复制代码
yarn application -kill application_1763460582895_0008

在flink的bin目录下提交命令如下:

bash 复制代码
./sql-client.sh embedded     -D yarn.application.id=application_1763460582895_0006    -f /home/bigdata/download/sql/content_is_delete.sql

然后就会出现一下报错:

2、如何解决

重新启动一个Yarn Session会话,查看/tmp目录下生成的临时文件,发现指定的是最新的会话ID

而需要提交到指定application会话则需要在之前的命令中添加参数设置,对应的提交命令如下:

bash 复制代码
./sql-client.sh embedded     -D execution.target=yarn-session      -D yarn.application.id=application_1763460582895_0006     -f /home/bigdata/download/sql/content_is_delete.sql

最主要的是设置"-D execution.target=yarn-session"

然后就能在application_1763460582895_0006的Flink Web UI界面看见之前提交的任务。对应结果如下:

查看最新的application_1763460582895_0009是没有任务提交的,说明使用上述的-D execution.target=yarn-session参数设置可以实现多Yarn Session模式下,将sql文件提交到指定的Yarn Session。

3、补充说明

3.1 默认/tmp目录下指定的最新会话的ID

启动3个Yarn Session会话,默认的/tmp目录下指定的最新会话的ID。

若需要指定会话进行提交,则需要进行前面"-D execution.target=yarn-session"参数的指定。

3.2 修改/tmp目录下的临时缓存文件,不设置参数"-D execution.target=yarn-session"

若将/tmp目录下的临时缓存修改成22,不设置参数"-D execution.target=yarn-session"。那么执行相应的sql任务提交,则会将任务提交到22的Yarn Session会话中。

bash 复制代码
vi .yarn-properties-bigdata
cat /tmp/.yarn-properties-bigdata
bash 复制代码
./sql-client.sh embedded    -D yarn.application.id=application_1763460582895_0020     -f /home/bigdata/download/sql/content_is_delete.sql

3.3 修改/tmp目录下的临时缓存文件,设置参数"-D execution.target=yarn-session"

将/tmp目录下的临时缓存修改成22,设置参数"-D execution.target=yarn-session"。那么执行相应的sql任务提交,则会将任务提交到命令指定的Yarn Session会话中。

bash 复制代码
./sql-client.sh embedded     -D execution.target=yarn-session      -D yarn.application.id=application_1763460582895_0020     -f /home/bigdata/download/sql/content_is_delete.sql

3.4 删除/tmp目录下的临时缓存文件(前面设置的ID为22)

3.4.1 情景一(设置参数,指定ID):

这时候设置了"-D execution.target=yarn-session",然后指定了ID,仍然可以将任务提交到指定会话。

bash 复制代码
rm -rf .yarn-properties-bigdata
ls -la /tmp/.yarn-properties*

出现"ls: 无法访问/tmp/.yarn-properties*: 没有那个文件或目录"则说明删除成功

bash 复制代码
./sql-client.sh embedded     -D execution.target=yarn-session      -D yarn.application.id=application_1763460582895_0020     -f /home/bigdata/download/sql/content_is_delete.sql

同理,删除临时缓存文件,若设置了"-D execution.target=yarn-session",然后指定了ID,仍然可以将任务提交到指定会话。

bash 复制代码
./sql-client.sh embedded     -D execution.target=yarn-session      -D yarn.application.id=application_1763460582895_0022     -f /home/bigdata/download/sql/content_is_delete.sql


./sql-client.sh embedded     -D execution.target=yarn-session      -D yarn.application.id=application_1763460582895_0024     -f /home/bigdata/download/sql/content_is_delete.sql

3.4.2 情景二(不设置参数,指定ID):

删除临时缓存文件,不设置"-D execution.target=yarn-session",仅仅指定了ID,可以将任务提交到指定会话。

bash 复制代码
./sql-client.sh embedded      -D yarn.application.id=application_1763460582895_0022     -f /home/bigdata/download/sql/content_is_delete.sql

因删除临时缓存文件前,ID指定为22。这里删除临时文件之后,将提交任务的命令换成其他ID,同时不设置"-D execution.target=yarn-session",仍然可以将任务提交到指定会话。

bash 复制代码
./sql-client.sh embedded      -D yarn.application.id=application_1763460582895_0020     -f /home/bigdata/download/sql/content_is_delete.sql

同理,将ID设置为24,不设置"-D execution.target=yarn-session",也可以将任务提交到指定会话

bash 复制代码
./sql-client.sh embedded      -D yarn.application.id=application_1763460582895_0024     -f /home/bigdata/download/sql/content_is_delete.sql

3.4.3 情景三(不存在的ID):

因前面1.2提到的提交application不存在的会话,在临时缓存文件存在的情况下,会将任务提交到最新的一个Yarn session会话中。然而这里删除了临时文件,在随便执行一个ID,不设置"-D execution.target=yarn-session"的情况下会出现报错。

bash 复制代码
./sql-client.sh embedded      -D yarn.application.id=application_1763460582895_0021     -f /home/bigdata/download/sql/content_is_delete.sql

同时在随便执行一个ID,设置"-D execution.target=yarn-session"的情况下也会出现报错。

bash 复制代码
./sql-client.sh embedded   -D execution.target=yarn-session   -D yarn.application.id=application_1763460582895_0021     -f /home/bigdata/download/sql/content_is_delete.sql
相关推荐
邵奈一19 小时前
清明纪念·时光信笺——项目运行指南
java·实战·项目
mengchanmian20 小时前
前端node常用配置
前端
sunwenjian88620 小时前
Java进阶——IO 流
java·开发语言·python
sinat_2554878120 小时前
读者、作家 Java集合学习笔记
java·笔记·学习
华洛20 小时前
利好打工人,openclaw不是企业提效工具,而是个人助理
前端·javascript·产品经理
皮皮林55120 小时前
如何画出一张优秀的架构图?(老鸟必备)
java
百锦再20 小时前
Java 并发编程进阶,从线程池、锁、AQS 到并发容器与性能调优全解析
java·开发语言·jvm·spring·kafka·tomcat·maven
xkxnq20 小时前
第六阶段:Vue生态高级整合与优化(第93天)Element Plus进阶:自定义主题(变量覆盖)+ 全局配置与组件按需加载优化
前端·javascript·vue.js
森林猿21 小时前
java-modbus-读取-modbus4j
java·网络·python
tobias.b21 小时前
计算机基础知识-数据结构
java·数据结构·考研