漫談加持Blink的Flink和Spark
前言
今天朋友圈有篇【阿里技術】發的文章,說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在商業版本里則已經集成了如harvard等分散式深度學習框架,所以說,2.2.x之後,Spark的主戰場早就已經是AI,而 Flink依然停留在流,批戰場。
Flink,Spark效能好對機器學習有啥影響
有人會問,機器學習對效能不是很在乎麼?現在flink效能據說那麼好?到底有多少,這是一家之言,但是 在這些框架裡
效能在AI方面不是很重要,因為他們對AI重在整合,而不是自己實現。這就意味著瓶頸是在資料交換以及AI框架自身之上。模型構件好進行預測,也是對應的AI框架自己去載入,提供預測介面,其他只是wrap一層而已。
盛夏即將釋出的3.0則對AI更加友好,包括CPU/GPU的管理,K8s backend進一步完善, 資料交換(Spark - AI框架)的提速,內部Barria 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去了。