Apache Flink 概念介绍:有状态流式处理引擎的基石(一)| 学习笔记

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 快速学习 Apache Flink 概念介绍:有状态流式处理引擎的基石。

开发者学堂课程【Apache Flink 入门到实战 - Flink 开源社区出品 Apache Flink 概念介绍:有状态流式处理引擎的基石(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/632/detail/10037


Apache Flink 概念介绍:有状态流式处理引擎的基石(一)

 

内容介绍

一.何谓“有状态流式处理”

二.流式处理

三.分散式处理

四.有状态流式处理

五.有状态流式处理的挑战

六.总结

 

首先需要注意 Flink 为什么如此强大,为什么要使用 Flink 以及他与其他大数据引擎有何差别。

其次要注意 Apache Flink 有哪些优点与功能。

本节课程将会让大家了解为什么数据生态为什么会出现有状态流式的处理需求,以及状态流式与其他处理方式的差别,还会学习到状态流式处理的挑战以及如何应对这些挑战。

 

一.何谓“有状态流式处理”

image.png

首先观察传统批次数据处理的方式通常如何操作。

无论搜索什么资料,资料的信息都是持续传输进来的,客户端也会通过一些手段持续收取这些数据。在这种传统状态下,Flink 会以时间划分,把收到的数据划分成一个个批次档案,例如将3点到4点收到的数据划分为一个批次档案,4点到5 点的数据划分成一个批次档案,以此类推。划分完批次档案后,利用其他的批次引擎对批次档案进行运算。

若现在需要计算每个小时出现的特定事件次数,如上图,就是计算一小时内从事件A到事件B一共出现了几次。假设理想状态是A到B的转换都发生在同一个时间区间,如都在3-4点内发生。

但A发生在3:55,B发生在4:02,这个事件的发生时间跨越了理想区间,此时批次数据引擎的处理方式是先处理3:55-4:00的数据,得到这一时间段A的数据状态后,将这一状态带入4-5点的状态,对应到他所转换的B事件,由此得出A到B的运算次数。

严谨来说,若接收到事件的顺序是颠倒的,这种情况也是非常常见的,比如先发送A再发送B,而收到的顺序是先B后A,这种情况比较复杂,因此批次处理方法对于这一特质并不太符合。

image.png

上图的累积状态代表 Flink 收集着过去所传送出的所有状态,同时也代表着发生过的所有事件。

累积状态简单来说可以代表 counters,复杂的也可以代表 ML model。各种各样的东西都有可能是状态,重点是累积的状态会影响最后所产生的输出。

第二个重点是理想方法,理想方法必须有能力开始累积状态,并维护这个状态。

第三个重点是时间,如果没有时间是没有办法完整代表的,时间的用意是这套引擎,必须有能力或者有机制去判断引擎是否已经接收到他所有所需要的数据,进而产生结果。

观察传统批次示意图可以看到,把区间划分成三点到四点,四点到五点,五点到六点的是这个批次资料处理的方式在做的,但实际上一直以来很混淆的一个点在于理想区间定义三点到四点是一个批次产生的结果,然后要用批次运算去对数据做运算。而在做运算的时候,实际上我们如果直接划分的这个答案,是不是就代表,我们所认为四点该收到的资料都已经收到了呢?

实际上不是,因为四点是在 server 端所划分的四点,但实际希望定义的四点,应该是事件发生在四点之前的都收到后才去计算三点到四点的结果,后续会有更详细的解释,现在的重点是时间与资料是有相关性的。

此处有两个大重点,第一个大重点是刚刚所提的必须要有办法累积状态和维护大量的状态。

第二个重点就是时间,必须要依据时间去决定是否将该收的数据都收完后才产生结果。

image.png


二.流式处理

image.png 

流式处理简单的说就是有一个无穷无尽的数据源,一直在收取资料,然后会产生一段程序码,这段程序码代表着要处理的 base subject,这个 base subject 会一笔一笔从数据源拿资料,一笔笔处理产生出结果,最后输出,就是Long running computation,on an endless stream of input。

 

三.分散式处理

image.png

分散流式处理从整体来说就是input stream 是有很多个使用者,每一个使用者都有自己的 ID,希望计算每一个使用者出现的次数,那一定要让同一个使用者拜访的事件都必须要到同一个运算的 instance 吗?

其实这个其他批次要做一样,需要做一些 protection设定个 key然后让同样的 key 到同一个 competition instance 运算。

 

四.有状态分散式流式处理

 image.png

有状态分散式流式处理如上图程序码,用一个小片段去代表定义了一个变速 X,X 可能会做一些读写等,最后输出结果时,可以依据这个变速 X 决定要输出什么,如何输出,相当于 X 状态会影响输出。

这里有一个重点,若假设先做了一个 key,同样的 key 都会流到同一个 competition  instance,用刚刚的例子解释就是每一个使用者出现的次数,这个次数就是所谓的状态这个状态一定会跟同样的 key 的事件都累积在同一个 competition instance就是 State co-partiltioned with the input stream by key。

第二个重点是 embedded local state backend,意为一个有状态分散式流式处理的引擎,状态在一定可能性下会累积巨大,当 key 非常多的时候,状态可能会超出单一节点的负荷量,这时状态X必须要采取办法,设立一个状态后端去维护引擎。状态后端在正常状况下可以用 memory 去维护,可是在很多 production 的 use case,很多公司里面用 think use case,它的状态会非常大,当 memory 没有办法容纳下的时候,think 也没有办法去支援这样的使用场景。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
30天前
|
数据挖掘 物联网 数据处理
深入探讨Apache Flink:实时数据流处理的强大框架
在数据驱动时代,企业需高效处理实时数据流。Apache Flink作为开源流处理框架,以其高性能和灵活性成为首选平台。本文详细介绍Flink的核心特性和应用场景,包括实时流处理、强大的状态管理、灵活的窗口机制及批处理兼容性。无论在实时数据分析、金融服务、物联网还是广告技术领域,Flink均展现出巨大潜力,是企业实时数据处理的理想选择。随着大数据需求增长,Flink将继续在数据处理领域发挥重要作用。
|
1月前
|
消息中间件 分布式计算 Kafka
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
37 0
|
6月前
|
SQL 监控 数据处理
实时计算 Flink版产品使用合集之开启 MiniBatch 优化会引入乱序问题如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在Flink算子内部使用异步IO可以通过什么办法实现
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
SQL 数据处理 API
实时计算 Flink版产品使用合集之流处理过程中,对于某一条数据的异常,该如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用合集之source多并发导致时序问题如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
资源调度 分布式计算 Kubernetes
[flink 实时流基础系列]揭开flink的什么面纱基础一
[flink 实时流基础系列]揭开flink的什么面纱基础一
|
BI Apache 流计算
Apache Flink 概念介绍:有状态流式处理引擎的基石(二)| 学习笔记
快速学习 Apache Flink 概念介绍:有状态流式处理引擎的基石。
Apache Flink 概念介绍:有状态流式处理引擎的基石(二)| 学习笔记
|
SQL 存储 缓存

推荐镜像

更多
下一篇
无影云桌面