总体介绍
Spark和Flink都是用来处理大数据的分布式系统,上层可以运行各类机器学习等任务。对于将它们作为底层数据处理工具的机器学习开发用户来说,两者区别其实不大,无非是接口和编程逻辑上的一些区别,当然用户关心的是它们处理性能如何。性能的问题就跟底层的系统设计息息相关,在这个层面上两者还是有很大程度的差异。
在系统设计层面,本文力图比较两者在如下方面的差异:
- 架构
- 任务优化器
- 迭代处理
- shuffle过程
- 内存管理
- 容错机制
- 反压机制
- ……
在用户编程层面,本文将列举两者在以几个下方面的不同:
- 用户API
- 迭代算法的编程逻辑
- 任务触发的原语
- ……