解决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
相关推荐
u***u6852 小时前
前端组件单元测试模拟,Jest mock函数
前端·单元测试
静若繁花_jingjing2 小时前
SpringBoot/SpringMvc/SpringCloud
java·spring boot·spring cloud
q***04632 小时前
【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目
java·spring boot·spring
稚辉君.MCA_P8_Java2 小时前
Sqoop 实现的功能是什么
java·服务器·架构·kubernetes·sqoop
w***4812 小时前
【Spring】IDEA中创建Spring项目
java·spring·intellij-idea
Thexhy2 小时前
Java大模型后端开发全流程指南
java·ai·大模型
ITVV2 小时前
flink CDC 3.5.0
大数据·flink
前端摸鱼匠2 小时前
Vue 3 的watchEffect函数:介绍watchEffect的基本用法和特点
前端·javascript·vue.js·前端框架·ecmascript
拉不动的猪2 小时前
基本数据类型Symbol的基本应用场景
前端·javascript·面试