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 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”參數去掉後重新執行。

然後發現,所有指定參數全部生效了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章