Flink入門html
Apache Flink 是一個面向分佈式數據流處理和批量數據處理的開源計算平臺,提供支持流處理和批處理兩種類型應用的功能。git
Flink 特色github
現有的開源計算方案,會把流處理和批處理做爲兩種不一樣的應用類型:流處理通常須要支持低延遲、Exactly-once保證,而批處理須要支持高吞吐、高效處理apache
Flink組件棧網絡
Deployment層架構
主要涉及了Flink的部署模式、Flink支持多種部署模式:本地、集羣(Standalone/YARN)、雲(GCE/EC2).框架
Runtime層分佈式
Runtime層提供了支持Flink計算的所有核心實現,好比:支持分佈式Stream處理、JobGraph到ExecutionGraph的映射、調度等等,爲上層API層提供基礎服務ide
API層性能
API層主要實現了面向***Stream的流處理和麪向Batch的批處理API,其中面向流處理對應DataStream API,面向批處理對應DataSet API
Libaries層
在API層之上構建的知足特定應用的實現計算框架,也分別對應於面向流處理和麪向批處理兩類。
Flink優點
支持高吞吐、低延遲、高性能的流處理
支持高度靈活的窗口(Window)操做
支持有狀態計算的Exactly-once語義
Flink數據流和時間窗口
基本概念
Flink程序的基礎構建模塊是流(streams)與轉換(transformations)。
時間窗口
流上的聚合須要由窗口來劃定範圍,好比 「計算過去的5分鐘」 或者 「最後100個元素的和」
Flink分佈式運行環境
Flink是基於Master-Slave風格的架構
JobManager
Flink系統的協調者,他負責接受Flink Job ,調度組成Job的多個Task的執行
TaskManager
實際負責執行計算的Worder,在其上執行Flink Job的一組Task
Client
用戶提交一個Flink程序時,會首先建立一個Client,該Client首先會對用戶提交的Flink程序進行預處理,並提交到Flink集羣
Flink安裝
方式一
git clone https://github.com/apache/flink.git
cd flink
mav clean package -DskipTests
方式二
到官網下載編譯版:https://flink.apache.org/downloads.html
不一樣環境下到bin目錄,運行start-local.bat
運行正常,訪問頁面:http://localhost:8081
▼