Flink基礎入門(含案例)

日内瓦医生 2024-09-04 15:00 6次浏览 0 条评论 taohigo.com

一、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