日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flink 架构:三层架构体系、运行时组件

發布時間:2024/4/11 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flink 架构:三层架构体系、运行时组件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Flink架構體系
    • API & Libraries層
    • Runtime核心層
    • 物理部署層
  • Flink運行時組件
    • JobManager
    • TaskManager
    • ResourceManger
    • Dispatcher


Flink架構體系

Flink三層體系架構

在Flink整個軟件架構體系中,遵循了分層的架構設計理念,在降低系統耦合度的同時也為上層用戶構建Flink應用提供了豐富且友好的接口。從上圖可以看出Flink的架構體系基本上可以分為以下三層

  • API & Libraries層
  • Runtime核心層
  • 物理部署層

API & Libraries層

作為分布式數據處理框架,Flink同時提供了支持流計算和批計算的接口,同時在此基礎之上抽象出不同的應用類型的組件庫,如基于流處理的CEP(復雜事件處理庫)、SQL&Table庫和基于批處理的FlinkML(機器學習庫)、Gelly(圖處理庫)等。

API層包括構建流計算應用的DataStream API和批計算應用的DataSet API,兩者都提供給用戶豐富的數據處理高級API,例如Map、FlatMap操作等,同時也提供比較低級的Process Function API,用戶可以直接操作狀態和時間等底層數據。


Runtime核心層

該層主要負責對上層不同接口提供基礎服務,也是Flink分布式計算框架的核心實現層,支持分布式Stream作業的執行、JobGraph到ExecutionGraph的映射轉換、任務調度等。

物理部署層

該層主要涉及Flink的部署模式,目前Flink支持多種部署模式:本地、集群(Standalone/YARN)、云(GCE/EC2)、Kubenetes。Flink能夠通過該層能夠支持不同的部署,用戶可以根據需要選擇使用對應的部署模式



Flink運行時組件

Flink系統主要由以下四個組件組成

  • JobManager(任務管理器)
  • TaskManager(作業管理器)
  • ResourceManger(資源管理器)
  • Dispatcher(分發器)



Flink本身是用Java和Scala實現的,因此所有組件都基于JVMJava虛擬機)運行。

Flink任務調度原理

JobManager

Flink遵循Master-Slave(主從)架構設計原則,JobManager為Master節點,TaskManager為Slave節點,并且所有組件之間的通信都借助Akka,包括任務的狀態以及CheckPoint(檢查點)觸發等信息。

  • 作為主進程(Master Process)JobManager控制著單個應用程序的執行,也就是每個應用都由一個不同的JobManager管理。
  • JobManager可以接受需要執行的應用,該應用會包含一個所謂的Job Graph(任務圖),即邏輯Dataflow Graph(數據流圖),以及一個打包了全部所需類、庫以及其他資源的JAR文件。
  • JobManager將JobGraph轉化為名為Execution Graph(執行圖)的物理Dataflow Graph,其中包含了所有可以并發實行的任務。
  • JobManager會從ResourceManager申請執行任務的必要資源——TaskManager slot,一旦它收到了足夠數量的TaskManager slot,它就會將Execution Graph中的任務分發給TaskManager來執行。在執行過程中,JobManager還要負責所有需要集中協調的操作,如創建CheakPoint等。

TaskManager

  • TaskManager是Flink的工作進程(Worker Process),在Flink的搭建過程中要啟動多個TaskManager。每個TaskManager提供一定數量的slot(處理槽),slot的數量限制了TaskManager可執行的任務數
  • TaskManager在啟動之后會向ResourceManager注冊它的slot,當接收到ResourceManager的指示時,TaskManager會向JobManager提供一個或者多個slot。之后JobManager就可以向slot中分配任務來執行。
  • 在執行過程中,運行同一應用的不同任務的TaskManager之間會產生數據交換。

ResourceManger

  • Flink為不同的環境和資源提供者(如YARN、Kubernetes、Stand-alone)提供了不同的ResourceManger。
  • ResourceManger負責管理Flink的處理資源單元——TaskManager Slot。
  • 當JobManager申請TaskManager slot時,ResourceManger會指示一個擁有空閑slot的TaskManager將其slot提供給JobManager。如果ResourceManger的slot數無法滿足JobManager的請求,則ResourceManger可以與資源提供者通信,讓他們提供額外的容器來啟動更多的TaskManager進程。同時,ResourceManger還負責終止空閑進程的TaskManager以釋放計算資源。

Dispatcher

  • Dispatcher在會跨多個作業運行,它提供了一個REST接口來讓我們提交需要執行的應用,一旦某個應用提交執行,則Dispatcher會啟動一個JobManager并將應用轉交給它。

  • REST接口意味著Dispatcher這一集群的HTTP入口可以受到防火墻的保護

  • Dispatcher同時還會啟動一個Web UI,用來展示和監控有關作業執行的信息。

  • Dispatcher并不是必需的組件,某些應用提交執行的方式可能用不到Dispatcher。

任務提交流程

任務提交流程(YARN模式)

總結

以上是生活随笔為你收集整理的Flink 架构:三层架构体系、运行时组件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。