一、flink的定義
flnk是乙個分布式處理引擎,用於在無邊界和有邊界資料流上進行有狀態的計算。flink能在常見集群環境中執行,並能以記憶體速度和任意規模進行計算。
二、有界流和無界流
flink的核心是流處理,當然也支援批處理。flink的本質是流處理,它將批處理看作是流處理的特殊情況,即有界流資料。而spark恰恰相反,spark是將流處理看做是批處理的特殊情況,將資料進行小的拆分,即微批處理。
有界流:定義了流的開始,也有定義流的結束。有界流在攝取從開始到結束這一階段的所有資料後再進行計算,有界流處理通常被稱為批處理。
無界流:定義了流的開始,但是沒有定義流的結束,資料會源源不斷的產生。無界流的資料必須持續處理,即資料被攝取後需要立刻進行處理,不能等到所有資料到達再處理,因為等不到結束。
三、有狀態的計算架構
有狀態計算是什麼:可以把中間計算結果拿出來,新的資料進來時,可以基於這個中間結果進行計算。
flink有狀態計算的優勢:
1.當有新的資料進來時,不需要把之前產生的資料拿出來進行全量計算,節約計算資源,提公升效能。
2.flink維護了這個中間結果,不需要開發者去處理,如把中間結果存在redis啊,mysql,省心效率還高。
四、flink的優勢和特點
1.高吞吐、低延遲、高效能
高吞吐:分布式架構,多台機器一起工作,一次可以處理很多資料。
低延遲:真正的流處理,來一條處理一條,無需等待。
高效能:記憶體計算,加上flink內部的優化,計算快。
2.支援事件時間(event time)
在流計算中,經常會用到視窗計算,spark視窗計算只支援處理時間,flink可以既支援處理時間也支援事件時間。在分布式系統中,難免會出現亂序資料的情況。先產生的資料後到達流計算框架,如果還是採用處理時間計算資料的話,會影響計算結果的正確性,而使用事件時間就能夠計算出精確的結果,避免了網路傳輸或硬體系統的影響。
五、flink常用場景
實時風控
實時報表
實時數倉
實時推薦系統
Flink核心概念
根據資料來源的型別,即有界 bounded 或無界 unbounded 資料來源,您可以編寫乙個批處理程式或流處理程式,其中dataset api用於批處理,datastream api用於流處理。flink程式看起來像轉換資料集合的常規程式。每個程式都由相同的基本部分組成 streamexecut...
Flink核心概念之window
計數視窗 1 windowall就是把所有資料弄到乙個slot處理,並行度始終為1 2 keyby會把資料分到不同的slot,keyby.window可以設定並行度 package com.fouth sink import org.apache.flink.streaming.api.functi...
FLINK流式概念
flink流式概念整理 動態表 1 將流轉換為動態表。2 在動態表上計算乙個連續查詢,生成乙個新的動態表。3 生成的動態表被轉換回流。時間屬性 時間屬性可以像普通的時間戳的列一樣被使用和計算。一旦時間屬性被用在了計算中,它就會被物化,進而變成乙個普通的時間戳。普通的時間戳是無法跟 flink 的時間...