Flink 基礎知識大補

Flink 概念(流處理和批處理)

  • 一個面向數據流處理和批量數據處理的可分佈式的開源計算框架,它基於同一個Flink流式執行模型。能夠支持流處理和批處理兩種應用類型。
  • Flink在實現流處理和批處理時,與傳統的一些方案完全不同,它從另一個視角看待流處理和批處理,將二者統一起來:Flink是完全支持流處理,也就是說作為流處理看待時輸入數據流是無界的;批處理被作為一種特殊的流處理,只是它的輸入數據流被定義為有界的。


Flink相關術語

  • 即使數據源是無序的或者晚到達的數據,也能保持結果準確性
  • 有狀態並且容錯,可以無縫的從失敗中恢復,並可以保持exactly-once
  • 大規模分佈式
  • Flink可以確保僅一次語義狀態計算;Flink有狀態意味著,程序可以保持已經處理過的數據;
  • Flink支持流處理和窗口事件時間語義,Flink支持靈活的基於時間窗口,計數,或會話數據驅動的窗戶;
  • Flink容錯是輕量級和在同一時間允許系統維持高吞吐率和提供僅一次的一致性保證,Flink從失敗中恢復,零數據丟失;
  • Flink能夠高吞吐量和低延遲;
  • Flink保存點提供版本控制機制,從而能夠更新應用程序或再加工歷史數據沒有丟失並在最小的停機時間。


Flink 開發環境搭建和應用的配置、部署及運行

待補充,如需要,請留言

構建第一個 Flink 應用

待補充,如需要,請留言

Flink 應用及成熟案例

  • 複雜特性,但也有專門的操作符來有效地處理有界流。
  • 實時流和記錄流:所有數據都作為流生成。有兩種處理數據的方法。當流生成或將其持久化到存儲系統(例如文件系統或對象存儲)時實時處理,並在稍後處理。Flink應用程序可以處理記錄或實時流。
  • 狀態

每個重要的流應用程序都是有狀態的,即只有對單個事件應用轉換的應用程序才需要狀態。運行基本業務邏輯的任何應用程序都需要記住事件或中間結果,以便在以後的時間點訪問它們,例如在收到下一個事件時或在特定持續時間之後。

應用程序狀態是Apache Flink的一等公民。可以通過查看Flink在狀態處理環境中提供的所有功能來查看。

  • 多狀態基元(Multiple State Primitives):Flink為不同的數據結構提供狀態基元,例如原子值,列表或映射。開發人員可以根據函數的訪問模式選擇最有效的狀態原語。
  • 可插拔狀態後端(Pluggable State Backends):應用程序狀態由可插拔狀態後端管理和檢查點。Flink具有不同的狀態後端,可以在內存或RocksDB中存儲狀態,RocksDB是一種高效的嵌入式磁盤數據存儲。也可以插入自定義狀態後端。
  • 完全一次的狀態一致性(Exactly-once state consistency):Flink的檢查點和恢復算法可確保在發生故障時應用程序狀態的一致性。因此,故障是透明處理的,不會影響應用程序的正確性。
  • 非常大的狀態(Very Large State):由於其異步和增量檢查點算法,Flink能夠維持幾TB的應用程序狀態。
  • 可擴展的應用程序(Scalable Applications):Flink通過將狀態重新分配給更多或更少的工作人員來支持有狀態應用程序的擴展。
  • 時間

時間是流媒體應用的另一個重要組成部分 大多數事件流都具有固有的時間語義,因為每個事件都是在特定時間點生成的。此外,許多常見的流計算基於時間,例如窗口聚合,會話化,模式檢測和基於時間的連接。流處理的一個重要方面是應用程序如何測量時間,即事件時間和處理時間的差異。

  • 成熟案例
  • 美團點評實時數倉平臺實踐
  • 攜程實時智能檢測平臺實踐
  • 大規模準實時數據分析平臺
  • 趣頭條實時平臺建設實踐


spark、storm、flink吞吐量比較

  • spark是mirco-batch級別的計算,各種優化做的也很好,它的throughputs是最大的。但是需要提一下,有狀態計算需要通過額外的rdd來維護狀態,導致開銷較大,對吞吐量影響也較大。
  • storm的容錯機制需要對每條data進行ack,因此容錯開銷對throughputs影響巨大,throughputs下降甚至可以達到70%。storm trident是基於micro-batch實現的,throughput中等。
  • flink的容錯機制較為輕量,對throughputs影響較小,而且擁有圖和調度上的一些優化機制,使得flink可以達到很高 throughputs。

throughputs 含義:吞吐量

Flink 基礎知識大補



分享到:


相關文章: