前言
今天朋友圈有篇【阿里技术】发的文章,说Blink的性能如何强悍,功能现在也已经比较完善。譬如:
Blink 在 TPC-DS 上和 Spark 相比有着非常明显的性能优势,而且这种性能优势随着数据量的增加而变得越来越大。在实际的场景这种优势已经超过 Spark 三倍,在流计算性能上我们也取得了类似的提升。我们线上的很多典型作业,性能是原来的 3 到 5 倍。在有数据倾斜的场景,以及若干比较有挑战的 TPC-H query,流计算性能甚至得到了数十倍的提升。
什么时候可以享受这波红利
还要等待一段时间。要想享受Blink的加持,大家可能还要等待一段时间,因为除了功能合并,还有代码质量。代码质量理论上应该是没有原生flink好的。这个需要时间,不是靠人力就能搞定的。
一点忧思
阿里收购Flink母公司,然后马上发通告,说blink要合并进flink了,之前还是商量口吻。显然,这对于社区来说,是一个非常不友好的感觉。我猜测,社区部分优秀的人才(包括母公司)肯定会有人走的。开源项目对于PR的质量除了功能,更多的是架构,代码质量等等的考量。
那和Spark的对比怎么样?
Spark 和 Flink不在一个level级别战斗。Spark 从诞生没多久开始,就朝着AI方向发展,包括内置的mllib,深度学习后也马上抓住机遇,在2.2.x之后发力,DB公司开发了一套生态辅助系统,比如Spark deep Learning,Tensorframes, GraphFrames等等,另外还有众多第三方框架的加持。2.3-2.4在商业版本里则已经集成了如horovod等分布式深度学习框架,所以说,2.2.x之后,Spark的主战场早就已经是AI,而 Flink依然停留在流,批战场。
Flink,Spark性能好对机器学习有啥影响
有人会问,机器学习对性能不是很在乎么?现在flink性能据说那么好?到底有多好,这是一家之言,但是 在这些框架里
性能在AI方面不是很重要,因为他们对AI重在集成,而不是自己实现。这就意味着瓶颈是在数据交换以及AI框架自身之上。模型构件好进行预测,也是对应的AI框架自己去加载,提供预测接口,其他只是wrap一层而已。
盛夏即将发布的3.0则对AI更加友好,包括CPU/GPU的管理,K8s backend, 数据交换(Spark – AI框架)的提速,内部Barrier API 的等进一步的完,显然让Spark在AI领域进一步保持优势
和AI集成的基础,Spark以有所沉淀
和AI集成的好坏,取决于Java/Scala语言和Python语言的互通的质量。Spark 在1.6之前就已经支持Python,经过这么多年的优化,已经有了很好的经验,最新的arrow引入让速度更是成两位数的提升。
Flink 盛夏之下的喧闹
这次关于bink 合并进flink的通告不是由社区主导发送,而是阿里技术发送,显然有喧宾夺主的意味,会加大他们(母公司和阿里巴巴)融合的难度。极端点,Flink可能就由一个社区项目变成一个公司产品。阿里开源了那么多东西,有几个达到了真正的国际影响力,并且处于持续的发展之中的?公司加持对于社区而言,短期是利好,但是如果干预多了,长期就不被看好了。
Presto是facebook开源的并且运作,一切以满足公司需求为最高优先级,虽然presto很优秀,但是社区没有主导权,极大的限制了他的发展,终于发生了分裂(大家可以自己搜搜)。
最后加一句
不要再拿Spark streaming 和Flink比了,请拿Structured streaming 以及Continue Processing 来和Flink比。为啥国内还在拿Spark Streaming 和Flink比?
因为惯性使然,structured streaming 新引入了一堆概念,并且限制也比较多,spark streaming大家把之前该遇到的问题都遇到了,而且也有一定的积累,要切换就没那么容易了。加上flink有阿里加持,宣传势头很大,可能有的直接就从,spark streaming 切到flink去了。