Home

Flink - Timer定时器

1. Timer 系统收到 1 条数据,计算,输出 0~N 条数据,这种 Event-driven 的方式是最简单和自然的。 但实际上,由于存在乱序、丟数,以及业务周期性更新的需求,计算还会依赖于时间触发,例如Dataflow Model的第三节 IMPLEMENTATION & DESIGN 的场景。 这些场景依赖于 Timer,Flink 的窗口也是基于 Timer 实现。 Timer 不是简单的时间触发回调,Process Function#Timers文档介绍了 Timers,主要有几点: ProcessingTime 和 EventTime 都是由 TimerService 维护的,定时触发用户的 onTimer 方法 TimerService 会...

Read more

Flink - 窗口理论、实现

1. Theory - Dataflow Model Dataflow Model这篇论文,对大数据的处理范式做了总结,并且提出了一套处理模型。 1.1. Window 数据转换操作,有两种: ParDo: 1->N,例如 map/flatmap/filter 等,这类操作在 unbound 和 bound 数据集上没有区别 GroupByKey: 聚合操作在 bound 数据集很自然;在 unbound 数据集上,既然数据不会结束,就需要解决何时聚合的问题。 之前在批处理和流处理的思考这篇笔记里提到过,bound 数据集其实也是在 unbound 数据集的一个划分,通常情况是 1 天/小时的数据。而论文则用更抽象的角度,提出了 window 的概念,用于在u...

Read more

一个环境导致读取 Kakfa TimeoutException 的问题

最近遇到一个比较奇怪的现象:相同 Flink 任务,换个运行环境就会报读取 kafka 失败,但是排查环境跟 Kafka 源的连通性又没有问题。 线上匆忙解决了,今天简化代码验证,感觉值得总结一版。 1. TimeoutException org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata 这个报错在读取 Kafka 时容易遇到,往往是 client 跟 bootstrap.server 的网络问题,或者 server 本身不可用导致。 但是从我的情况看,任务代码及配置是一致的,报错跟环境相关,唯一的疑点是任务 KafkaConsumer...

Read more