您好,登錄后才能下訂單哦!
無限數據集的連續處理
在我們詳細了解Flink之前,讓我們在更高層級審查處理數據時可能遇到的數據集的類型以及您可以選擇處理的執行模型的類型。這兩個想法經常是混合的,它們很清楚地分開它們。
首先,兩種類型數據集
無限:連續附加的無限數據集
有限的:有限的,不變的數據集
傳統上被認為是有界或“批量”數據的許多真實字數據集實際上是×××數據集。無論數據存儲在HDFS或基于日志的系統(如Apache Kafka)中的一系列目錄中,都是如此。
×××數據集的示例包括但不限于:
終端用戶與移動或Web應用程序進行交互
物理傳感器提供測量
金融市場
機器日志數據
其次,兩種類型的執行模式
流式處理:只要數據生成,生成的數據就會被連續的處理
批處理:在有限的時間內執行并運行到完整的處理,完成時釋放計算資源
使用任一類型的執行模型來處理任一類型的數據集都是可能的,但不一定是最優的。例如,盡管窗口化,狀態管理和亂序數據存在潛在問題,批處理執行長期以來一直應用于×××數據集。
Flink依賴于流式執行模型,這是一種直觀適用于處理×××數據集的流程:流執行是對連續生成的數據進行連續處理。數據集的類型和執行模型的類型之間的對齊在精度和性能方面提供了許多優點。
特點:為什么選擇Flink?
Flink是分布式流處理的開源框架:
<1>提供準確的結果,即使在無序或數據遲到的情況下也是如此;
<2>具有狀態和容錯能力,可以在保證一次性應用狀態的同時無故障地從故障中恢復;
<3>大規模執行,在數千個節點上運行,具有非常好的吞吐量和延遲特性;
之前,我們討論了將數據集(有界對×××)的類型與執行模型的類型(批次與流式)的對齊。 Flink的許多功能如下所示 - 狀態管理,無序數據處理,靈活的窗口 - 對于在×××數據集上計算準確的結果至關重要,并由Flink的流式執行模式啟用。
<4>Flink保證用于狀態計算的一次性語義。 “有狀態”意味著應用程序可以維護一段時間內已處理的數據的聚合或匯總,Flink的檢查點機制可以確保在發生故障時應用程序狀態的一次語義。
完全一次狀態
<5>Flink支持流處理和窗口與事件時間語義。事件時間可以很容易地計算準確的結果,這些流量在事件到達時間不一致以及事件延遲到達的地方。
無序流
<6>除了數據驅動的窗口之外,Flink還支持基于時間,計數或會話的靈活窗口。 Windows可以通過靈活的觸發條件進行定制,以支持復雜的流式傳輸模式。 Flink的窗口使得可以對創建數據的環境的現實進行建模。
視窗
<7>Flink的容錯是輕量級的,允許系統保持高吞吐率,同時提供一致的一致性保證。 Flink從零數據丟失的故障中恢復,而可靠性和延遲之間的折衷可以忽略不計。
<8>Flink能夠實現高吞吐量和低延遲(快速處理大量數據)。下面的圖表顯示了Apache Flink和Apache Storm完成一個需要流數據洗牌的分布式項目計數任務的性能。
<9>Flink的保存點提供了一個狀態版本控制機制,使得可以更新應用程序或重新處理歷史數據,而不會丟失狀態和最少的停機時間。
<10>Flink旨在在具有數千個節點的大型集群上運行,除了獨立的集群模式,Flink還為YARN和Mesos提供支持。
Flink,流模型和有界數據集
如果您已經查看了Flink的文檔,您可能已經注意到使用×××數據的DataStream API以及處理有限數據的DataSet API。
在這個寫作的早些時候,我們引入了流式執行模型(“連續執行的處理,一次事件”),直觀地適用于×××數據集。那么有界數據集如何與流處理范例有關?
在Flink的情況下,這種關系是很自然的。有界數據集可以簡單地被視為×××數據集的特殊情況,因此可以將上面列出的所有相同的流概念應用到有限數據。
Flink的DataSet API的行為正是如此。有限數據集在Flink內被處理為“有限流”,在Flink如何管理有界數據集和×××數據集之間只有一些細微差別。
因此,有可能使用Flink來處理有界數據和×××數據,兩個API都運行在相同的分布式流執行引擎上 - 一個簡單而強大的架構。
The “What”:(Flink模塊層次架構圖)
<1>部署模式
Flink可以在云中或在內部,獨立的群集或由YARN或Mesos管理的群集上運行。
<2>運行
Flink的核心是分布式流數據流引擎,這意味著數據是一次處理事件而不是一系列批次,這是一個重要的區別,因為這樣可以幫助許多Flink的彈性和性能功能。
<3>APIs
Flink的DataStream API適用于實現數據流轉換(例如,過濾,更新狀態,定義窗口,聚合)的程序。
DataSet API適用于實現數據集轉換(例如過濾,映射,加入,分組)的程序。
Table API是用于關系流和批處理的類似SQL的表達式語言,可以輕松嵌入到Flink的DataSet和DataStream API(Java和Scala)中。
流式SQL允許在流和批表上執行SQL查詢。語法基于Apache Calcite。
圖書館
Flink還包括用于復雜事件處理,機器學習,圖形處理和Apache Storm兼容性的專用庫。
Flink等框架
在最基本的層面上,Flink程序由以下組成:
數據源(Source):Flink處理的傳入數據
轉換(Transformations):Flink修改傳入數據時的處理步驟
數據接收器(Sink):Flink在處理后發送數據
一個發達的生態系統對于數據進出Flink程序的有效移動是必要的,Flink支持廣泛的連接器到數據源和匯的第三方系統。
如果您有興趣了解更多信息,我們已收集有關Flink生態系統的信息。
關鍵外包和后續步驟
總而言之,Apache Flink是一個開源流處理框架,可以消除通常與開源流引擎相關聯的“性能與可靠性”折衷,并在兩個類別中始終保持一致。 接下來介紹,我們建議您嘗試我們的快速入門,下載最新的穩定版本的Flink,或查看文檔。
我們鼓勵您加入Flink用戶郵件列表,并與社區分享您的問題。 我們在這里幫助您充分利用Flink。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。