1. Flink Metrics 提供了几种监控指标类型?分别是哪些?

Flink Metrics 一共提供了四种监控指标:分别为 Counter、Gauge、Histogram、Meter。

  1. Count 计数器统计一个指标的总量
  2. Gauge:反映一个指标的瞬时值。比如要看现在 TaskManager 的 JVM heap 内存用了多少,就可以每次实时的暴露一个 Gauge,Gauge 当前的值就是 heap 使用的量。
  3. Meter:平均值,用来记录一个指标在某个时间段内的平均值。Flink 中的指标有 Task 算子中的 numRecordsInPerSecond,记录此 Task 或者算子每秒接收的记录数。
  4. Histogram:直方图,用于统计一些数据的分布,比如说 Quantile、Mean、StdDev、Max、Min 等,其中最重要一个是统计算子的延迟。此项指标会记录数据处理的延迟信息,对任务监控起到很重要的作用。

2. 怎么实现对吞吐的监控的?比如说怎么知道 source 端的吞吐量?

通过 Flink Metrics 的 Count 计数器,以及 Gauge 可以实现对 source 端吞吐量的监控

3. 说一下 WaterMarker 机制

WaterMark 是用来解决数据延迟、数据乱序等问题。水印就是一个时间戳(timestamp),Flink 可以给数据流添加水印

  • 水印并不会影响原有 Eventtime 事件时间
  • 当数据流添加水印后,会按照水印时间来触发窗口计算,也就是说 watermark 水印是用来触发窗口计算的
  • 设置水印时间,会比事件时间小几秒钟,表示最大允许数据延迟达到多久

Flink 提供了常规的定期水位线以及定制化的标点水位线两种生成水位线的方式供用户选择。 (1) 定期水位线:周期性的生成 watermark,系统会周期性的将 watermark 插入到流中。默认周期是 200 毫秒。 (2) 标点水位线:没有时间周期规律,可打断的生成 watermark, 每一次分配 Timestamp 都会调用生成方法。