ApacheFlink简介
對無界數據集的連續處理
在我們詳細介紹Flink之前,讓我們從更高的層面上回顧處理數據時可能遇到的數據集的類型以及您可以選擇處理的執行模型的類型。這兩個想法經常被混淆,清楚地區分它們是有用的。
首先,兩種類型的數據集
- 無界:連續追加的無限數據集
- 有界:有限的,不變的數據集
傳統上被認為是有限或“批量”數據的許多實際數據集實際上是無界數據集。無論數據是存儲在HDFS上的目錄序列還是像Apache Kafka這樣的基于日志的系統中,都是如此。
無界數據集的例子包括但不限于:
- 最終用戶與移動或Web應用程序進行交互
- 物理傳感器提供測量
- 金融市場
- 機器日志數據
其次,有兩種執行模式
- 流式傳輸:只要數據正在生成,就會連續執行的處理
- 批處理:在有限的時間內執行處理并運行完成,完成后釋放計算資源
盡管不一定是最佳的,但可以用任何一種類型的執行模型來處理任一類型的數據集。例如,盡管在窗口化,狀態管理和無序數據方面存在潛在的問題,批處理執行早已應用于無界數據集。
Flink依賴流式執行模型,這是一個直觀的適合處理無界數據集的模型:流式執行是連續處理連續產生的數據。數據集類型與執行模型類型之間的對齊在準確性和性能方面提供了許多優點。
特點:為什么Flink?
Flink是一個分布式流處理的開源框架:
- 提供準確的結果,即使在無序或遲到數據的情況下也是如此
- 是有狀態和容錯的,可以在保持一次性應用程序狀態的同時無縫地從故障中恢復
- 大規模執行,在數千個節點上運行,具有非常好的吞吐量和延遲特性
此前,我們討論了將數據集的類型(有界還是無界)與執行模型的類型(批量與流媒體)進行對齊。下面列出的許多Flink功能 - 狀態管理,無序數據的處理,靈活的窗口 - 對于在無界數據集上計算精確的結果非常重要,并且由Flink的流式執行模型來實現。
- Flink保證有狀態計算的一次語義?!坝袪顟B的”意味著應用程序可以維護一段時間內已經處理的數據的匯總或匯總,并且Flink的檢查點設置機制在發生故障時確保應用程序狀態的一次語義。
- Flink支持流處理和窗口事件時間語義。事件時間可以輕松計算事件到達順序不正確,事件可能延遲到達的流的精確結果。
- 除了數據驅動的窗口,Flink還支持基于時間,計數或會話的靈活窗口。Windows可以通過靈活的觸發條件進行定制,以支持復雜的流模式。Flink的窗口可以模擬數據創建環境的實際情況。
- Flink的容錯功能是輕量級的,可以讓系統保持高吞吐率,同時提供一次性一致性保證。Flink從零數據丟失的故障恢復,而可靠性和延遲之間的折衷可以忽略不計。
- Flink能夠提供高吞吐量和低延遲(快速處理大量數據)。下面的圖表顯示了Apache Flink和Apache Storm的性能,完成了需要流式數據混洗的分布式項目計數任務。
- Flink的保存點提供了一個狀態版本管理機制,可以更新應用程序或重新處理歷史數據,而且不會丟失狀態,停機時間最短。
- Flink設計用于在數千個節點的大型集群上運行,除了獨立集群模式之外,Flink還提供對YARN和Mesos的支持。
Flink,流模型和有界數據集
如果您已經查看過Flink的文檔,您可能已經注意到用于處理無界數據的DataStream API以及用于處理有界數據的DataSet API。
在本文前面,我們介紹了流式執行模型(“連續執行的處理,一次一個事件”),直觀地適用于無界數據集。那么有界數據集如何與流處理范例相關?
在Flink的情況下,這種關系是相當自然的。一個有界數據集可以簡單地看作一個無界特例,所以我們可以將上面所有的流式概念應用到有限數據上。
這正是Flink的DataSet API的行為。有界數據集在Flink內部作為“有限流”進行處理,Flink如何管理有界數據集和無界數據集只有一些細微差異。
所以可以使用Flink來處理有界數據和無界數據,這兩個API在相同的分布式流式執行引擎上運行 - 一個簡單而強大的體系結構。
“什么”:從下往上閃爍
部署模式
Flink可以運行在云環境中,也可以在內部環境中運行,也可以運行在獨立的集群上,也可以運行在YARN或Mesos管理的集群上。
運行
Flink的核心是分布式流式數據流引擎,意味著數據一次處理而不是一系列批處理,這是一個重要的區別,因為這是Flink的許多彈性和性能特征.
轉載于:https://www.cnblogs.com/wzlbigdata/p/8409601.html
總結
以上是生活随笔為你收集整理的ApacheFlink简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 后台返回的数据换行显示
- 下一篇: C++深入理解虚函数