Apache Flink介紹:
Apache Flink 是一個框架和分散式處理引擎,用於在無邊界和有邊界資料流上進行有狀態的計算。 Flink 能在所有常見叢集環境中運行,並能以記憶體速度和任意規模進行運算。
(推薦教學:apache)
接下來,我們來介紹一下 Flink 架構中的重要面向。
處理無界和有界資料
任何類型的資料都可以形成一種事件流。信用卡交易、感測器測量、機器日誌、網站或行動應用程式上的使用者互動記錄,所有這些資料都形成一種流。
資料可以被當作 無界 或 有界 流來處理。
1.無界流 有定義流的開始,但沒有定義流的結束。它們會無止盡地產生數據。無界流的資料必須持續處理,也就是資料被攝取後需要立刻處理。我們不能等到所有資料都到達再處理,因為輸入是無限的,在任何時候輸入都不會完成。處理無界資料通常要求以特定順序攝取事件,例如事件發生的順序,以便能夠推斷結果的完整性。
2.有界流 有定義流的開始,也有定義流的結束。有界流可以在攝取所有資料後再進行計算。有界流所有資料可以排序,所以並不需要有序攝取。有界流處理通常被稱為批次處理。
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 透過定期和非同步地對本地狀態進行持久化儲存來確保故障場景下精確一次的狀態一致性。
以上是介紹一下什麼是Apache Flink的詳細內容。更多資訊請關注PHP中文網其他相關文章!