問題背景
我有一個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 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”參數去掉後重新執行。
然後發現,所有指定參數全部生效了。