抛弃Spark?Flink会是下一代大数据计算引擎吗?
Apache Spark是目前应用最广泛、最流行的大数据计算平台之一,在2.X版本中,Apache Spark已经开始摒弃RDD的数据模型,采用Spark SQL的Dataset作为统一的数据模型来构建更加高效的计算框架。然而,2015年成为Apache顶级项目的Apache Flink却被很多人认为是未来最有可能取代Spark的新一代大数据计算引擎。本文将简单介绍二者的区别以及为什么会有这种说法。
Spark的流行除了本身是一个很优秀的框架外也有一些大数据生态的因素。众所周知,虽然MapReduce框架开启了大数据批处理的时代,但是因为自身的限制导致编程的灵活性受到很大影响,而Spark一开始采用的RDD数据模型则有更加高效灵活的编程方式,并且支持内存计算,这使得Spark更受欢迎。
除此之外,还有个重要的因素是在大数据生态的多样性。之前,包括批处理、实时处理、SQL查询、交互分析等,在大数据生态中都有各自的一套组件,每一个应用场景都有着好几种可替代的技术方案,但正常情况下,实际应用的场景都相对比较复杂,因此,构建一个适合自己业务场景的大数据引擎通常面临着很多的技术方案,不同的方案优缺点不同,因此,构建一个完整的支撑业务场景的大数据引擎也要使用多种种技术,这导致了很多问题:如技术学习曲线陡峭、开发和运行效率低下、运维的困难等。
而Spark从一开始就使用一个统一的引擎进行批处理、流处理、交互分析等,使得应用价值大大提高。

尽管Spark在批处理上有很大优势,但是在流处理方面依然有很大的缺陷。首先,Spark Streaming是准实时的,它处理的方式是微批处理模型。在动态调整、事物机制、延迟性、吞吐量等方面并不优秀。但是由于Spark位于Spark生态中,它可以很好的与其他应用结合,因此使用的人也不少。



