文章目錄
- 一、Flink基礎簡介
- 1、什么是Flink
- 2、Flink流處理特性
- 3、Flink四大基石
- 4、Flink中的角色
- 二、Flink集群搭建
- 1、Local模式
- ①上傳Flink安裝包
- ②啟動交互窗口
- ③提交任務測試
- ④訪問WebUI頁面查看
- ④退出停止集群
一、Flink基礎簡介
1、什么是Flink
Flink是?個分布式,高性能,隨時可?的以及準確的流處理計算框架,Flink可以對無界數據(流處理)和有界數據(批處理)進?有狀態計算的分布式,?性能的計算框架。
?界數據流:數據流是有?個開始但是沒有結束;
有界數據流:數據流是有?個明確的開始和結束,數據流是有邊界的。
2、Flink流處理特性
1.支持高吞吐、低延遲、高性能的流處理
2.支持帶有事件時間的窗口(Window)操作
3.支持有狀態計算的 Exactly-once 語義
4.支持高度靈活的窗口(Window)操作,支持基于 time、count、session,以及 data-driven 的窗口操作
5.支持具有 Backpressure(背壓) 功能的持續流模型
6.支持基于輕量級分布式快照(Snapshot)實現的容錯
7.一個運行時同時支持 Batch on Streaming 處理和 Streaming 處理
8.Flink 在 JVM 內部實現了自己的內存管理
9.支持迭代計算;
10.程序自動優化:避免特定情況下 Shuffle、排序等昂貴操作,中間結果有必要進行緩存
3、Flink四大基石
checkpoint,state,time,window
checkpoint:
基于chandy-lamport算法實現分布式計算任務的?致性語義;state:
flink中的狀態機制,flink 天生支持state,state可以認為程序的中間計算結果或者是歷史計算結果;time:
flink中?持基于事件時間和處理時間進?計算,spark streaming只能按照process time進?處理;基于事件時間的計算我們可以解決數據延遲和亂序等問題。window:
flink提供了更多豐富的window,基于時間,基于數量,session window,同樣?持滾動和滑動窗
?的計算。
4、Flink中的角色
JobManager: 負責資源申請,任務分發,任務調度執行,checkpoint的協調執行;
TaskManager: 負責任務的執行,基于Dataflow(Spark中DAG)劃分出的Task;與JobManager保持?跳,匯報任務狀態。
二、Flink集群搭建
Local: 單機模式,自測學習使用
Standalone:Flink?帶集群,資源管理由Flink集群管理
Flink on Yarn: 把資源管理交給yarn實現。
1、Local模式
①上傳Flink安裝包
準備服務器, 上傳安裝包 flink-1.7.2-bin-hadoop27-scala_2.11.tgz 然后解壓到指定目錄,注意修改所屬用戶和用戶組
注意: 服務器需要配置JDK8的環境tar -zxvf flink-1.7.2-bin-hadoop27-scala_2.11.tgz
mv flink-1.7.2 flink
chown -R root:root flink
如下圖所示:
②啟動交互窗口
進入Flink的bin目錄下啟動shell交互式窗口
cd /develop/flink
bin/start-scala-shell.sh local
如下圖所示
③提交任務測試
注意: 提前創建一個測試文件/root/words.txt,隨便寫入一些文本作為測試文件
benv.readTextFile("/root/words.txt").flatMap(_.split("")).map((_,1)).groupBy(0).sum(1).print()
④訪問WebUI頁面查看
http://192.168.88.88:8081
④退出停止集群
bin/stop-cluster.sh