前言
我们的大数据环境是 CDP 环境。该环境已经默认添加了Flink on Yarn
的客户端配置。 我们的 Flink 任务类型是 Flink on Yarn
的任务。
默认的配置文件是在 /etc/flink/conf
目录下。如今我们的需求是个别任务提供的配置仅用于配置执行参数,例如影响作业的配置参数,而不是底层集群。
那么我们改如何实现呢。
获取Flink conf目录
Flink获取conf目录(Flink配置)的顺序:
- 查找FLINK_CONF_DIR环境变量。
- 查找…/conf目录。
- 查找conf目录。
具体实现
这里我们参考了官网的实现方式,链接如下:
https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/deployment/config/
我们这里要实现的功能是对任务自定义 log4j.properties
配置,而不使用集群默认的配置。
可以通过设置环境变量 FLINK_CONF_DIR
来指定 log4j.properties
文件的位置。这样,Flink 将在该目录下查找 log4j.properties
文件并使用其中的配置。
以下是通过环境变量设置 FLINK_CONF_DIR 的例子:
export FLINK_CONF_DIR=/path/to/your/config
然后,可以运行 Flink 作业:
flink run -c your.main.Class /path/to/your/job.jar
确保 /path/to/your/config 目录中包含正确配置的 log4j.properties 文件。如果没有指定 FLINK_CONF_DIR,Flink 将使用默认的配置。
查看是否生效
当任务成功启动后,我们打开 flink dashbord,点击 Job Manager
,查看 $internal.deployment.config-dir
配置是否更改。
观察 logging.configuration.file
配置是否也变更。
成功。