Apache Flink对我们意味着什么?

作者 徐川

最近Qubole的一份调查报告显示,Apache Flink是2018年大数据和Hadoop生态系统中发展最快的引擎,与2017年的类似调查相比,采用量增长了125%。这表明Flink正在获得越来越多人的认可。

之所以增长这么快,和Flink在设计上的先进性是分不开的。流计算一直是大数据计算引擎的一个痛点,在Apache Storm出现以前,大家都是采用批处理的方式来计算,其中最典型的代表就是Apache Spark,它推出了Spark Streaming试图用快速的批处理及“微批处理”来模拟流计算,这种尝试现在被证明限制太多,Spark本身也在尝试连续执行模式(Continuous Processing),然而进展较为缓慢。

Storm本身也存在问题,一个是性能,无法支持高吞吐低延迟的场景,其次是功能,对于Exactly Once模式和窗口支持较弱,使用的场景有限。与此相比,Flink已经克服了流处理方面大部分的问题,包括更好的状态管理、利用分布式一致性快照实现的检查点容错机制,让Flink在流处理方面的能力趋于完善。

然而,就如本书标题所示,Flink并不想将自己仅仅局限于流处理引擎,而是用流处理来模拟批处理,以及支持交互式查询、机器学习等大部分数据处理场景。这已经进入了通用计算引擎的领域,与Spark展开了正面竞争,而如果你阅读了本书的案例部分,你会发现Flink除了生态和社区方面与老牌计算引擎相比尚有不如,其它部分几乎都能很好的支持。连在易用性方面,阿里也给Flink贡献了Flink SQL。各大公司对Flink的支持,为Flink的发展打下了坚实的根基。

从MapReduce,到Spark、Storm,再到Flink,大数据计算技术已经经历了三代发展,我们正处于第三代的前半段,相信计算技术的不断创新,会推动上层应用的革新和进化,亲自参与技术的变革,这就是是今天我们大数据技术人的历史机遇。