主頁 >  其他 > Flink(五)運行時調度程序圖解

Flink(五)運行時調度程序圖解

2021-10-31 07:47:43 其他

版本:Flink 1.13.2 - 2021-08-02

Flink 運行時集群的基本結構及調度程序圖解

Flink 運行時集群的基本結構

針對不同集群環境(YARN,Mesos,Kubernetes,standalone等),結構會有略微不同,但是基本結構中包含了運行時的調度原理,

在這里插入圖片描述
Flink Runtime 集群的基本結構,采用了標準 master-slave 的結構,中間 AM 中的部分表示 master,它負責管理整個集群中的資源和作業;而右側的兩個 TaskManager 則是 slave,負責提供具體的資源并實際執行作業任務,

途中 白色實線雙線箭頭表示資料互動,虛線表述調度程序,

AppMaster

Dispatcher
負責接收用戶提供的作業,并且負責為這個新提交的作業拉起一個新的 JobManager 組件
ResourceManager
負責資源的管理,在整個 Flink 集群中只有一個 ResourceManager
JobManager
負責管理作業的執行,在一個 Flink 集群中可能有多個作業同時執行,每個作業都有自己的JobManager 組件

TaskManager

真正干活的組件,雖然他叫任務管理器,但是它并不管理任務,它是任務執行者,給他起名管理器大概是應為它并不是執行任務的最小單元,它里面還管理著插槽(Slot),Slot 是 Flink 集群中最小的資源單元,

調度大致流程

基于上述結構,當用戶提交作業的時候,提交腳本會首先啟動一個 Client 行程負責作業的編譯與提交,它首先將用戶撰寫的代碼編譯為一個 JobGraph,在這個程序,它還會進行一些檢查或優化等作業,例如判斷哪些 Operator 可以 Chain 到同一個 Task 中,然后,Client 將產生的 JobGraph 提交到集群中執行,

此時有兩種情況,一種是類似于 Standalone 這種 Session 模式,AM 會預先啟動,此時 Client直接與 Dispatcher 建立連接并提交作業即可,另一種是 Per-Job 模式,AM 不會預先啟動,此時 Client 將首先向資源管理系統 (如 Yarn、K8S)申請資源來啟動AM,然后再向 AM 中的Dispatcher 提交作業,

資源管理與作業調度

在 Flink 中,資源是通過 Slot 來表示的,每個 Slot 可以用來執行不同的 Task,調度的主要目的就是為了給 Task 找到匹配的 Slot,

邏輯上來說,每個 Slot 都應對外描述能提供多少資源,而每個 Task 也應說明它需要申請到多少資源,但是實際上在 1.9之前,Flink 是不支持細粒度的資源描述的,而是統一的認為每個 Slot 提供的資源和Task 需要的資源都是相同的,從 1.9 開始,Flink 開始增加對細粒度的資源匹配的支持的實作,但這部分功能目前仍在完善中,

Flink 中資源管理的實作

圖中:
ResourceManager 中,有一個子組件叫做 SlotManager,它維護了當前集群中所有 TaskExecutor 上的 Slot 的資訊與狀態,如該 Slot 在哪個TaskManager 中,該 Slot 當前是否空閑等,

JobManger 中,有一個 SlotPool 組件,它快取了所有的 Slot 資源請求,

  1. JobManger 為特定 Task 申請 Slot 資源,并且會將發起的請求快取到 SlotPool 中

    此時會根據當前是 Per-job 還是 Session 模式,ResourceManager 可能會去申請資源來啟動新的 TaskExecutor,(即后面的 2,3,4 步驟)

  2. 向資源提供者(如K8s等)申請資源

  3. 資源提供者已分配資源

  4. 根據資源提供者分配的資源,啟動 TM

  5. 如果有 2,3,4 步驟(即啟動新的 TM)則在啟動 TM 后會向 RM 注冊 Slot 資訊,RM 根據現有的 Slot 資訊向 TM 發起 Slot 請求

  6. TM 向 JM 提供 Slot 資源,并且在 JM 獲取到資源后會取消 SlotPool 中相應的 Slot 請求

  7. 在 Task 結束后,無論是正常結束還是例外結束,都會通知 JobManager 相應的結束狀態,然后在 TaskManager 端將 Slot 標記為已占用但未執行任務的狀態,即:先將相應的 Slot 快取到 SlotPool 中,但不會立即釋放,通過延時釋放,Failover 的 Task 可以盡快調度回原來的 TaskManager,從而加快 Failover 的速度,

  8. 過一段時間后,如果延時釋放的 Slot 沒有在被使用,那么 TM 就會釋放相應的 Slot 資源并向 RM 報告,跟新 Slot 的狀態

  9. 如果是通過資源提供者創建的新的 TM 那么還需要報告資源提供者,釋放相應的 TM 資源,

另外:除了正常的通信邏輯外,在 ResourceManager 和 TaskManager 之間還存在定時的心跳訊息來同步 Slot 的狀態,

當 JobManger 來為特定 Task 申請資源的時候,根據當前是 Per-job 還是 Session 模式,ResourceManager 可能
會去申請資源來啟動新的 TaskExecutor,

Task調度

在 Slot 管理基礎上,Flink 可以將 Task 調度到相應的 Slot 當中,

虛線框表示 Task ,里面的圓形表示子任務,圓形里面的文字表示一些操作

從圖中可以看出,有的任務會被合并到一個大任務中,即 Source 和 map 兩個可以是獨立的任務,

圖中上面的是一個單一并行度的數量處理流程,每個 Task 都只需要一個 Slot 資源;下面的是一個帶有并行度的資料處理流圖,其中 【Source 、map】 和 【keyBy/window/apply】 兩個任務的并行度都是 2 ,最后輸出 sink 任務的并行度是 1,

從這里可以看出,slot 其實就是一個執行緒,把一些任務合并成一個大的任務放到統一個 Slot 中是很有優勢的:可以降低執行緒切換帶來的消耗,提高整體的吞吐量,至于什么樣的 Task 會被合并到一個 Slot 中可以參考:chaining docs,

每個 TaskManager 都是一個 JVM 行程,它通過 Slot 數量來控制 TaskManager 能夠接受多少任務,一個 Slot 并不是只能執行一個任務,只要重疊的任務,都可以在一個 Slot 中,在啟動時,定義了 TM 的記憶體大小,這些記憶體會分到每一個 Slot 上,稱之為委托記憶體,Slot 只在委托記憶體上進行相互的隔離,在 CPU 層面并不做隔離,所以,一般的建議都是:TM 的 Slot 數量和機器的 CPU 數量一致,這樣可以降低計算資源的競爭,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342140.html

標籤:其他

上一篇:zookeeper啟動失敗問題解決

下一篇:高可用 hadoop HA 搭建教程

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more