Flink系列:
Flink 流处理简介(一)
1. Flink 是什么
Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。
- Apache
Flink的数据流编程模型在有限和无限数据集上提供单次事件(event-at-a-time)处理。在基础层面,Flink程序由流和转换组成。 - Apache Flink的API:有界或无界数据流的数据流API、用于有界数据集的数据集API、表API。
2. 为什么要用 Flink
- 流数据更真实地反映了我们的生活方式
- 传统的数据架构是基于有限数据集的
- 低延迟,高吞吐 ,结果的准确性和良好的容错性
主要应用场景:
3. Flink 的主要特点
-
事件驱动(Event-driven)
-
基于流的世界观
在 Flink 的世界观中,一切都是由流组成的,离线数据是有界的流;实时数据是一个没有界限的流:这就是所谓的有界流和无界流
-
分层API
-
越顶层越抽象,表达含义越简明,使用越方便
-
越底层越具体,表达能力越丰富,使用越灵活
-
4. Flink其他特点
- 支持事件时间(event-time)和处理时间(processing-time)语义
- 精确一次(exactly-once)的状态一致性保证
- 低延迟,每秒处理数百万个事件,毫秒级延迟
- 与众多常用存储系统的连接
- 高可用,动态扩展,实现7*24小时全天候运行
5. Flink vs Spark Streaming
数据模型
- spark 采用 RDD 模型,spark streaming 的 DStream 实际上也就是一组 组小批数据 RDD 的集合
- flink 基本数据模型是数据流,以及事件(Event)序列
运行时架构
- spark 是批计算,将 DAG 划分为不同的 stage,一个完成后才可以计算下一个
- flink 是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理