天天看點

雲小課|MRS基礎原理之Flink元件介紹

作者:華為雲開發者聯盟

本文分享自華為雲社群《【雲小課】EI第44課 MRS基礎原理之Flink元件介紹-雲社群-華為雲》,作者:閱識風雲 。

雲小課|MRS基礎原理之Flink元件介紹

閱識風雲是華為雲資訊大咖,擅長将複雜資訊多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視訊(雲視廳)總有一款能讓您快速上手華為雲。更多精彩内容請單擊此處【雲小課合集】華為雲小課最全合集來了,讓您上雲無憂-雲社群-華為雲。

Flink是一個批處理和流處理結合的統一計算架構,其核心是一個提供了資料分發以及并行化計算的流資料處理引擎。它的最大亮點是流處理,是業界最頂級的開源流處理引擎。

Flink最适合的應用場景是低延遲時間的資料處理(Data Processing)場景:高并發pipeline處理資料,時延毫秒級,且兼具可靠性。

雲小課|MRS基礎原理之Flink元件介紹

本課程為您介紹華為雲MapReduce服務中Flink服務的基本原理介紹并展示如何通過MRS叢集用戶端送出Flink作業。

雲小課|MRS基礎原理之Flink元件介紹

圖1 Flink技術棧

Flink重點建構如下特性:

  • DataStream
  • Checkpoint
  • 視窗
  • Job Pipeline
  • 配置表

Flink結構

Flink結構如下圖所示。

雲小課|MRS基礎原理之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、作業送出成功後,用戶端界面顯示類似如下。

雲小課|MRS基礎原理之Flink元件介紹

圖3 在Yarn上送出作業成功

雲小課|MRS基礎原理之Flink元件介紹

圖4 啟動session成功

雲小課|MRS基礎原理之Flink元件介紹

圖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部落格_雲計算部落格_開發者中心-華為雲

#華為雲開發者聯盟#

繼續閱讀