一、flink簡介
flink引入
大數據技術框架發展階段
總共有四代,mr–>DAG框架(tez)—>Spark流批處理框架,內存計算(偽實時)–>flink流批處理,內存計算(真正的實時計算)
flink vs spark
什麼是flink
flink是一個分佈式,高性能,隨時可用的以及準確的流處理計算框架,
flink可以對無界數據(流處理)和有界數據(批處理)進行有狀態計算(flink天生支持狀態計算)的分佈式,高性能的計算框架。
flink流處理特性
flink的基石
flink的四大基石:checkpoint,state,time,window
checkpoint:基於chandy-lamport算法實現分佈式計算任務的一致性語義;
state:flink中的狀態機制,flink天生支持state,state可以認為程序的中間計算結果或者是歷史計算結果;
time:flink中支持基於事件時間和處理時間進行計算,spark streaming隻能按照process time進行處理;
基於事件時間的計算我們可以解決數據遲到和亂序等問題。
window:flink提供瞭更多豐富的window,基於時間,基於數量,session window,同樣支持滾動和滑動窗口的計算。
flink流處理和批處理
流處理:無界,實時性有要求,隻需對經過程序的每條數據進行處理
批處理:有界,持久,需要對全部數據進行訪問處理;
spark vs flink
spark:spark生態中是把所有的計算都當做批處理,spark streaming中流處理本質上也是批處理(micro batch);
flink:flink中是把批處理(有界數據集的處理)看成是一個特殊的流處理場景;flink中所有計算都是流式計算;
flink中技術棧
二、flink架構體系
flink中重要角色
JobManager:類似spark中master,負責資源申請,任務分發,任務調度執行,checkpoint的協調執行;可以搭建HA,雙master。
TaskManager:類似spark中的worker,負責任務的執行,基於dataflow(spark中DAG)劃分出的task;與jobmanager保持心跳,匯報任務狀態。
無界數據和有界數據
無界數據流:數據流是有一個開始但是沒有結束;
有界數據流:數據流是有一個明確的開始和結束,數據流是有邊界的。
flink處理流批處理的思想是:
flink支持的runtime(core 分佈式流計算)支持的是無界數據流,但是對flink來說可以支持批處理,隻是從數據流上來說把有界數據流隻是無界數據流的一個特例,無界數據流隻要添加上邊界就是有界數據流。
flink編程模型
flink提供瞭四種編程模型,分別應對我們不同的場景:
flink中四種api可以混合使用,無縫的切換。
從數據結構和api層面比對flink和spark
spark vs flink
三、flink集群搭建
flink的安裝模式
三種:
local:單機模式,盡量不使用
standalone:flink自帶集群,資源管理由flink集群管理
flink on yarn: 把資源管理交給yarn實現。
安裝環境準備:
jdk1.8及以上版本,免密登錄;
flink的安裝包:
flink 1.7.2版本,從資料中獲取安裝包
local模式 很少使用
a 上傳安裝包然後解壓到指定目錄,註意修改所屬用戶和用戶組
tar -zxvf flink-1.7.2-bin-hadoop27-scala_2.11.tgz
mv flink-1.7.2 flink
chown -R root:root flink
-
扫码下载安卓APP
-
微信扫一扫关注我们微信扫一扫打开小程序手Q扫一扫打开小程序
-
返回顶部