当并行度大于1时,Flink不转发Kafka指标

时间:2019-04-18 00:06:27

标签: apache-kafka apache-flink

我有一个Flink作业,该作业从Kafka(v0.9)中读取并写入Redis。我想监视Flink应该能够转发的Kafka发出的records-consumed-raterecords-lag-max指标。在这种情况下,我将转发到Datadog。

当我以1的并行度开始工作时,我看到此度量标准很好地发出了。但是,如果我将并行度设置为大于1,则不再转发该指标。当并行度> 1时,作业正在运行,因为我可以看到条目已写入Redis。

我正在AWS EMR上运行Flink(v1.6.2):

  • 主节点:(1)m4.large
  • 核心节点:(1)c4.2xlarge
  • num.task.managers:1
  • slots.per.task.manager:7
  • 并行度:7

并行性由streamExecutionEnvironment.setParallelism()设置。每个Kafka使用者都会使用相同的group.id和唯一的client.id实例化。

DD代理在群集上运行良好。正在发出许多指标,例如numberOfCompletedCheckpoints和upTime等。

如果并行度大于1,Flink是否有理由不从Kafka转发这些指标?

更新: 我还尝试从Redis RichSinkFunction发送自定义DD指标(counter.inc())。当parallelism = 1时,度量标准发送良好。当parallelism = 7时,不发送度量标准,但是会调用它(添加了调试行)。因此,似乎它不仅限于从Kafka转发的指标。

1 个答案:

答案 0 :(得分:0)

问题是HTTPRequest的大小越大,并行性就越高。我返回了“请求实体太大”,但是异常未正确注销,所以我错过了。

似乎Flink DatadogHttpReporter在构建请求时并未考虑到请求的大小。我对Reporter进行了修改,将每个请求的指标数限制为1000。现在,指标显示得很好。