天天看點

相比Spark等傳統模式,Flink 和 K8S是怎樣的結合

Apache Flink 是近年來越來越流行的一款開源大資料計算引擎,它同時支援了批處理和流處理。大資料起源自批處理,Spark最初的定位就是改進Hadoop, 更快速的進行批處理。而Storm擅長的則是進行無狀态的流計算(在無狀态的流計算領域, 它的延遲是最小的), 進而出現的Flink則是Storm的下一代解決方案。它既可以處理stream data也可以處理batch data,可以同時兼顧Spark以及Spark streaming的功能。Flink在運作中主要有三個元件組成,JobClient,JobManager 和 TaskManager。

實時計算産品通常提供兩種模式,共享型與獨享型。在這樣的模式下,使用者不需要關心整個叢集的運維。開發時,使用Blink SQL,用開箱即用的metric收集和展示。同時,作業的監控和異常時報警,也能得到保證。

新模式Flink on K8S,在功能、引擎和托管模式上,都有變化。

功能上,基于Flink的特性,它的常駐程序,類似于線上業務的App,作業釋出後,修改頻率比較低。使用者在開發控制台送出并控制作業,可使用多樣的可插拔的增值功能。

在引擎上,基于開源Flink版本,有了以下改造。提供增量Checkpoint。SQL優化器和執行器的改造更近完善,提供Unified SQL。在Runtime上,提供了一套統一且高效的算子架構,有更加靈活的chaining政策和自定義排程插件。

托管模式采用半托管的方式,叢集部署在ECS和K8S上,靈活性也更強。

Flink on K8S,充分利用K8S的優勢。K8S 可以很好地內建其他叢集維護工具,如監控工具普羅米修斯,同時在資源彈性方面,K8S 可以很友善地進行擴縮容。它的設計初衷,就是為線上應用服務的,設計目标是幫助線上應用更好的釋出及管理,同時,很好的實作資源的隔離。更重要的是,發展至今,K8S有了一定的生态優勢,也來越多的使用者使用,也讓這個工具越來越好。