在纱线集群和分离模式下使用时我的主要方法在哪里运行

问题描述 投票:0回答:1

我是 flink 新手,正在阅读

Flink 1.8
源代码(https://github.com/apache/flink/tree/release-1.8)来了解 flink 如何与 YARN 配合使用。

我知道有

detached mode and non-detached mode
用于每作业集群模式。

对于非分离模式,如以下命令:

flink run -m yarn-cluster -c my.HelloFlink -yn 2 -ys 1 ./my.jar

yarn集群部署完成后,客户端进程开始运行我的main方法(my.HelloFlink#main),直到我的main方法完成后客户端进程才会终止。

对于分离模式,如以下命令:

flink run -d -m yarn-cluster -c my.HelloFlink -yn 2 -ys 1 ./my.jar

yarn集群部署完成后,客户端进程很快就会终止。我的 main 方法在哪个进程中运行(my.HelloFlink#main)?

apache-flink
1个回答
0
投票

当您使用

flink run ...
时,您正在运行一个以此行结尾的 bash 脚本

exec $JAVA_RUN $JVM_ARGS $FLINK_ENV_JAVA_OPTS "${log_setting[@]}" -classpath "`manglePathList "$CC_CLASSPATH:$INTERNAL_HADOOP_CLASSPATHS"`" org.apache.flink.client.cli.CliFrontend "$@"

这会启动运行

CliFrontend
的 JVM。你的主要方法在那里运行。您的主要方法所做的是构建一个作业图并将其及其依赖项提交到纱线集群。如果您在分离模式下运行,则此 CliFrontend 进程会在提交作业后退出,因为它不再有用。

顺便说一句,Flink 1.11 添加了一个新的

flink run-application
部署目标,该目标在作业管理器中运行 main 方法。这在某些情况下具有显着的优势;有关详细信息,请参阅Flink 中的应用程序部署:当前状态和新的应用程序模式

© www.soinside.com 2019 - 2024. All rights reserved.