Apache Flink概述

07-19 1982阅读

Apache Flink概述

Apache Flink概述

Apache Flink 是开源的分布式引擎,用于对无界限(流)和有界限(批处理)数据集进行有状态处理。

Apache Flink概述

流处理应用程序旨在连续运行,最大限度地减少停机时间,并在摄取数据期间对其进行处理。

Apache Flink 专为低延迟处理、在内存中执行计算、实现高可用性、消除单点故障以及水平扩展而设计。

Apache Flink概述

Apache Flink 的功能包括具有严格一次一致性保证的高级状态管理,以及具有复杂乱序处理和延迟数据处理的事件时间处理语义。

Apache Flink 专为流式传输优先而开发,为流处理和批处理提供了统一的编程接口。


Apache Filnk 四大核心

Apache Flink 构建在四个核心基石之上,它们分别是流处理、时间、状态和快照。

Apache Flink概述

1. 流处理(Streaming)

Apache Flink概述

  • 流处理是 Apache Flink 最基础、最核心的能力之一。它指的是对无限数据流的实时处理和分析能力。

    Apache Flink概述

    • 与批处理不同,流处理系统能够在数据到达时立即处理它们,而不需要等待整个数据集就绪。

      Apache Flink概述

      • 这种实时处理能力使得 Flink 特别适合处理需要低延迟和实时反馈的应用场景。
        (1) 事件驱动处理:
        • Flink 是基于事件驱动的处理模型。它能够按照事件发生的顺序处理数据,而不是依赖于固定的批次大小或固定的时间间隔。

        • 这种特性使得 Flink 能够处理高度动态的数据流,并根据实际的数据到达情况进行即时响应。

          传统应用程序架构和事件驱动应用程序区别:

          Apache Flink概述

          事件驱动应用基于事件或消息的传递来触发和处理操作。这种应用架构不依赖于同步的请求-响应模式,而是通过异步处理事件来实现。

          • 异步处理: 应用程序不需要等待请求的即时响应,而是在事件发生时立即触发相应的处理逻辑。

          • 松耦合: 组件之间的通信通过事件传递,这使得系统更加灵活和可扩展。

          • 实时性和响应性: 事件驱动应用常用于需要实时处理和快速响应的场景,如实时数据分析、IoT系统等。


            传统事务型应用通常遵循请求-响应模式,客户端发起请求,服务器处理请求并返回响应。

            • 同步处理: 操作按照顺序执行,每个操作完成后才会进行下一个操作。

            • 事务性操作: 应用使用事务来确保数据的原子性、一致性、隔离性和持久性(ACID属性)。


              (2)窗口操作:
              • Flink 提供了丰富的窗口操作支持,允许用户根据时间、数量或者其他自定义的条件对数据流进行切分和聚合。

              • 常见的窗口类型包括滚动窗口(Tumbling Windows)、滑动窗口(Sliding Windows)、会话窗口(Session Windows)等,每种窗口类型都适用于不同的应用场景和数据处理需求。

                Apache Flink概述

                • Time Window 是根据时间对数据流进行分组的:
                • 翻滚时间窗口(Tumbling Time Window)。翻滚窗口能将数据流切分成不重叠的窗口,每一个事件只能属于一个窗口。eg.统计每一分钟中用户购买的商品的总数,需要将用户的行为事件按每一分钟进行切分。
                • 滑动时间窗口(Sliding Time Window),在滑窗中,一个元素可以对应多个窗口。eg.每30秒计算一次最近一分钟用户购买的商品总数。
                • Count Window 是根据元素个数对数据流进行分组的:
                • 翻滚计数窗口(Tumbling Count Window),eg.每当窗口中填满100个元素了,就会对窗口进行计算。

                  这里就先介绍这几种,后面博主会再详细介绍一下窗口机制~


                  (3) 事件时间和水印:
                  • 事件时间是 Flink 中一个重要的概念,它允许根据数据流中的实际事件时间来进行数据处理和窗口计算,而不是基于处理数据的系统时间。
                  • 水印(Watermark)是一种机制,用于处理乱序事件数据,帮助 Flink 在事件时间处理中实现准确性和完整性。

                    这里先了解一下,后面博主会再详细介绍~

                    (4)状态管理:
                    • 流处理通常涉及到处理有状态的数据,例如需要跟踪某个时间窗口内的累计值或者连接操作的中间状态。

                      Apache Flink概述

                      • Flink 提供了强大的状态管理机制,允许开发者在流处理任务中维护和操作状态。
                      • 这些状态可以持久化到分布式存储中,以确保在发生故障时能够恢复状态并继续处理数据。
                        (5) Exactly-Once 语义:
                        • Flink 支持 Exactly-Once 语义,这意味着每条数据都能够精确地被处理一次,不会丢失也不会重复处理。

                          Apache Flink概述

                        • 这种保证是通过事务性检查点(Transactional Checkpoints)和状态快照(State Snapshots)来实现的,确保了数据处理的准确性和一致性。

                          (6)分布式流处理:

                          Apache Flink概述


                          2. 时间(Time)

                          • 在 Apache Flink 中,时间是一个重要的概念,特别是在处理实时数据流时。
                          • Flink 引入了事件时间(Event Time)、处理时间(Processing Time)和摄取时间(Ingestion Time)的概念,用于管理和处理事件数据的时间属性。

                            Apache Flink概述

                            • 事件时间允许基于事件发生的实际时间来进行数据处理,而处理时间则是基于处理数据的机器的系统时间,而摄取时间则是基于接收数据的系统时间。

                              Apache Flink概述

                              • Flink 的时间概念使得开发者能够精确控制和处理数据的时间特性,从而确保数据处理的准确性和一致性。

                                3. 状态(State)

                                • 状态在流处理中是一种持久化存储数据的能力,用于保存和管理处理过程中的中间结果或者关键信息。
                                • Apache Flink 提供了强大的状态管理机制,允许用户在流处理任务中维护和操作状态。

                                  Apache Flink概述

                                  • 这些状态可以是简单的计数器,也可以是复杂的数据结构,比如聚合结果、窗口信息等。

                                  • 状态的有效管理使得 Flink 能够处理有状态的数据流应用,例如实时数据的聚合、连接、分析等操作。

                                    Apache Flink概述


                                    4. 快照(Snapshots)

                                    • 快照是指 Apache Flink 在流处理过程中周期性地创建的分布式状态的一致性备份。

                                    • 快照捕获了当前流处理任务的所有状态信息,包括中间结果、窗口状态等,并保存在持久化存储中(通常是分布式文件系统或者数据库)。

                                      Apache Flink概述

                                    • 这种机制保证了在发生故障时能够快速恢复和重启任务,而无需重新处理所有数据。

                                    • 快照也支持 Flink 的 exactly-once 语义,即保证每条数据都能精确地被处理一次,从而确保数据处理的准确性和完整性。

                                      Apache Flink概述


                                      欢迎点赞收藏~后续会更新更多干货。

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]