美文网首页
什么是Flink

什么是Flink

作者: 飞向天王星星 | 来源:发表于2022-09-21 18:35 被阅读0次

    窗口与水位线

    window的执行也是由Watermark触发的。 Watermark可以理解成一个延迟触发机制,我们可以设置Watermark的延时时长t,每次系统会校验已经到达的数据中最大的maxEventTime,然后认定eventTime小于maxEventTime - t的所有数据都已经到达,如果有窗口的停止时间等于maxEventTime – t,那么这个窗口被触发执行

    TimeWindow 和 TimeWindowAll 都适用于对流式数据转化做一定时间范围内的批处理,主要区别在两者的并行度,前者为 Parallel Operator 后者为 Non Parallel Operator,所以 TimeWindow 的适用范围更广,适合一些需要对数据分批分 key处理且数据量较大需要并行处理的场景;而 TimeWindowAll 汇聚一段时间内的所有数据,适合需要汇总所有数据或者数据量不大的任务,这样可以减少并发,例如任务内需要涉及到数据网络 IO,如果并行度过高则容易导致网络服务过载。

    B.转换

    TimeWindow 的并行度变成 1 则变为 TimeWindowAll;如果 TimeWindowAll 的数据实在很大,可以先通过一层 TimeWindow 做分区的汇总,随后将数据回收至 TimeWindowAll 做总的汇总,有点类似 Spark 的 groupByKey 和 reduceByKey。

    Exactly Once

    source可重设读取位置:例如kafka可支持消息回放。

    幂等写入:可能出现ABA问题,在云搜的gaia里面进行增量回溯时就有这个问题。

    事务写入:checkpoint+ 预写日志(wal,不完全可靠,可能在sink时失败),而两阶段提交(2pc)更加可靠,但要求外部sink系统支持事务,例如kafka也可以支持预提交,uncommitted数据是不允许被消费的。不过kafka默认隔离级别是read_uncommitted,需要配置成read_committed(不过隔离级别提高,会增加消费延迟)。

    以kafka-flink-kafka的常见流式处理为例,实现exactly-once操作如下:

    相关文章

      网友评论

          本文标题:什么是Flink

          本文链接:https://www.haomeiwen.com/subject/yvyuwrtx.html