官术网_书友最值得收藏!

1.3.2 Flink運行時架構

Flink運行時是Flink的核心計算結構,這是一個分布式系統,它接受流數據處理程序,并在一臺或多臺機器上以容錯的方式執行這些數據流程序。這個運行時可以作為YARN的應用程序在集群中運行,也可以在Mesos集群中運行,或者在一臺機器中運行(通常用于調試Flink應用程序)。

Flink運行時層的整個架構采用了標準Master-Slave的結構,即總是由一個Flink Master(JobManager)和一個或多個Flink Slave(TaskManager)組成。Flink運行時層的主要架構如圖1-8所示。

圖1-8 Apache Flink運行時層的主要架構

圖1-8展示了一個Flink集群的基本結構。在部署Flink時,每個組件通常有多個可用選項,見表1-2。

表1-2 Flink程序部署選項

Flink運行時由兩種類型的進程組成:一個JobManager和一個或多個TaskManager。客戶端不是運行時和程序執行的一部分,而是用于準備數據流并將數據流發送到JobManager。在此之后,客戶端可以斷開連接(分離模式),或者保持連接以接收進度報告(附加模式)。客戶端可以作為觸發執行的Java/Scala程序的一部分運行,也可以在命令行進程(./bin/flink run)中運行。

對Flink運行時架構更為詳細的描述如圖1-9所示。

JobManager和TaskManager可以通過多種方式啟動,例如,可以直接在機器上作為獨立集群啟動,也可以在容器中啟動,或者由YARN或Mesos等資源框架管理。TaskManager連接到JobManager,宣布自己可用,并被分配工作。

圖1-9 Apache Flink運行時架構詳細描述

1)JobManager

JobManager有許多與協調Flink應用程序的分布式執行相關的職責:它決定什么時候安排下一個任務(或一組任務),對完成的任務或執行失敗做出反應,協調檢查點,協調故障恢復等。始終至少要有一個JobManager。高可用性集群可能有多個JobManager,其中一個始終是leader,其他的都是standby。

JobManager是Flink集群的主進程,它由3個不同的組件組成:

(1)ResourceManager。ResourceManager負責Flink集群中的資源分配和釋放。它管理任務槽(Task Slots),任務槽是Flink集群中的資源調度單元。Flink為不同的環境和資源提供者(如YARN、Mesos、Kubernetes和獨立部署)實現了多個ResourceManager。在Standalone獨立集群中,ResourceManager只能分發可用的TaskManager的任務槽,不能自己啟動新的TaskManager。

(2)Dispatcher。Dispatcher提供了一個REST接口來提交Flink應用程序以供執行,并為每個提交的作業(通過WebUI或命令行)啟動一個新的JobMaster。它還運行Flink WebUI來提供關于作業執行的信息。

(3)JobMaster。JobMaster負責管理單個JobGraph的執行。多個作業可以在一個Flink集群中同時運行,每個作業都有自己的JobMaster。

2TaskManager

TaskManagers是一個Flink集群的工作(worker)進程,負責執行數據流的任務,并緩沖和交換數據流。關于TaskManager,有以下幾點要求:

(1)必須始終至少有一個TaskManager。

(2)TaskManager中最小的資源調度單位是任務槽。

(3)TaskManager的任務槽數量表示并發處理的任務數。注意,多個操作符可以在一個任務槽中執行。

(4)TaskManager啟動后,TaskManager將其槽位注冊到ResourceManager。當得到ResourceManager的指示時,TaskManager會將一個或多個它的槽位提供給JobMaster。

(5)JobMaster可以將任務分配給這些槽以執行它們。

(6)在執行過程中,一個TaskManager與運行同一應用程序任務的其他TaskManager交換數據。

主站蜘蛛池模板: 双牌县| 平江县| 华安县| 准格尔旗| 沾益县| 东丽区| 通河县| 平和县| 乐陵市| 屏山县| 浦东新区| 喜德县| 安吉县| 邹城市| 克什克腾旗| 资源县| 五大连池市| 长岛县| 马鞍山市| 马鞍山市| 四平市| 德州市| 梅河口市| 肇东市| 游戏| 双辽市| 简阳市| 大理市| 新郑市| 鹿泉市| 星座| 三穗县| 赣榆县| 浮梁县| 泊头市| 甘孜县| 长治市| 延长县| 阿拉善左旗| 垦利县| 昭苏县|