024 大数据之Flink

Posted 小哥哥咯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了024 大数据之Flink相关的知识,希望对你有一定的参考价值。

1、Apache Flink

Spark与Flink对比123
Spark Streaming保证Exactly-Once语义
Kafka auto.offset.reset值详解
从Lambda架构到Kappa架构再到?浅谈未来数仓架构设计~
详解数仓中的数据分层:ODS、DWD、DWM、DWS、ADS

2、Flink的IDEA编程

Github代码:https://github.com/jieky-1/Flink_Java
重点概念:内部类、事件驱动、无状态、有状态

3、流处理基础

如何形象的描述反应式编程中的背压(Backpressure)机制?
图解 Flink 滚动窗口、会话窗口和滑动窗口

真实世界的系统,网络和通信渠道远非完美,流数据经常被推迟或无序 (乱序) 到达。理解如何在这种条件下提供准确和确定的结果是至关重要的。更重要的是,流处理程序可以按原样处理事件制作的也应该能够处理相同的历史事件方式,从而实现离线分析甚至时间旅行分析。当然,前提是我们的系统可以保存状态,因为可能有故障发生。在流处理应用可能发生故障的语境下,深入探讨时间和状态的概念。

时间语义:处理时间(快)和事件时间(准)
①处理时间是处理流的应用程序的机器的本地时钟的时间(墙上时钟)。处理时间的窗口包含了一个时间段内来到机器的所有事件。这个时间段指的是机器的墙上时钟。
②事件时间是流中的事件实际发生的时间。事件时间基于流中的事件所包含的时间戳。通常情况下,在事件进入流处理程序前,事件数据就已经包含了时间戳。

怎样去决定何时触发事件时间窗口的计算?也就是说,在我们可以确定一个时间点之前的所有事件都已经到达之前,我们需要等待多久?我们如何知道事件是迟到的?在分布式系统无法准确预测行为的现实条件下,以及外部组件所引发的事件的延迟,以上问题并没有准确的答案。

运算符一旦接收到水位线,运算符会认为一段时间内发生的所有事件都已经观察到,可以触发针对这段时间内所有事件的计算了。水位线提供了一种结果可信度和延时之间的妥协。激进的水位线设置可以保证低延迟,但结果的准确性不够。在这种情况下,迟到的事件有可能晚于水位线到达,我们需
要编写一些代码来处理迟到事件。另一方面,如果水位线设置的过于宽松,计算的结果准确性会很高,但可能会增加流处理程序不必要的延时。

在很多真实世界的场景里面,系统无法获得足够的知识来完美的确定水位线。所以仅仅依靠水位线可能并不是一个很好的主意。流处理系统还需要提供一些机制来处理迟到的元素(在水位线之后到达的事件)。根据应用场景,我们可能需要把迟到事件丢弃掉,或者写到日志里,或者使用迟到事件来更新之前已经计算好的结果。

以上是关于024 大数据之Flink的主要内容,如果未能解决你的问题,请参考以下文章

实时即未来,大数据项目车联网之Flink Watermark(水位线)十四

实时即未来,大数据项目车联网之Flink Watermark(水位线)十四

Flink总结之一文彻底搞懂时间和窗口

Flink WaterMaker详解

Flink学习(十四) Flink 窗口时间和水位线

Flink 窗口和水位线