P3 哪些行业需要处理流数据
P4 流处理发展演变
(1)事务处理(OLTP)
事务处理,实时性好,但是不适用于高并发,数据量大的场景;
(2)OLAP离线分析
- 适用于数据量大,但是实时性差
(3)OLAP 联机分析处理
- 分布式处理的问题:数据乱序
(4)Lambda架构
实现一个需求,需要维护两套系统;
(5)flink实现流批一体
flink特点
1.事件驱动
- 事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。
- 比较典型的就是以kafka为代表的消息队列几乎都是事件驱动型应用。
SparkStreaming是微批次时间驱动,不管有没有消息过来都要计算
事件驱动型:
2.流与批的世界观
-
批处理的特点是有界、持久、大量,非常适合需要访问全套记录才能完成的计算工作,一般用于离线统计。
-
流处理的特点是无界、实时, 无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。
-
在spark的世界观中,一切都是由批次组成的,离线数据是一个大批次,而实时数据是由一个一个无限的小批次组成的。
-
在flink的世界观中,一切都是由流组成的,离线数据是有界限的流,实时数据是一个没有界限的流,这就是所谓的有界流和无界流。
3. 分层api
Flink vs SparkStreaming
(1) 本质上一个流一个批
(2)数据模型
- Spark采用RDD模型,Spark Streaming的DStream实际上也是一组一组小批次的数据构成的RDD
- flink基本数据模型就是数据流,Event序列
(3)运行时架构
- Spark是批计算,将DAG划分为不同的Stage,一个Stage完成后才能计算下一个Stage
- flink没有stage的概念,是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理