本文主要是介绍Flink(11):Flink之流批一体架构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
0. 相关文章链接
1. 流处理和批处理
2. 流批一体API
2.1. DataStream API 支持批执行模式
2.2. API
2.3. 编程模型
0. 相关文章链接
Flink文章汇总
1. 流处理和批处理
Flink官网:Apache Flink 1.12 Documentation: Learn Flink: Hands-on Training
- Batch Analytics,右边是 Streaming Analytics。批量计算: 统一收集数据->存储到DB->对数据进行批量处理,就是传统意义上使用类似于 Map Reduce、Hive、Spark Batch 等,对作业进行分析、处理、生成离线报表
- Streaming Analytics 流式计算,顾名思义,就是对数据流进行处理,如使用流式分析引擎如 Storm,Flink 实时处理分析数据,应用较多的场景如实时大屏、实时报表。
2. 流批一体API
2.1. DataStream API 支持批执行模式
Part 1: Flink 的核心 API 最初是针对特定的场景设计的,尽管 Table API / SQL 针对流处理和批处理已经实现了统一的 API,但当用户使用较底层的 API 时,仍然需要在批处理(DataSet API)和流处理(DataStream API)这两种不同的 API 之间进行选择。
Part 2:鉴于批处理是流处理的一种特例,将这两种 API 合并成统一的 API,有一些非常明显的好处,比如:
- 可复用性:作业可以在流和批这两种执行模式之间自由地切换,而无需重写任何代码。因此,用户可以复用同一个作业,来处理实时数据和历史数据。
- 维护简单:统一的 API 意味着流和批可以共用同一组 connector,维护同一套代码,并能够轻松地实现流批混合执行,例如 backfilling 之类的场景。
Part 3:考虑到这些优点,社区已朝着流批统一的 DataStream API 迈出了第一步:支持高效的批处理(FLIP-134)。从长远来看,这意味着 DataSet API 将被弃用(FLIP-131),其功能将被包含在 DataStream API 和 Table API / SQL 中。
2.2. API
Flink提供了多个层次的API供开发者使用,越往上抽象程度越高,使用起来越方便;越往下越底层,使用起来难度越大
注意:在Flink1.12时支持流批一体,DataSetAPI已经不推荐使用了,之后可以使用DataStream处理批数据
Apache Flink 1.12 Documentation: Flink DataSet API Programming Guide
官宣 | Apache Flink 1.12.0 正式发布,流批一体真正统一运行!-阿里云开发者社区
Apache Flink 1.12 Documentation: Flink DataStream API Programming Guide
2.3. 编程模型
Flink 应用程序结构主要包含三部分,Source/Transformation/Sink,如下图所示:
此博客根据某马2020年贺岁视频改编而来:【狂野大数据】Flink1.12从入门到精通#2021#流批一体#黑马程序员#大数据_哔哩哔哩_bilibili
注:其他相关文章链接由此进 -> Flink文章汇总
这篇关于Flink(11):Flink之流批一体架构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!