04-flink VS spark VS strom
流派对比
| Record ACK | Micro-batching | Transactional updates | Distribted snapshots | |
|---|---|---|---|---|
| 代表 | Apache Strom | Apache Spark | Goole Cloud Dataflow | Apache Flink |
| 语义保证 | At least once | Exactly once | Exactly once | Exactly once |
| 延迟 | 低 | 高 | 较低(事务延迟) | 低 |
| 吞吐 | 低 | 高 | 较高(取决于事务存储吞吐) | 高 |
| 计算模型 | 流 | 微批 | 流 | 流 |
| 容错开销 | 高 | 低 | 较低(取决于事务存储吞吐) | 低 |
| 流控 | 较差 | 较差 | 好 | 好 |
| 业务和容错分离 | 部分 | 紧耦合 | 分离 | 分离 |
| 原理 | Source保留其产生的所有记录备份,当源头一条记录的所有派生记录都被处理完成,Source节点就可以删除其备份 | 连续的数据流不要切分到record级别,而是收敛切分为一批一批微批的、原子的数据进行类型Batch的计算。每个batch的数据可能会成功或者失败,我们就对当前失败的小批数据进行处理即可 | 原子地记录数据的处理以及状态的更新(类似数据的WAL日志)。一旦系统出现Fail,可从记录的日志中恢复我们需要的中间计算状态和需要处理数据 | 确定当前流式计算的状态(包括正在处理的数据,以及operator状态),生成该状态的一致快照,并持久存储 |
| 说明 | 一条条处理(下游处理完一条数据,再向上游要一条数据处理) | 相当于一批一批处理(微批) |
Flink API VS Spark API
| API | Spark | Flink |
|---|---|---|
| 底层API | RDD | Process Function |
| 核心API | DataFrame/DataSet/Structured Streaming | DataStream/DataSet |
| SQL | SparkSQL | Table API & SQL |
| 机器学习 | MLlib | FlinkML |
| 图计算 | GraphX | Gelly |
| 其它 | CEP |
Flink VS Strom 吞吐

flinkVSstrom吞吐.png
Flink功能对比

flink功能对比.png