第一章 初識flink - 大數(shù)據(jù)處理引擎 Apache Flink簡介

flink發(fā)展歷史

在 2008 年,F(xiàn)link 的前身已經(jīng)是柏林理工大學(xué)一個研究性項目, 在 2014 被 Apache 孵化器所接受,然后迅速地成為了 ASF(Apache Software Foundation)的頂級項目之一

Flink 是一個針對流數(shù)據(jù)和批數(shù)據(jù)的分布式處理引擎。它主要是由 Java 代碼實現(xiàn)。目前主要還是依靠開源社區(qū)的貢獻(xiàn)而發(fā)展。對 Flink 而言,其所要處理的主要場景就是流數(shù)據(jù),批數(shù)據(jù)只是流數(shù)據(jù)的一個極限特例而已。再換句話說,F(xiàn)link 會把所有任務(wù)當(dāng)成流來處理,這也是其最大的特點。

flink架構(gòu)介紹

從部署上講,F(xiàn)link支持三種模式 :

  • local模式
  • 集群模式(standalone集群或者Yarn集群)
  • 云端部署

兩種應(yīng)用程序接口:

  • DataStream API (流處理)
  • DataSet API (批處理)

當(dāng)程序在編譯時,生成JobGraph。編譯完成后,根據(jù)API的不同,優(yōu)化器(批或流)會生成不同的執(zhí)行計劃。根據(jù)部署方式的不同,優(yōu)化后的JobGraph被提交給了executors去執(zhí)行。

image.png

flink作業(yè)調(diào)度模型

如圖所示,Client、JobManager 和 TaskManager。
Client 用來提交任務(wù)給 JobManager,JobManager 分發(fā)任務(wù)給 TaskManager 去執(zhí)行,然后 TaskManager 會心跳的匯報任務(wù)狀態(tài)。

image.png

flink框架特性

  • 高性能
    支持高吞吐、低延遲、高性能的流處理。

  • 有狀態(tài)計算的Exactly-once語義
    有狀態(tài)意味著程序可以保持已經(jīng)處理過的數(shù)據(jù),同時Flink的checkpoint機制可以確保在發(fā)生故障時應(yīng)用程序狀態(tài)的一致性語義。

  • 高度靈活的窗口
    Flink支持?jǐn)?shù)據(jù)驅(qū)動的窗口,這意味著我們可以基于時間(event time或processing time)、count和session來構(gòu)建窗口。

  • 容錯機制
    它使得系統(tǒng)既能保持高的吞吐率又能保證exactly-once的一致性,使Flink能從零數(shù)據(jù)丟失的故障中恢復(fù),通過分布式狀態(tài)快照(Snapshot)實現(xiàn)

  • 內(nèi)存管理
    Flink在JVM內(nèi)部進(jìn)行內(nèi)存的自我管理,使得其獨立于java本身的垃圾回收機制。當(dāng)處理hash、index、caching和sorting時,F(xiàn)link自我的內(nèi)存管理方式使得這些操作很高效。但是,目前自我的內(nèi)存管理只在批處理中實現(xiàn),流處理程序并未使用。

  • 優(yōu)化器
    避免特定情況下Shuffle、排序等昂貴操作,中間結(jié)果進(jìn)行緩存,確保避免過度的磁盤IO。

  • 批流統(tǒng)一
    運行時同時支持流計算和批計算兩套API。
    Flink中的流處理優(yōu)先原則,認(rèn)為批處理是流處理的一種特殊情況。

  • Libraries庫
    Flink提供了用于機器學(xué)習(xí)、圖計算、Table API等庫,同時Flink也支持復(fù)雜的CEP處理和警告。

  • 事件時間
    Flink支持Event Time語義的處理,這有助于處理流計算中的亂序問題,有些數(shù)據(jù)也許會遲到,我們可以通過基于event time、count、session的窗口來處于這樣的場景。

  • savepoints 狀態(tài)版本控制
    可以將應(yīng)用的運行狀態(tài)保存下來,使得在升級應(yīng)用或處理歷史數(shù)據(jù)時,而不會丟失狀態(tài)和確保宕機時間最小

  • 反壓
    支持具有反壓(Backpressure)功能的持續(xù)流模型

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容