首页 > 解决方案 > flink 如何将环境变量传递给作业或集群?

问题描述

例如,在 Spark 中,我们可以通过以下方式将环境变量设置为 executor job-wisely

spark.executorEnv.VAR=xxx

在flink中可以吗?如果不能通过作业设置,也接受集群设置。

我什至尝试通过export VAR=xxxin设置变量$FLINK_HOME/bin/config.sh并重新启动集群,但仍然不起作用,似乎只能在主节点任务管理器中工作(我将主节点也设置为任务管理器),其他任务管理器没有使用设置的变量。

注意到这是关于系统环境变量的问题$PATH,而不是 JVM 选项

标签: apache-flink

解决方案


提供 env 变量的一种方法是通过配置文件env.java.opts中的 config 属性,例如flink/conf/flink-conf.yaml

env.java.opts: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999

这提供了 java 选项来启动所有 Flink 进程的 JVM。有关详细信息,请参阅https://ci.apache.org/projects/flink/flink-docs-stable/ops/config.html#jvm-and-logging-options

containerized.master.env.另外,我自己没有尝试过,但似乎可以通过containerized.taskmanager.env.配置属性转发自定义作业管理器/任务管理器环境变量:https ://ci.apache.org/projects/flink/flink- docs-stable/ops/config.html#forwarding-environment-variables

  • containerized.master.env.: 用于将自定义环境变量传递给 Flink 的 JobManager 进程的前缀。例如,要将 LD_LIBRARY_PATH 作为环境变量传递给containerized.master.env.LD_LIBRARY_PATHJobManager,请在 flink-conf.yaml 中设置:“/usr/lib/native”。

  • containerized.taskmanager.env.:与上述类似,此配置前缀允许为工作人员(TaskManagers)设置自定义环境变量。


推荐阅读