Apache Flink系列-①什么是Apache Flink?
Apache Flink是一個框架和分布式處理引擎,用于在無界和有界資料流上進行有狀態計算,Flink被設計為在所有常見的集群環境中運行,以記憶體速度和任何規模執行計算,
在這里,我們解釋Flink’s架構重要的各個方面,
處理無界和有界資料
任何型別的資料都是以事件流的形式產生的,信用卡交易、傳感器測量、機器日志或網站或移動應用程式上的用戶互動,所有這些資料都以流的形式生成,
資料可以作為無界流或有界流進行處理,
無界流有起點,但沒有定義的終點,它們不會在生成資料時終止并提供資料,無界流必須持續處理,即事件被攝入后必須立即處理,不可能等待所有輸入資料到達,因為輸入是無限的,在任何時間點都不會完成,處理無界資料通常需要按照特定的順序接收事件,例如事件發生的順序,以便能夠對結果的完整性進行推理,
有界流有一個定義的起點和終點,在執行任何計算之前,可以通過攝取所有資料來處理有界流,處理有界流不需要有序攝取,因為有界資料集總是可以排序的,有界流的處理也稱為批處理,
Apache Flink擅長處理無界和有界資料集,對時間和狀態的精確控制使Flink的運行時能夠在無限流上運行任何型別的應用程式,有界流由專門為固定大小的資料集設計的演算法和資料結構進行內部處理,從而產生優異的性能,
通過探索建立在Flink之上的用例來說服自己,
在任何地方部署應用程式
Apache Flink是一個分布式系統,需要計算資源才能執行應用程式,Flink與所有常見的集群資源管理器(如Hadoop Thread、Apache Mesos和Kubernetes)集成,但也可以設定為作為獨立集群運行,
Flink的設計目的是讓之前列出的每一位資源經理都能很好地作業,這是通過特定于資源管理器的部署模式實作的,這些模式允許Flink以其慣用的方式與每個資源管理器互動,
部署Flink應用程式時,Flink會根據應用程式配置的并行性自動識別所需的資源,并從資源管理器請求這些資源,如果失敗,Flink會通過請求新資源來替換失敗的容器,提交或控制應用程式的所有通信都是通過REST呼叫進行的,這簡化了Flink在許多環境中的集成,
以任意規模運行應用程式
Flink旨在以任何規模運行有狀態的流媒體應用程式,應用程式被并行化為數千個任務,這些任務在集群中分布并并發執行,因此,應用程式可以利用幾乎無限量的CPU、主記憶體、磁盤和網路IO,此外,Flink很容易維護非常大的應用程式狀態,它的異步和增量檢查點演算法確保了對處理延遲的最小影響,同時保證了一次狀態的一致性,
用戶報告稱,在他們的生產環境中運行的Flink應用程式的可擴展性數量令人印象深刻,例如:
- l 每天處理數萬億事件的應用程式,
- l 維護多TB狀態的應用程式,以及
- l 運行在數千個內核上的應用程式
利用記憶體中的性能
有狀態的Flink應用程式針對本地狀態訪問進行了優化,任務狀態始終保持在記憶體中,如果狀態大小超過可用記憶體,則保持在訪問效率高的磁盤資料結構中,因此,任務通過訪問本地(通常在記憶體中)狀態來執行所有計算,從而產生非常低的處理延遲,Flink通過定期、異步地將本地狀態檢查點設定為持久性存盤,在出現故障時確保一次狀態的一致性,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/458378.html
標籤:其他
上一篇:python迭代器和生成器
