介紹一下什麼是Apache Flink

2020-10-20 21:01:29

Apache Flink介紹:

Apache Flink 是一個框架和分散式處理引擎,用於在無邊界和有邊界資料流上進行有狀態的計算。Flink 能在所有常見叢集環境中執行,並能以記憶體速度和任意規模進行計算。

(推薦教學:)

接下來,我們來介紹一下 Flink 架構中的重要方面。

處理無界和有界資料

任何型別的資料都可以形成一種事件流。信用卡交易、感測器測量、機器紀錄檔、網站或移動應用程式上的使用者互動記錄,所有這些資料都形成一種流。

資料可以被作為 無界 或者 有界 流來處理。

1.無界流 有定義流的開始,但沒有定義流的結束。它們會無休止地產生資料。無界流的資料必須持續處理,即資料被攝取後需要立刻處理。我們不能等到所有資料都到達再處理,因為輸入是無限的,在任何時候輸入都不會完成。處理無界資料通常要求以特定順序攝取事件,例如事件發生的順序,以便能夠推斷結果的完整性。

2.有界流 有定義流的開始,也有定義流的結束。有界流可以在攝取所有資料後再進行計算。有界流所有資料可以被排序,所以並不需要有序攝取。有界流處理通常被稱為批次處理。

c5375108980acbf78c025f4192272fe.png

Apache Flink 擅長處理無界和有界資料集 精確的時間控制和狀態化使得 Flink 的執行時(runtime)能夠執行任何處理無界流的應用。有界流則由一些專為固定大小資料集特殊設計的演演算法和資料結構進行內部處理,產生了出色的效能。

通過探索 Flink 之上構建的 用例 來加深理解。

部署應用到任意地方

Apache Flink 是一個分散式系統,它需要計算資源來執行應用程式。Flink 整合了所有常見的叢集資源管理器,例如 Hadoop YARN、 Apache Mesos 和 Kubernetes,但同時也可以作為獨立叢集執行。

Flink 被設計為能夠很好地工作在上述每個資源管理器中,這是通過資源管理器特定(resource-manager-specific)的部署模式實現的。Flink 可以採用與當前資源管理器相適應的方式進行互動。

部署 Flink 應用程式時,Flink 會根據應用程式設定的並行性自動標識所需的資源,並從資源管理器請求這些資源。在發生故障的情況下,Flink 通過請求新資源來替換髮生故障的容器。提交或控制應用程式的所有通訊都是通過 REST 呼叫進行的,這可以簡化 Flink 與各種環境中的整合。

執行任意規模應用

Flink 旨在任意規模上執行有狀態流式應用。因此,應用程式被並行化為可能數千個任務,這些任務分佈在叢集中並行執行。所以應用程式能夠充分利用無盡的 CPU、記憶體、磁碟和網路 IO。而且 Flink 很容易維護非常大的應用程式狀態。其非同步和增量的檢查點演演算法對處理延遲產生最小的影響,同時保證精確一次狀態的一致性。

Flink 使用者報告了其生產環境中一些令人印象深刻的擴充套件性數位

處理每天處理數萬億的事件,應用維護幾TB大小的狀態, 和應用在數千個核心上執行。

利用記憶體效能

有狀態的 Flink 程式針對本地狀態存取進行了優化。任務的狀態始終保留在記憶體中,如果狀態大小超過可用記憶體,則會儲存在能高效存取的磁碟資料結構中。任務通過存取本地(通常在記憶體中)狀態來進行所有的計算,從而產生非常低的處理延遲。Flink 通過定期和非同步地對本地狀態進行持久化儲存來保證故障場景下精確一次的狀態一致性。

ff72481c9a68f46df6a2058dc916c48.png

以上就是介紹一下什麼是Apache Flink的詳細內容,更多請關注TW511.COM其它相關文章!