Flink核心概念

2022-07-31 07:15:11 字數 1162 閱讀 4991

一、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 的時間...