我如何覆盖 Apache Flink 中的配置值?
How could I override configuration value in Apache Flink?
我正在尝试将 Apache Flink 的指标收集到 Prometheus 中。 Flink 文档说我需要在我的 flink-conf.yaml:
中添加以下行
metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: localhost
metrics.reporter.promgateway.port: 9091
metrics.reporter.promgateway.jobName: myJob
我想在 Prometheus 中用不同的名称标记不同的作业。我如何在每个作业的基础上覆盖配置参数 metrics.reporter.promgateway.jobName(每个作业在其自己的 Flink 集群会话中 运行)?
有几个问题:
- 我无法覆盖 flink-conf.yaml。我发现只有 FLINK_CONF_DIR 参数可以覆盖整个配置目录。但它看起来不像是为每个作业覆盖配置目录的正确解决方案。
- 我无法覆盖 StreamExecutionEnvironment 的初始配置,因为它是在 StreamExecutionEnvironment.getExecutionEnvironment 方法内部构造的,并且在环境初始化后无法修改。
可以在启动Flink作业集群时指定动态属性修改有效配置。假设您要部署到 Yarn,命令如下所示:
bin/flink run -m yarn-cluster -yD metrics.reporter.promgateway.jobName=myCustomJob <USER_CODE_JAR>
动态属性被发送到 Yarn 集群并覆盖现有的配置键值对。
我正在尝试将 Apache Flink 的指标收集到 Prometheus 中。 Flink 文档说我需要在我的 flink-conf.yaml:
中添加以下行metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: localhost
metrics.reporter.promgateway.port: 9091
metrics.reporter.promgateway.jobName: myJob
我想在 Prometheus 中用不同的名称标记不同的作业。我如何在每个作业的基础上覆盖配置参数 metrics.reporter.promgateway.jobName(每个作业在其自己的 Flink 集群会话中 运行)?
有几个问题:
- 我无法覆盖 flink-conf.yaml。我发现只有 FLINK_CONF_DIR 参数可以覆盖整个配置目录。但它看起来不像是为每个作业覆盖配置目录的正确解决方案。
- 我无法覆盖 StreamExecutionEnvironment 的初始配置,因为它是在 StreamExecutionEnvironment.getExecutionEnvironment 方法内部构造的,并且在环境初始化后无法修改。
可以在启动Flink作业集群时指定动态属性修改有效配置。假设您要部署到 Yarn,命令如下所示:
bin/flink run -m yarn-cluster -yD metrics.reporter.promgateway.jobName=myCustomJob <USER_CODE_JAR>
动态属性被发送到 Yarn 集群并覆盖现有的配置键值对。