上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.5.2 数据模型和运行架构
Spark和Flink在底层实现上最主要的差别在于数据模型不同。
Spark底层数据模型是弹性分布式数据集(RDD),Spark Streaming进行微批次处理的底层接口DStream实际上处理的也是一组一组的小批数据RDD的集合。可以看出,Spark在设计上本身就是以批量的数据集作为基准的,更加适合批处理的场景。
Flink的基本数据模型是数据流(DataFlow)和事件(Event)序列。Flink基本上是完全按照Google的DataFlow模型实现的,因此,从底层数据模型上看,Flink是以处理流式数据作为设计目标的,更加适合流处理的场景。
数据模型不同,对应在运行处理的流程上,自然也会有不同的架构。Spark进行批计算,需要将任务对应的DAG划分阶段(Stage),一个阶段完成后,经过shuffle再进行下一阶段的计算;而Flink是标准的流式执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理。