流式處理新秀Flink原理與實踐

藍色de葉子發表於2018-03-16

隨著大資料技術在各行各業的廣泛應用,要求能對海量資料進行實時處理的需求越來越多,同時資料處理的業務邏輯也越來越複雜,傳統的批處理方式和早期的流式處理框架也越來越難以在延遲性、吞吐量、容錯能力以及使用便捷性等方面滿足業務日益苛刻的要求。

在這種形勢下,新型流式處理框架Flink通過創造性地把現代大規模並行處理技術應用到流式處理中來,極大地改善了以前的流式處理框架所存在的問題。飛馬網於3月13日晚,邀請到大資料技術高階架構師—曠東林,線上上直播中,曠老師向我們分享了Flink在諸多方面的創新以及它本身所具有的獨特能力。

流式處理新秀Flink原理與實踐

我們主要從以下幾個部分來看:

一.流式處理的背景:

傳統的大資料處理方式一般是批處理式的,也就是說,今天所收集的資料,我們明天再把今天收集到的資料算出來,以供大家使用,但是在很多情況下,資料的時效性對於業務的成敗是非常關鍵的。

1.流式處理的背景—必要性

 

比如說,在入侵檢測的場景下,我們希望看到的結果是:一旦有入侵,我們能及時地作出響應。這種情況下,如果按照傳統的批處理方式,是不可能在入侵的時候實時檢測出結果的。另外,比如說在語音計算中,我們要實時監控各個虛擬器的執行狀態以及出現錯誤時的預警,這種情況下,也要求我們能夠實時監控資料,並對資料產生的各種報警,實時採取動作。由此,流式處理的必要性就顯得無疑了。

2.流式處理的背景—基礎架構

我們來看一下流式處理的基本框架。

流式處理新秀Flink原理與實踐

流式處理新秀Flink原理與實踐

示例裡面展示的只是部分API,除了上面那些,還有很多操作,我們一起來看下面這張圖片。

流式處理新秀Flink原理與實踐

“map”就是做一些對映,比如我們把兩個字串合併成一個字串,把一個字串拆成兩個或者三個字串。

“flatMap”類似於把一個記錄拆分成兩條、三條、甚至是四條記錄。

“Filter”就類似於過濾。

“keyBy”就等效於SQL裡的group by。

“reduce”就類似於MapReduce裡的reduce。

“join”操作就有點類似於我們資料庫裡面的join。

“aggregate”是一個聚合操作,如計數、求和、求平均等。

“connect”實現把兩個流連成一個流。

“project”操作就類似於SQL裡面的snacks。

“repartition”是一個重新分割槽操作。

4.執行機制

知道Flink的程式設計模型之後,那麼Flink是怎樣去執行這些業務邏輯的呢?下面是它的執行機制。

流式處理新秀Flink原理與實踐

Flink在處理資料流時,它的整個資料流裡面的資料分為兩種,一種是本身業務發給的資料,還有一種是Flink自己插到資料流裡面的資料。插入的記錄我們叫它barrier,就是柵欄,我們可以把它看成一個表示進度的標記,標記整個資料處理的狀態,它從源頭髮出。從圖中我們可以看到,不管是什麼流,它都會產生一個checkpoint barrier。

流式處理新秀Flink原理與實踐

當operator收到柵欄之後,它會把柵欄的狀態儲存,然後把特定記錄發出去,到達第二個operator裡面,它又把它的狀態放到Master裡,它就是這樣一步一步去完成的。在這個過程中,如果有一步出現故障,Flink會重複前面的步驟,重新去執行,所以不會出現資料的丟失和錯誤。

三.Flink的實踐:

1.示例

我們來看一下具體的示例。

流式處理新秀Flink原理與實踐

我們可以看到,在啟動的Flink叢集裡面,有80個Task Managers,80個巢,1個空閒的巢數,紅框點進去之後,就是下面的圖片。

流式處理新秀Flink原理與實踐

流式處理新秀Flink原理與實踐

監控指標有很多。

流式處理新秀Flink原理與實踐

流式處理新秀Flink原理與實踐

四.總結與展望:

最後,我們來做一下總結。以上只是關於Flink的一些簡單介紹,關於Flink的記憶體管理、部署、內部執行機制等相關詳細資料,我們可以通過以下網站進行資料查詢。

流式處理新秀Flink原理與實踐

Apache Flink是有關Flink開源的官方網站。

Flink-Forward網站主要介紹各家大公司在使用Flink過程中的心得體會,以及Flink本身的發展提案的一些相關內容。

dataArtisans是Flink背後的一個商業公司,Flink由它發展起來。它上面的部落格包含好多關於Flinkd的介紹,以及一些有深度的文章。

Athenax主要是關於Flink的前瞻性研究的網站。

以上四部分就是本次線上直播曠東林老師講述的主要內容,在提問環節有哪些問題呢?我們一起來看看。

1.請老師講講Flink和最新版Spark的對比?

曠老師:spark streaming和flink是競爭關係,兩個框架都是流處理裡面用的比較多,Flink最大的優勢在於保證高吞吐量情況下的低延遲,以及對複雜的帶有狀態的流的狀態管理能力,還有就是非常靈活視窗的支援。

2.新版spark採用的是timeline db技術嗎?

曠老師:不是的,timeline db在實現上與spark不是一樣的,spark streaming是典型的微批次的流處理框架,其他的大部分都是基於pipeline的執行架構。

這次線上直播,相信大家對Flink流式處理有了進一步的認識,在這裡我們也很感謝曠東林老師的分享。想了解更多更詳細內容的小夥伴們,可以關注服務號:FMI飛馬網,點選選單欄飛馬直播,即可進行學習。

流式處理新秀Flink原理與實踐

來源:https://juejin.im/post/5aab818e6fb9a028bb18bff0

相關文章