閱識風云是華為云資訊大咖,擅長將復雜資訊多元化呈現,其出品的一張圖(云圖說)、深入淺出的博文(云小課)或短視頻(云視廳)總有一款能讓您快速上手華為云,更多精彩內容請單擊此處,
摘要:Flink是一個批處理和流處理結合的統一計算框架,其核心是一個提供了資料分發以及并行化計算的流資料處理引擎,它的最大亮點是流處理,是業界最頂級的開源流處理引擎,
本文分享自華為云社區《【云小課】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提供了豐富的狀態管理相關的特性支持,其中包括 - 多種基礎狀態型別:Flink提供了多種不同資料結構的狀態支持,如ValueState、ListState、MapState等,用戶可以基于業務模型選擇最高效、合適狀態型別,
- 豐富的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快速入門的“創建集群”章節,例如購買一個MRS 3.1.0集群,未開啟了Kerberos認證,
1.集群正常運行后,安裝集群客戶端,例如安裝目錄為“/opt/hadoopclient”,Flink客戶端的安裝可以參考MRS用戶指南的“安裝客戶端”章節,
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原生頁面查看作業資訊,
圖6 application

好了,本期云小課就介紹到這里,快去體驗MapReduce(MRS)更多功能吧!猛戳這里
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/544660.html
標籤:其他
