2018和2019年是大数据领域蓬勃发展的两年,自2019年伊始,实时流计算技术开始步入普通开发者视线,各大公司都在不遗余力地试用新的流计算框架,实时流计算引擎Spark Streaming、Kafka Streaming、Beam和Flink持续火爆。
最近Spark社区,来自Databricks、NVIDIA、Google以及阿里巴巴的工程师们正在为Apache Spark 3.0添加原生的GPU调度支持,参考(SPARK-24615和SPARK-24579)该方案将填补了Spark在GPU资源的任务调度方面的空白,极大扩展了Spark在深度学习、信号处理的应用场景。
与此同时,2019年1月底,阿里巴巴内部版本Blink正式开源!一石激起千层浪,Blink开源的消息立刻刷爆朋友圈,整个大数据计算领域一直以来由Spark独领风骚,瞬间成为两强争霸的时代。那么未来Spark和Blink的发展会碰撞出什么样的火花?谁会成为大数据实时计算领域最亮的那颗星?
我们接下来看看Spark和Flink各自的优劣和主要区别。
底层机制
Spark的数据模型是弹性分布式数据集 RDD(Resilient Distributed Dattsets),这个内存数据结构使得spark可以通过固定内存做大批量计算。初期的Spark Streaming是通过将数据流转成批(micro-batches),即收集一段时间(time-window)内到达的所有数据,并在其上进行常规批处,所以严格意义上,还不能算作流式处理。但是Spark从2.x版本开始推出基于 Continuous Processing Mode的 Structured Streaming,支持按事件时间处理和端到端的一致性,但是在功能上还有一些缺陷,比如对端到端的exactl