1.Flink 概述
Apache Flink 官网:https://flink.apache.org/
- 注意: 在Flink 1.12.0 中淘汰了 DatasetAPI 统一使用了 DataStreamAPI
2. 实时既未来
为什么说流处理即未来? https://news.qudong.com/article/562521.shtml
3.Flink的背景
- Flink 诞生于欧洲的一个大数据研究项目 StratoSphere。该项目是柏林工业大学的一个研究性项目。早期,Flink 是做 Batch 计算的,但是在 2014 年, StratoSphere 里面的核心成员孵化出 Flink,同年将 Flink 捐赠 Apache,并在后来成为 Apache 的顶级大数据项目,同时 Flink 计算的主流方向被定位为 Streaming, 即用流式计算来做所有大数据的计算,这就是 Flink 技术诞生的背景。
- 2014 年 Flink 作为主攻流计算的大数据引擎开始在开源大数据行业内崭露头角。区别于Storm、Spark Streaming 以及其他流式计算引擎的是:它不仅是一个高吞吐、低延迟的计算引擎,同时还提供很多高级的功能。比如它提供了有状态的计算,支持状态管理,支持强一致性的数据语义以及支持 基于Event Time的WaterMark对延迟或乱序的数据进行处理等
4. Flink技术栈
- Flink分层组件栈如下图所示:
5. Flink的四大基石
- Flink之所以能这么流行,离不开它最重要的四个基石:Checkpoint、State、Time、Window。
6. Flink的应用场景
http://www.liaojiayi.com/flink-IoT/
https://flink.apache.org/zh/usecases.html
从很多公司的应用案例发现,其实Flink主要用在如下三大场景:
- Event-driven Applications(事件驱动应用):
- 流计算本质上是Data Driven 计算。
- 应用较多的如风控系统,当风控系统需要处理各种各样复杂的规则时,Data Driven 就会把处理的规则和逻辑写入到Datastream 的API 或者是ProcessFunction 的API 中,然后将逻辑抽象到整个Flink 引擎,当外面的数据流或者是事件进入就会触发相应的规则,这就是Data Driven 的原理。在触发某些规则后,Data Driven 会进行处理或者是进行预警,这些预警会发到下游产生业务通知,这是Data Driven 的应用场景,Data Driven 在应用上更多应用于复杂事件的处理.
典型实例: - 欺诈检测(Fraud detection)、异常检测(Anomaly detection)
- 基于规则的告警(Rule-based alerting)
- 业务流程监控(Business process monitoring)
- Web应用程序(社交网络)
- Data Analytics Applications
数据分析任务需要从原始数据中提取有价值的信息和指标。如下图所示,Apache Flink 同时支持流式及批量分析应用。
- Data Pipeline Applications:
数据管道: 提取-转换-加载(ETL)是一种在存储系统之间进行数据转换和迁移的常用方法。
- ETL 作业通常会周期性地触发,将数据从事务型数据库拷贝到分析型数据库或数据仓库。
- 数据管道和 ETL 作业的用途相似,都可以转换、丰富数据,并将其从某个存储系统移动到另一个。但数据管道是以持续流模式运行,而非周期性触发。因此数据管道支持从一个不断生成数据的源头读取记录,并将它们以低延迟移动到终点。