戳更多文章:
本文是例行介紹,熟悉的直接跳過 - 魯迅
魯迅: ...
大綱
入門篇:

放棄篇:

圖片顯示不了,戳這里:
https://github.com/wangzhiwubigdata/God-Of-BigData/blob/master/Flink
插個廣告
-
全網唯一一個從0開始幫助Java開發者轉做大數據領域的公眾號~
-
公眾號大數據技術與架構或者搜索import_bigdata關注,大數據學習路線最新更新,已經有很多小伙伴加入了~

Flink是什么
一句話概括
Apache Flink是一個面向分布式數據流處理和批量數據處理的開源計算平台,提供支持流處理和批處理兩種類型應用的功能。
前身
Apache Flink 的前身是柏林理工大學一個研究性項目, 在 2014 被 Apache 孵化器所接受,然后迅速地成為了Apache Software Foundation的頂級項目之一。
特點
現有的開源計算方案,會把流處理和批處理作為兩種不同的應用類型:流處理一般需要支持低延遲、Exactly-once保證,而批處理需要支持高吞吐、高效處理。
Flink是完全支持流處理,也就是說作為流處理看待時輸入數據流是無界的;批處理被作為一種特殊的流處理,只是它的輸入數據流被定義為有界的。
Flink組件棧

)
Deployment層
主要涉及了Flink的部署模式,Flink支持多種部署模式:本地、集群(Standalone/YARN)、雲(GCE/EC2)

Runtime層
Runtime層提供了支持Flink計算的全部核心實現,比如:支持分布式Stream處理、JobGraph到ExecutionGraph的映射、調度等等,為上層API層提供基礎服務
API層
API層主要實現了面向無界Stream的流處理和面向Batch的批處理API,其中面向流處理對應DataStream API,面向批處理對應DataSet API
Libaries層
-
在API層之上構建的滿足特定應用的實現計算框架,也分別對應於面向流處理和面向批處理兩類
-
面向流處理支持:CEP(復雜事件處理)、基於SQL-like的操作(基於Table的關系操作)
-
面向批處理支持:FlinkML(機器學習庫)、Gelly(圖處理)
Flink的優勢
- 支持高吞吐、低延遲、高性能的流處理
- 支持高度靈活的窗口(Window)操作
- 支持有狀態計算的Exactly-once語義
- 提供DataStream API和DataSet API


Flink基本編程模型
- Flink程序的基礎構建模塊是流(streams) 與 轉換(transformations)
- 每一個數據流起始於一個或多個 source,並終止於一個或多個 sink
下面是一個由Flink程序映射為Streaming Dataflow的示意圖:

並行數據流示意圖:

Flink基本架構
- Flink是基於Master-Slave風格的架構
- Flink集群啟動時,會啟動一個JobManager進程、至少一個TaskManager進程

JobManager
-
Flink系統的協調者,它負責接收Flink Job,調度組成Job的多個Task的執行
-
收集Job的狀態信息,並管理Flink集群中從節點TaskManager
TaskManager
- 實際負責執行計算的Worker,在其上執行Flink Job的一組Task
- TaskManager負責管理其所在節點上的資源信息,如內存、磁盤、網絡,在啟動的時候將資源的狀態向JobManager匯報
Client
-
用戶提交一個Flink程序時,會首先創建一個Client,該Client首先會對用戶提交的Flink程序進行預處理,並提交到Flink集群
-
Client會將用戶提交的Flink程序組裝一個JobGraph, 並且是以JobGraph的形式提交的
最后
本文是例行介紹,熟悉的直接跳過。