本文分享自華為雲社群《【雲小課】EI第44課 MRS基礎原理之Flink元件介紹-雲社群-華為雲》,作者:閱識風雲 。
閱識風雲是華為雲資訊大咖,擅長将複雜資訊多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視訊(雲視廳)總有一款能讓您快速上手華為雲。更多精彩内容請單擊此處【雲小課合集】華為雲小課最全合集來了,讓您上雲無憂-雲社群-華為雲。
Flink是一個批處理和流處理結合的統一計算架構,其核心是一個提供了資料分發以及并行化計算的流資料處理引擎。它的最大亮點是流處理,是業界最頂級的開源流處理引擎。
Flink最适合的應用場景是低延遲時間的資料處理(Data Processing)場景:高并發pipeline處理資料,時延毫秒級,且兼具可靠性。
本課程為您介紹華為雲MapReduce服務中Flink服務的基本原理介紹并展示如何通過MRS叢集用戶端送出Flink作業。
圖1 Flink技術棧
Flink重點建構如下特性:
- DataStream
- Checkpoint
- 視窗
- Job Pipeline
- 配置表
Flink結構
Flink結構如下圖所示。
圖2 Flink結構
Flink整個系統包含三個部分:
- Client
Flink Client主要給使用者提供向Flink系統送出使用者任務(流式作業)的能力。
- TaskManager
Flink系統的業務執行節點,執行具體的使用者任務。TaskManager可以有多個,各個TaskManager都平等。
- JobManager
Flink系統的管理節點,管理所有的TaskManager,并決策使用者任務在哪些Taskmanager執行。JobManager在HA模式下可以有多個,但隻有一個主JobManager。
MRS Flink關鍵特性
- 流式處理
高吞吐、高性能、低延遲時間的實時流處理引擎,能夠提供ms級時延處理能力。
- 豐富的狀态管理
流處理應用需要在一定時間記憶體儲所接收到的事件或中間結果,以供後續某個時間點通路并進行後續處理。Flink提供了豐富的狀态管理相關的特性支援,其中包括:
豐富的State Backend:State Backend負責管理應用程式的狀态,并根據需要進行Checkpoint。Flink提供了不同State Backend,State可以存儲在記憶體上或RocksDB等上,并支援異步以及增量的Checkpoint機制。
精确一次語義:Flink的Checkpoint和故障恢複能力保證了任務在故障發生前後的應用狀态一緻性,為某些特定的存儲支援了事務型輸出的功能,即使在發生故障的情況下,也能夠保證精确一次的輸出。
- 豐富的時間語義支援
時間是流處理應用的重要組成部分,對于實時流處理應用來說,基于時間語義的視窗聚合、檢測、比對等運算是非常常見的。Flink提供了豐富的時間語義支援。
Event-time:使用事件本身自帶的時間戳進行計算,使亂序到達或延遲到達的事件處理變得更加簡單。
Watermark支援:Flink引入Watermark概念,用以衡量事件時間的發展。Watermark也為平衡處理時延和資料完整性提供了靈活的保障。當處理帶有Watermark的事件流時,在計算完成之後仍然有相關資料到達時,Flink提供了多種處理選項,如将資料重定向(side output)或更新之前完成的計算結果。
Processing-time和Ingestion-time支援。
高度靈活的流式視窗支援:Flink能夠支援時間視窗、計數視窗、會話視窗,以及資料驅動的自定義視窗,可以通過靈活的觸發條件定制,實作複雜的流式計算模式。
- 容錯機制
分布式系統,單個task或節點的崩潰或故障,往往會導緻整個任務的失敗。Flink提供了任務級别的容錯機制,保證任務在異常發生時不會丢失使用者資料,并且能夠自動恢複。
Checkpoint:Flink基于Checkpoint實作容錯,使用者可以自定義對整個任務的Checkpoint政策,當任務出現失敗時,可以将任務恢複到最近一次Checkpoint的狀态,從資料源重發快照之後的資料。
Savepoint:一個Savepoint就是應用狀态的一緻性快照,Savepoint與Checkpoint機制相似,但Savepoint需要手動觸發,Savepoint保證了任務在更新或遷移時,不丢失掉目前流應用的狀态資訊,便于任何時間點的任務暫停和恢複。
- Flink SQL
Table API和SQL借助了Apache Calcite來進行查詢的解析,校驗以及優化,可以與DataStream和DataSet API無縫內建,并支援使用者自定義的标量函數,聚合函數以及表值函數。簡化資料分析、ETL等應用的定義。下面代碼執行個體展示了如何使用Flink SQL語句定義一個會話點選量的計數應用。
SELECT userId, COUNT(*)
FROM clicks
GROUP BY SESSION(clicktime, INTERVAL '30' MINUTE), userId
- CEP in SQL
Flink允許使用者在SQL中表示CEP(Complex Event Processing)查詢結果以用于模式比對,并在Flink上對事件流進行評估。
CEP SQL 通過MATCH_RECOGNIZE的SQL文法實作。MATCH_RECOGNIZE子句自Oracle Database 12c起由Oracle SQL支援,用于在SQL中表示事件模式比對。CEP SQL使用舉例如下:
SELECT T.aid, T.bid, T.cid
FROM MyTable
MATCH_RECOGNIZE (
PARTITION BY userid
ORDER BY proctime
MEASURES
A.id AS aid,
B.id AS bid,
C.id AS cid
PATTERN (A B C)
DEFINE
A AS name = 'a',
B AS name = 'b',
C AS name = 'c'
) AS T
如何使用Flink用戶端
購買一個包含Flink元件的MRS叢集,MRS叢集的建立可參考建立叢集,例如購買一個MRS 3.1.0叢集,未開啟了Kerberos認證。
1、叢集正常運作後,安裝叢集用戶端,例如安裝目錄為“/opt/hadoopclient”。Flink用戶端的安裝可以參考安裝用戶端。
2、以用戶端安裝使用者,登入安裝用戶端的節點。
3、執行以下指令,切換到用戶端安裝目錄。
cd /opt/hadoopclient
source bigdata_env
4、運作wordcount作業。
- 方式1:執行如下指令啟動session,并在session中送出作業。
- yarn-session.sh -nm "session-name"flink run /opt/hadoopclient/Flink/flink/examples/streaming/WordCount.jar
- 方式2:執行如下指令在Yarn上送出單個作業。
- flink run -m yarn-cluster /opt/hadoopclient/Flink/flink/examples/streaming/WordCount.jar
5、作業送出成功後,用戶端界面顯示類似如下。
圖3 在Yarn上送出作業成功
圖4 啟動session成功
圖5 在session中送出作業成功
6、使用運作使用者登入MRS叢集的FusionInsight Manager界面,單擊“叢集 > 服務 > Yarn”,單擊“ResourceManager WebUI”後的連結,進入Yarn服務的原生頁面,找到對應作業的application,單擊application名稱,進入到作業詳情頁面。
若作業尚未結束,可單擊“Tracking URL”連結進入到Flink的原生頁面,檢視作業的運作資訊。
若作業已運作結束,對于在session中送出的作業,可以單擊“Tracking URL”連結登入Flink原生頁面檢視作業資訊。
application
好了,本期雲小課就介紹到這裡,快去體驗MapReduce(MRS)更多功能吧!猛戳這裡成長地圖_MapReduce服務 MRS_華為雲
點選下方,第一時間了解華為雲新鮮技術~
華為雲部落格_大資料部落格_AI部落格_雲計算部落格_開發者中心-華為雲
#華為雲開發者聯盟#