Blink開源,Spark3.0,誰才是未來大資料領域最閃亮的星?

王知無發表於2019-03-13

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,支援按事件時間處理和端到端的一致性,但是在功能上還有一些缺陷,比如對端到端的exactly-once語義的支援。

Blink開源,Spark3.0,誰才是未來大資料領域最閃亮的星?

一個典型的Spark DAG示意圖

Flink是統一的流和批處理框架,基本資料模型是資料流,以及事件(Event)的序列,Flink從設計之初秉持了一個觀點:批是流的特例。每一條資料都可以出發計算邏輯,那麼Flink的流特性已經在延遲方面佔得天然優勢。

Blink開源,Spark3.0,誰才是未來大資料領域最閃亮的星?

一個典型的Flink workflow示意圖


Flink還提供了一個獨特的概念叫做有狀態的計算,它被用來處理一種情況:資料的處理和之前處理過的資料或者事件有關聯。比如,在做聚合操作的時候,一個批次的資料聚合的結果依賴於之前處理過的批次。早期的Spark使用者會經常受此類問題所困擾,直到Structured Streaming的出現才得已解決。

Flink從一開始就引入了state的概念來處理這種問題。為狀態計算提供了一個通用的解決方案。

周邊生態

在大資料領域,任何一個專案的火爆都被離不開完善的技術棧,Spark和Flink都基於對底層資料和計算排程的高度抽象的核心上開發出了批處理,流處理,結構化資料,圖資料,機器學習等不同套件,完成對絕大多數資料分析領域的場景的支援,意圖統一資料分析領域。

Flink和Spark都是由Scla和Java混合程式設計實現,Spark的核心邏輯由Scala完成,而Flink的主要核心邏輯由Java完成。在對第三方語言的支援上,Spark支援的更為廣泛,Spark幾乎完美的支援Scala,Java,Python,R語言程式設計。

Blink開源,Spark3.0,誰才是未來大資料領域最閃亮的星?Blink開源,Spark3.0,誰才是未來大資料領域最閃亮的星?

Spark周邊生態(圖來源於官網)

與此同時,Flink&Spark官方都支援與儲存系統如HDFS,S3的整合,資源管理/排程 Yarn,Mesos,K8s等整合,資料庫Hbase,Cassandra,訊息系統Amazon,Kinesis,Kafka等。

Blink開源,Spark3.0,誰才是未來大資料領域最閃亮的星?

Flink周邊生態(圖來源於官網)

在最近的Spark+AI峰會上,Databricks公司推出了自己的統一分析平臺(Unified Analytics Platform),目標是使戶在一個系統裡解決儘可能多的資料需求。Flink的目標和Spark一致,包含AI的統一平臺也是Flink的發展方向,從技術上來看,Flink是完全有能力支援對機器學習和深度學習的整合,但目前來看,Flink仍有很長的路要走。

未來趨勢

2018年是機器學習和深度學習元年,ML在資料處理領域佔比越來越重。Spark和Flink在做好實時計算的同時,誰能把握住這次機會就可以在未來的發展中佔得先機。另外隨著5G的發展,網路傳輸不再是瓶頸之時,IOT的爆發式發展也將會是實時計算需求爆發之時,屆時Flink在流式計算中的天然優勢將發揮的淋漓盡致,Blink的開源和阿里巴巴對Blink的加持無疑 又給Flink未來的發展注入一針強心劑。

總結

Spark和Flink發展至今,基本上已經是實時計算領域的事實標準。兩者在易用性和生態系統建設上都投入了大量的資源,是現在和未來一段時間內大資料領域最有有力的競爭者。二者的發展是競爭中伴隨著互相促進,在與機器學習整合和統一處理平臺的建設上雙方各有優劣,誰能儘早補齊短板就會在未來的發展中佔得優勢。對於普通大資料領域的開發者而言,當下也是最好的時代,可以見證兩大資料引擎的蓬勃發展,除了學習別無選擇,這何嘗不是是一種幸運?

參考目錄:

http://datastrophic.io/core-concepts-architecture-and-internals-of-apache-spark

https://databricks.com/spark/about

https://ci.apache.org/projects/flink/flink-docs-stable/release-notes/flink-1.7.html

http://spark.apache.org


相關文章