【问题标题】:How could I override configuration value in Apache Flink?如何覆盖 Apache Flink 中的配置值?
【发布时间】:2018-11-19 14:32:23
【问题描述】:

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

【问题讨论】:

    标签: monitoring apache-flink prometheus


    【解决方案1】:

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

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

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

    【讨论】:

    • 如果您想在开始作业后加载属性的新值会发生什么?这可能吗?
    • 这是不可能的。配置只会在集群启动时读取一次。
    • 如果我不使用 Yarn 部署怎么办?我只使用高可用性模式?
    • 那么您应该使用相应的配置选项配置flink-conf.yml
    猜你喜欢
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多