天天看點

Flink簡介

ApacheFlink是一個面向分布式資料流處理和批量資料處理的開源計算平台,它能夠基于同一個Flink運作時,提供支援流處理和批處理兩種類型應用的功能。

現有的開源計算方案,會把流處理和批處理作為兩種不同的應用類型,因為它們所提供的SLA(Service-Level-Aggreement)是完全不相同的:流處理一般需要支援低延遲、Exactly-once保證,而批處理需要支援高吞吐、高效處理。

Flink從另一個視角看待流處理和批處理,将二者統一起來:Flink是完全支援流處理,也就是說作為流處理看待時輸入資料流是無界的;批處理被作為一種特殊的流處理,隻是它的輸入資料流被定義為有界的。

Flink簡介

Apache Flink是一個面向分布式資料流處理和批量資料處理的開源計算平台,它能夠基于同一個Flink運作時,提供支援流處理和批處理兩種類型應用的功能。

Flink簡介

Flink首先支援Local的執行環境,所有子產品元件都可以運作在同一個JVM程序中,主要是友善開發調試,使用者在開發Flink應用時可以在IDE環境中友善的本地運作或是設定斷點進行代碼調試。此外Flink支援Standalone模式進行分布式部署,Flink的JobManager和TaskManager可以部署在多台節點上,組成一個叢集,管理叢集資源,執行分布式任務。同時Flink也可以委托YARN進行資源管理,Flink的Job通過YARN申請資源。最後,Flink也支援Google和Amazon的公有雲平台,Flink的Job可以直接送出到公有雲上執行。使用者開發的同一個Flink業務邏輯,無需任何修改,可随時遷移到不同的執行環境執行。

Flink簡介

Client負責送出Flink作業,首先将使用者的Flink Job翻譯并優化成圖狀的Dataflow,并送出給JobManager,JobManager将Flink DataFlow切分成分布式task,并按照叢集的資源配置排程task,将task分發到TaskManger執行。TaskManager可能有多個,執行具體的task,且負責task與task之間的資料傳輸。不同于MapReduce,Flink的TaskManger類似于Spark的Executor,task以線程而非程序的粒度在TaskManager中執行。在Standalone模式下,JobManger和TaskManager負責資源的管理,而在YARN模式下,JobManager相當于ApplicationMaster, 而TaskManger相當于Executor。隻是負責task的排程與執行。

Flink簡介

最底層級的抽象僅僅提供了有狀态流。實際上,大多數應用并不需要上述的底層抽象,而是針對 核心API(Core APIs) 進行程式設計,比如DataStream API(有界或無界流資料)以及DataSet API(有界資料集)Table API 是以 表 為中心的聲明式DSL,其中表可能會動态變化(在表達流資料時)。

Flink簡介
Flink簡介

Client負責送出Flink作業,首先将使用者的Flink Job翻譯并優化成圖狀的Dataflow,并送出給JobManager,JobManager将Flink DataFlow切分成分布式task,并按照叢集的資源配置排程task,将task分發到TaskManger執行。TaskManager可能有多個,執行具體的task,且負責task與task之間的資料傳輸。不同于MapReduce,Flink的TaskManger類似于Spark的Executor,task以線程而非程序的粒度在TaskManager中執行。在Standalone模式下,JobManger和TaskManager負責資源的管理,而在YARN模式下,JobManager相當于ApplicationMaster, 而TaskManger相當于Executor。隻是負責task的排程與執行

Flink簡介
Flink簡介
Flink簡介
Flink簡介
Flink簡介
Flink簡介
Flink簡介
Flink簡介
Flink簡介
Flink簡介
Flink簡介
Flink簡介
Flink簡介
Flink簡介
Flink簡介

繼續閱讀