如何覆盖Apache Flink中的配置值?

时间:2018-11-19 14:32:23

标签: monitoring apache-flink prometheus

我正在尝试从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 方法内部构造的,并且在环境初始化后无法修改。

1 个答案:

答案 0 :(得分:1)

您可以在启动Flink作业群集时通过指定动态属性来修改有效配置。假设您要部署到Yarn,则命令如下所示:

bin/flink run -m yarn-cluster -yD metrics.reporter.promgateway.jobName=myCustomJob <USER_CODE_JAR>

动态属性被发送到Yarn集群并覆盖现有的配置键值对。