【问题标题】:Where is my main method runs when using in yarn-cluster and detached mode在纱线集群和分离模式下使用时,我的主要方法在哪里运行
【发布时间】:2020-09-05 08:46:44
【问题描述】:

我是 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】:

    当您使用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 部署目标,它在 Job Manager 中运行 main 方法。这在某些情况下具有显着优势;详情请见Application Deployment in Flink: Current State and the new Application Mode

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 2018-10-25
      • 2020-09-06
      • 2023-04-08
      • 2015-10-22
      相关资源
      最近更新 更多