撥雲見日:Flink生態圈及未來發展方向

Apache Flink是一款分散式、高效能、高可用、高精確的為資料流應用而生的開源流式處理框架。Flink的核心是在資料流上提供資料分發、通訊、具備容錯的分散式計算。同時,Flink在流處理引擎上提供了批流融合計算能力,以及SQL表達能力。Flink技術發展越來越成熟,與Spark的PK之勢漸佔上風。不少技術人嗅到了這個趨勢,都希望學好這門大資料技術。那麼好,我建議大家從熟悉Flink生態有及未來發展方向開始,只有清楚了這個,才清楚應該學什麼,為什麼要學它。

1.Flink核心元件棧

Flink發展越來越成熟,已經擁有了自己的豐富的核心元件棧,如下圖所示。

撥雲見日:Flink生態圈及未來發展方向

Flink核心元件棧

上圖可以看出Flink的底層是Deploy,Flink可以Local模式執行,啟動單個 JVM。Flink也可以Standalone 叢集模式執行,同時也支援Flink ON YARN,Flink應用直接提交到YARN上面執行。另外Flink還可以執行在GCE(谷歌雲服務)和EC2(亞馬遜雲服務)。

Deploy的上層是Flink的核心(Core)部分Runtime。在Runtime之上提供了兩套核心的API,DataStream API(流處理)和DataSet API(批處理)。在核心API之上又擴充套件了一些高階的庫和API,比如CEP流處理,Table API和SQL,Flink ML機器學習庫,Gelly圖計算。SQL既可以跑在DataStream API,又可以跑在DataSet API。

2.Flink生態

從上圖可以看出Flink擁有更大更豐富的生態圈:

撥雲見日:Flink生態圈及未來發展方向

Flink生態圈

中間最底層Deploy模式包含 Local本地模式、Cluster(包含Standalone和YARN)叢集模式以及Cloud雲服務模式,然後它的上層是Flink runtime執行時,然後它的上層是Flink DataSet批處理和DataStream流處理,然後它的上層又擴充套件了Hadoop MR、Table、Gelly(圖計算)、ML(機器學習)、Zoppelin(視覺化工具)等等。

左邊為輸入Connectors。流處理方式包含Kafka(訊息佇列),AWS kinesis(實時資料流服務),RabbitMQ(訊息佇列),NIFI(資料管道),Twitter(API)。批處理方式包含HDFS(分散式檔案系統),HBase(分散式列式資料庫),Amazon S3(檔案系統),MapR FS(檔案系統),ALLuxio(基於記憶體分散式檔案系統)。

右邊為輸出Connectors。流處理方式包含Kafka(訊息佇列),AWS kinesis(實時資料流服務),RabbitMQ(訊息佇列),NIFI(資料管道),Cassandra(NOSQL資料庫),ElasticSearch(全文檢索),HDFS rolling file(滾動檔案)。批處理包含HBase(分散式列式資料庫),HDFS(分散式檔案系統)。

3.Flink未來發展方向

Flink會進行批計算的突破、流處理和批處理無縫切換、界限越來越模糊、甚至混合。

Flink會開發更多語言支援。

Flink會逐步完善Machine Learning 演算法庫,同時 Flink 也會向更成熟的機器學習、深度學習去整合(比如Tensorflow On Flink)。

撥雲見日:Flink生態圈及未來發展方向

Flink vs Spark

前面的文章已經寫過,從批處理與流處理的統一上來看,Flink是做得很好的,這方面完全蓋過了Spark的風頭,被認為是新一代的大資料計算引擎。不過,在機器學習方面,Spark目前的支援程度要比Flink好。但從阿里的實踐來看,Flink對AI庫的支援從機制上看效果很好,後來居上也未可知,讓我們拭目以待吧!