- Flink內核原理與實現
- 馮飛 崔鵬云 陳冠華編著
- 949字
- 2021-04-14 11:30:30
2.1 Flink應用開發
上一章簡要地介紹了Flink的設計理念、特點、生態與技術棧、運行架構,在深入Flink之前,還有必要對Flink內部的一些核心概念、流程進行總體性的闡述。
Flink作為批流一體的計算引擎,其面對的是業務場景,面向的使用者是開發人員和運維管理人員。
Flink應用程序(簡稱Flink應用),也叫作Flink作業、Flink Job。Flink作業包含了兩個基本的塊:數據流(DataStream)和轉換(Transformation)。DataStream是邏輯概念,為開發者提供了API接口,Transformation是處理行為的抽象,包含了數據的讀取、計算、寫出。所以Flink的作業中的DataStream API調用,實際上構建了多個由Transformation組成的數據處理流水線(Pipeline)。
DataStream API和Transformation的轉換如圖2-1所示。

圖2-1 Flink DataStream API與Transformation的轉換
執行時,Flink應用被映射成Dataflow,由數據流和轉換操作組成。每個Dataflow從一個或多個數據源開始,并以一個或多個Slink輸出結束。Dataflow本質上是一個有向無環圖(DAG),但是允許通過迭代構造允許特殊形式的有向有環圖。為了簡單起見,大部分任務都是有向無環圖。
Flink應用由相同的基本部分組成。
(1)獲取參數(可選)
如果有配置參數,則讀取配置參數,可以是命令行輸入的參數,也可以是配置文件(配置文件可能是命令行給的1個配置文件路徑)。
(2)初始化Stream執行環境
這是必須要做的,讀取數據的API依賴于該執行環境。
(3)配置參數
讀取到的參數可以是執行環境參數或者業務參數。執行環境參數調用對應的API賦予即可,這些參數會覆蓋flink.conf中默認的配置參數,如最大并行度maxParallism等。如果是業務級的參數,可以放入GlobalJobParameters中,在Job執行時從GlobalJobParameters讀取參數。
一般在生產或者實際的應用場景中,多多少少需要提供一些配置信息,如果只是為了學習用途,則可以不用考慮。
GlobalJobParameters可以視作一個Map,執行環境參數等具體細節可以參照官方文檔的詳細說明。
(4)讀取外部數據
Flink作為分布式執行引擎,本身沒有數據存儲能力,所以定義了一系列接口、連接器與外部存儲進行交互,讀寫數據。
在Flink中,數據來源叫作Source,Flink支持從Kafka、HDFS、HBase、數據庫等外部存儲讀取數據。
(5)數據處理流程
調用DataStream的API組成數據處理的流程,如調用DataStream.map().filter()...組成一個數據處理流水線。
(6)將處理結果寫入外部
在Flink中將數據寫入外部的過程叫作Sink,Flink支持寫出數據到Kafka、HDFS、HBase、數據庫等外部存儲。
(7)觸發執行
StreamExecutionEnvironment#execute是Flink應用執行的觸發入口,無論是一般的DataStream API開發還是Table &SQL開發都是如此。
調用該API之后,才會觸發后續的一系列生成StreamGraph、JobGraph、ExecutionGraph和任務分發執行的過程。
- Dreamweaver CS3+Flash CS3+Fireworks CS3創意網站構建實例詳解
- 圖形圖像處理(Photoshop)
- 網上生活必備
- Mastering Salesforce CRM Administration
- 精通Excel VBA
- 大型數據庫管理系統技術、應用與實例分析:SQL Server 2005
- 數據通信與計算機網絡
- 中國戰略性新興產業研究與發展·工業機器人
- 電氣控制與PLC技術應用
- Applied Data Visualization with R and ggplot2
- 21天學通Linux嵌入式開發
- 計算機辦公應用培訓教程
- 運動控制系統
- ARM嵌入式開發實例
- 多傳感器數據智能融合理論與應用