flink yarn-session.sh启动任务指定的应用名和队列无效问题

问题背景

我有一个hadoop集群和一台机器A.

我在机器A上,使用命令:

bin/yarn-session.sh -n 5 -jm 1g -tm 4g -s 4 -qu root.flink -nm fsql-cli > /dev/null 2>&1 &

启动了一个yarn-session,其中,指定了队列root.flink和应用名fsql-cli。

但是,在yarn控制台中看到应用的名称和队列跟指定的名称大多数情况下不一致,如图:
flink yarn-session.sh启动任务指定的应用名和队列无效问题_第1张图片

启动后,应用名为:Flink session cluster,队列名为:root.default,显然使用了默认的应用名和队列。

flink环境如下:

flink版本:1.10.0
flink-conf.yaml配置:
[fsql@10-42-63-116 conf]$ grep -v ^# flink-conf.yaml |grep -v ^$
jobmanager.rpc.address: localhost
jobmanager.rpc.port: 6123
jobmanager.heap.size: 1024m
taskmanager.memory.process.size: 2048m
taskmanager.numberOfTaskSlots: 10
parallelism.default: 1
jobmanager.execution.failover-strategy: region

那么,为什么我指定的队列名和应用名没有生效?

问题排查

经Yang Wang大佬指点,检查HDFS上面staging目录($HOME/.flink/application_id)的flink-conf.yaml文件:

taskmanager.memory.process.size: 2048m
yarn.flink-dist-jar: file:/opt/app/flink-1.10.0/lib/flink-dist_2.11-1.10.0.jar
jobmanager.execution.failover-strategy: region
high-availability.cluster-id: application_1588947789205_44382
jobmanager.rpc.address: localhost
execution.target: yarn-per-job
jobmanager.rpc.port: 6123
execution.attached: true
internal.cluster.execution-mode: NORMAL
parallelism.default: 1
taskmanager.numberOfTaskSlots: 10
$internal.yarn.log-config-file: /opt/app/flink-1.10.0/conf/log4j.properties
jobmanager.heap.size: 1024m

发现其中并没有提交命令中指定的-qu和-nm,分别对应参数yarn.application.queue和yarn.application.name,而且-tm也是默认值,并不是我参数中指定的值。

且同时发现“-n”参数在flink1.10中已经不再支持,我的命令是使用的之前老版本flink时的遗留脚本,flink升级后并没有检查原脚本参数,因此推测问题的原因是多余的“-n”参数,导致后面其他参数没有生效,均使用默认值启动了yarn-session。

解决方案

把命令

bin/yarn-session.sh -n 5 -jm 1g -tm 4g -s 4 -qu root.flink -nm fsql-cli > /dev/null 2>&1 &

中的“-n”参数去掉后重新执行。

然后发现,所有指定参数全部生效了。

你可能感兴趣的:(大数据,Flink)