中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flink架構是怎么樣的

發布時間:2021-12-28 12:33:08 來源:億速云 閱讀:174 作者:小新 欄目:云計算

這篇文章將為大家詳細講解有關Flink架構是怎么樣的,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1、基本組件棧

了解Spark的朋友會發現Flink的架構和Spark是非常類似的,在整個軟件架構體系中,同樣遵循著分層的架構設計理念,在降低系統耦合度的同時,也為上層用戶構建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的映射轉換、任務調度等。將DataSteam和DataSet轉成統一的可執行的Task Operator,達到在流式引擎下同時處理批量計算和流式計算的目的。

  物理部署層

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

2、基本架構圖

Flink架構是怎么樣的

Flink基本架構圖

Flink系統主要由兩個組件組成,分別為JobManager和TaskManager,Flink架構也遵循Master-Slave架構設計原則,JobManager為Master節點,TaskManager為Worker(Slave)節點。所有組件之間的通信都是借助于Akka Framework,包括任務的狀態以及Checkpoint觸發等信息。

1.Client客戶端

   客戶端負責將任務提交到集群,與JobManager構建Akka連接,然后將任務提交到JobManager,通過和JobManager之間進行交互獲取任務執行狀態。客戶端提交任務可以采用CLI方式或者通過使用Flink WebUI提交,也可以在應用程序中指定JobManager的RPC網絡端口構建ExecutionEnvironment提交Flink應用。

2.JobManager

   JobManager負責整個Flink集群任務的調度以及資源的管理,從客戶端中獲取提交的應用,然后根據集群中TaskManager上TaskSlot的使用情況,為提交的應用分配相應的TaskSlots資源并命令TaskManager啟動從客戶端中獲取的應用。JobManager相當于整個集群的Master節點,且整個集群中有且僅有一個活躍的JobManager,負責整個集群的任務管理和資源管理。JobManager和TaskManager之間通過Actor System進行通信,獲取任務執行的情況并通過Actor System將應用的任務執行情況發送給客戶端。同時在任務執行過程中,Flink JobManager會觸發Checkpoints操作,每個TaskManager節點收到Checkpoint觸發指令后,完成Checkpoint操作,所有的Checkpoint協調過程都是在Flink JobManager中完成。當任務完成后,Flink會將任務執行的信息反饋給客戶端,并且釋放掉TaskManager中的資源以供下一次提交任務使用。

3.TaskManager

   TaskManager相當于整個集群的Slave節點,負責具體的任務執行和對應任務在每個節點上的資源申請與管理。客戶端通過將編寫好的Flink應用編譯打包,提交到JobManager,然后JobManager會根據已經注冊在JobManager中TaskManager的資源情況,將任務分配給有資源的TaskManager節點,然后啟動并運行任務。TaskManager從JobManager接收需要部署的任務,然后使用Slot資源啟動Task,建立數據接入的網絡連接,接收數據并開始數據處理。同時TaskManager之間的數據交互都是通過數據流的方式進行的。

   可以看出,Flink的任務運行其實是采用多線程的方式,這和MapReduce多JVM進程的方式有很大的區別Flink能夠極大提高CPU使用效率,在多個任務和Task之間通過TaskSlot方式共享系統資源,每個TaskManager中管理多個TaskSlot資源池進行對資源進行有效管理。

關于“Flink架構是怎么樣的”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

印江| 桦南县| 秭归县| 永福县| 开远市| 太白县| 信宜市| 蓝田县| 太康县| 定兴县| 巫溪县| 日照市| 武邑县| 凤冈县| 桦川县| 黄冈市| 三原县| 视频| 丽水市| 稻城县| 霍林郭勒市| 宁都县| 西林县| 子洲县| 油尖旺区| 鄂州市| 南岸区| 岳池县| 南召县| 孝昌县| 江阴市| 张家口市| 浮山县| 特克斯县| 凤庆县| 汤阴县| 兴海县| 资源县| 延边| 开江县| 永年县|