一、流(stream)和微批(micro-batching)
微批模式
思想:只要批次足够小,则实时性更好,需要攒批数据然后进行处理。
流模式
思想:所有的数据都是流。
二、数据模型不同
- spark:采用RDD模型,spark streaming的DStream实际上也就是一组组小微批数据RDD的集合。
- flink:数据流,以及事件序列。
三、运行时架构不同
- spark:spark是批计算,将DAG划分为不同的stage,一个完成后才可以计算下一个。
- flink:是标准的流执行模式,一个事件在一个节点处理完成后可以直接发往下一个节点进行处理。
在分布式spark中,假设某个节点因为数据倾斜或者其他问题而导致某个stage处理时间过长,而其他的节点也就需要等待该节点处理完成才能够进行合并计算。
在分布式flink中,所有节点的某数据,处理完成后,保存state,就可发送到下游,后续来的数据可以根据state去做合并计算。则不需要等待。