Apache Flink官方文檔中文版--Flink是什麼?

架構

原文鏈接
  Apache Flink是一個用於對無邊界和有邊界數據流進行有狀態計算的框架和分佈式處理引擎。Flink設計爲運行在所有常見的集羣環境中,並且以內存速度和任何規模執行計算。

  在這裏,我們解釋Flink架構的相關重要內容。

處理無邊界和有邊界數據

  任何類型的數據都是作爲事件流產生的。信用卡交易事務,傳感器測量,機器日誌以及網站或移動應用程序上的用戶交互行爲,所有這些數據都生成流。

  數據可以作爲無邊界或有邊界流處理。

  1. 無邊界流定義了開始但沒有定義結束。它們不會在生成時終止提供數據。必須持續地處理無邊界流,即必須在拉取到事件後立即處理它。無法等待所有輸入數據到達後處理,因爲輸入是無邊界的,並且在任何時間點都不會完成。處理無邊界數據通常要求以特定順序(例如事件發生的順序)拉取事件,以便能夠推斷結果完整性。
  2. 有邊界流定義了開始和結束。可以在執行任何計算之前通過拉取到所有數據後處理有界流。處理有界流不需要有序拉取,因爲可以隨時對有界數據集進行排序。有邊界流的處理也稱爲批處理
    Apache Flink官方文檔中文版--Flink是什麼?
      Apache Flink擅長處理無邊界和有邊界數據集。在事件和狀態上的精確控制使得Flink運行時能在無邊界流上運行任意類型的應用程序。有界流由算法和數據結構內部處理,這些算法和數據結構專門針對固定大小的數據集而設計,從而獲得優秀的性能。

    隨處部署應用程序

      Apache Flink是一個分佈式系統,需要計算資源才能執行應用程序。Flink與所有常見的集羣資源管理器(如Hadoop YARN,Apache Mesos和Kubernetes)集成,但也可以作爲獨立集羣運行。
      Flink旨在很好地適用於之前列出的每個資源管理器。這是通過特定於資源管理器的部署模式實現的,這些模式允許Flink以其慣用的方式與每個資源管理器進行交互。
      部署Flink應用程序時,Flink會根據應用程序配置的並行度自動識別所需資源,並從資源管理器請求它們。如果發生故障,Flink會通過請求新的資源來替換髮生故障的容器。提交或控制應用程序的所有通信都通過REST調用進行。這簡化了Flink在許多環境中的集成。

    任意規模運行應用程序

      Flink旨在以任意規模運行有狀態流式應用程序。應用程序可以並行化爲數千個在集羣中分佈和同時執行的任務。因此,應用程序可以利用幾乎無限量的CPU,內存,磁盤和網絡IO。而且,Flink可以輕鬆維護非常大的應用程序的狀態。其異步和增量檢查點算法確保對延遲處理的影響最小,同時保證精確一次的狀態一致性。
     用戶報告了在其生產環境中運行的Flink應用程序的擴展數字令人印象十分深刻,例如:

    • 應用程序每天處理數萬億個事件
    • 應用程序維護數個TB的狀態
    • 應用程序在數千個CPU核上運行

利用內存的性能

  有狀態的Flink應用程序針對本地狀態訪問進行了優化。任務狀態始終駐留在內存中,或者,如果狀態大小超過可用內存,則保存在訪問高效的磁盤上的數據結構中。因此,任務通過訪問本地(通常是內存中)狀態來執行所有計算,從而產生非常低的處理延遲。Flink通過定期和異步檢查點將本地狀態到持久存儲來保證在出現故障時的精確一次的狀態一致性。
Apache Flink官方文檔中文版--Flink是什麼?

應用

原文鏈接
  Apache Flink是一個用於對無邊界和有邊界數據流進行有狀態計算的框架。Flink在不同的抽象級別提供多個API,併爲常見用例提供專用庫。
  在這裏,我們介紹Flink易於使用以及富有表現力的API和庫。
  

爲流應用程序構建塊

  流式計算框架構建和運行的應用程序的類型,由框架控制流,狀態和時間的程度來定義。在下文中,我們描述了流處理應用程序的這些構建塊,並解釋了Flink處理他們的方法。

  顯然,流是流式處理的一個基本方面。然而,流可以有不同的特徵,這些特徵會影響流的處理方式。Flink是一個多功能的處理框架,它可以處理任意類型的流。

  • 有邊界和無邊界的流:
  • 實時和記錄的流:

操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章