国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念

這篇具有很好參考價(jià)值的文章主要介紹了(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【背景】

之前對(duì)flink的task slot的理解太淺了,重新捋一下相關(guān)知識(shí)點(diǎn)

為什么需要Task Slot

我們知道,flink中每個(gè)TaskManager都是一個(gè)?JVM?進(jìn)程,可以在單獨(dú)的線程中執(zhí)行一個(gè)或多個(gè)?subtask(線程)。但是TaskManager?的計(jì)算資源是有限的,并不是所有任務(wù)都可以放在同一個(gè)?TaskManager?上并行執(zhí)行。并行的任務(wù)越多,每個(gè)線程的資源就會(huì)越少。為了控制并發(fā)量,即限制一個(gè)?TaskManager?能同時(shí)接受多少個(gè)?task,我們需要在?TaskManager?上對(duì)每個(gè)任務(wù)運(yùn)行所占用的資源做出明確的劃分,這就是所謂的task slot(任務(wù)槽)。

Task Slot是什么

每個(gè)(task?slot)其實(shí)表示了?TaskManager?擁有計(jì)算資源的一個(gè)固定大小的子集。?這些資源就是用來(lái)獨(dú)立執(zhí)行一個(gè)subtask的。因此,ResourceManager在做資源分配管理的時(shí)候,最小的單位就是slot。

具體來(lái)說(shuō),有 n?個(gè)?slot?的?TaskManager,會(huì)將其托管內(nèi)存?1/n?用于每個(gè)?slot。分配資源意味著?subtask?不會(huì)與其他作業(yè)的?subtask?競(jìng)爭(zhēng)內(nèi)存,內(nèi)存是隔離的。

注意此處沒(méi)有?CPU?隔離,因此不同slot中的subtask會(huì)共享CPU。

通過(guò)調(diào)整?task?slot?的數(shù)量,用戶(hù)可以定義?subtask?如何互相隔離。如果每個(gè)?TaskManager?只有一個(gè)?slot,這意味著這個(gè)slot里面的?task?組將獨(dú)享?JVM?。如果TaskManager包含多個(gè)Slot,那么同一個(gè)TaskManager中多個(gè)Slot內(nèi)的task可以共享JVM資源,比如共享TCP連接(通過(guò)多路復(fù)用)、心跳信息、部分?jǐn)?shù)據(jù)結(jié)構(gòu)等,從而減少了每個(gè)?task?的開(kāi)銷(xiāo)。

TCP?多路復(fù)用允許單個(gè)服務(wù)器進(jìn)程同時(shí)處理多個(gè)?TCP?連接。這通過(guò)使用一個(gè)或多個(gè)多路復(fù)用器來(lái)實(shí)現(xiàn),多路復(fù)用器是一種內(nèi)核機(jī)制,它可以監(jiān)視多個(gè)文件描述符(如套接字)的活動(dòng)。

官方建議將Slot數(shù)目設(shè)置為T(mén)askManager下可用的CPU核心數(shù),那么平均下來(lái),每個(gè)Slot都能獲得1個(gè)CPU核心(因?yàn)閟lot只隔離內(nèi)存不隔離CPU,所以無(wú)法強(qiáng)制每個(gè)slot獨(dú)占某個(gè)cpu核心)。但考慮到超線程,可以讓slotNumber=2*cpuCore.

比如我們有2個(gè)?TaskManager? ,每個(gè)TaskManager?設(shè)置了3個(gè)slot,那么slot總數(shù)是6?在執(zhí)行任務(wù)的時(shí)候,如下圖:

(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念,flink,大數(shù)據(jù)

Task Slot?有哪些資源?

(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念,flink,大數(shù)據(jù)

Task?Manager?中有固定數(shù)量的?Slot?,Slot?的具體數(shù)量由配置決定。同一?Task?Manager?上?Slot?之間沒(méi)有差別,每一個(gè)?Slot?都一樣大,即資源一樣多。

每個(gè)?slot?都能跑由多個(gè)連續(xù)?task?組成的一個(gè)?pipeline,比如?MapFunction?的第n個(gè)并行實(shí)例和?ReduceFunction?的第n個(gè)并行實(shí)例可以組成一個(gè)?pipeline。通過(guò)動(dòng)態(tài)的對(duì)槽的大小和數(shù)量的調(diào)整,就可以把任務(wù)的執(zhí)行較好的并行起來(lái)。

slot隔離主要是對(duì)內(nèi)存的隔離,CPU本身是不做隔離的,CPU在不同的slot之間是可以共享的。

slot內(nèi)存是平均分配的,比如機(jī)器上有16G內(nèi)存,如果劃分4個(gè)slot的話,那每個(gè)slot就是4G內(nèi)存了。如果每個(gè)slot內(nèi)存太小的話,任務(wù)就執(zhí)行不下去了,內(nèi)存直接被撐爆這個(gè)是完全有可能的。

JobManager拿到任務(wù)執(zhí)行計(jì)劃后,它如何確定到底需要多少個(gè)slot:只要看整個(gè)作業(yè)里面,并行度最高的那個(gè)算子設(shè)置的并行度就可以了,只要滿(mǎn)足它的需求,別的就都能滿(mǎn)足了。

SlotSharing

為了更高效地使用資源,Flink默認(rèn)允許同一個(gè)Job中不同Task的SubTask運(yùn)行在同一個(gè)Slot中,這就是SlotSharing,例如一個(gè)作業(yè)從Source到Sink的所有子任務(wù)都可以放置在一個(gè)Slot中,這樣數(shù)據(jù)交換成本更低。

為什么SlotSharing可以提升資源利用率呢?因?yàn)椴煌瑂ubtask的內(nèi)存使用量是不同的,它們被分配到不同的slot后,會(huì)導(dǎo)致有的slot內(nèi)存使用大,有的slot內(nèi)存使用小。如果不允許slotsharding,slot資源就沒(méi)有得到充分的利用。

?

但是slotsharding注意以下描述中的幾個(gè)關(guān)鍵條件:

1.必須是同一個(gè)Job。slot是給Job分配的資源,目的就是隔離各個(gè)Job,如果跨Job共享,隔離就失效了;

2.必須是不同Task的Subtask,其實(shí)就是讓不同操作共享資源,讓資源消耗盡可能平均。

3.默認(rèn)是允許sharing的

舉個(gè)例子,下圖中兩個(gè)TaskManager節(jié)點(diǎn)共有6個(gè)slot,5個(gè)SubTask,其中sink的并行度為1,另外兩個(gè)SubTask的并行度為2。此時(shí)由于Subtask(虛線圓角框,5個(gè))少于Slot個(gè)數(shù)(6個(gè)),所以每個(gè)Subtask獨(dú)占一個(gè)Slot,沒(méi)有SlotSharing(想想也是,如果此時(shí)還進(jìn)行slotsharing,就是明明有空余的slot,卻讓多少subtask去擠破頭搶同一個(gè)slot的資源,不合理)

(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念,flink,大數(shù)據(jù)

下面我們把并行度改為6,此時(shí)如果不支持slot?sharding,即仍然讓每個(gè)subtask獨(dú)占一個(gè)slot,那么會(huì)導(dǎo)致的問(wèn)題是:執(zhí)行速度很慢的subtask會(huì)長(zhǎng)時(shí)間占用一個(gè)slot,導(dǎo)致這個(gè)slot里面本來(lái)空出來(lái)的資源沒(méi)有被其他subtask使用到(這里假設(shè)一個(gè)slot資源是大于一個(gè)subtask所需要的資源)。

因此,如圖,Subtask的個(gè)數(shù)(虛線圓角框,13個(gè))多于Slot了(6個(gè)),出現(xiàn)了SlotSharing。一個(gè)Slot中分配了多個(gè)Subtask,特別是最左邊的Slot中跑了一個(gè)完整的Pipeline。

(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念,flink,大數(shù)據(jù)

SlotSharing除了提高了資源利用率,還簡(jiǎn)化了并行度和Slot之間的關(guān)系:一個(gè)Job運(yùn)行需要的最少的Slot個(gè)數(shù)就是其中并行度最大的那個(gè)Task(如上圖的source+map組合的task)的并行度(即6),因?yàn)椴⑿卸茸畲蟮膖ask對(duì)應(yīng)的subtask會(huì)有6個(gè),而且這6個(gè)subtask是不能放在同一個(gè)slot里的,所以至少需要6個(gè)slot。

Slot?Sharing?Group(SSG)

為什么又有一個(gè)ssg的概念呢?原因有二。

原因一:在?Flink?中,默認(rèn)情況下,所有的任務(wù)都屬于同一個(gè)默認(rèn)的?Slot?Sharing?Group--default。這意味著所有任務(wù)都會(huì)嘗試占用?TaskManager?上的所有可用?slot。這種方式可以在不需要特別考慮?slot?分配的情況下快速啟動(dòng)應(yīng)用程序,但可能會(huì)導(dǎo)致某些任務(wù)無(wú)法同時(shí)同一個(gè)?TaskManager?上運(yùn)行,從而影響整個(gè)應(yīng)用程序的性能。

為了優(yōu)化應(yīng)用程序的性能,我們可以通過(guò)設(shè)置不同的?Slot?Sharing?Group?來(lái)控制任務(wù)之間的共享關(guān)系。例如,我們可以將一些任務(wù)分組到同一個(gè)?Slot?Sharing?Group?中,讓它們共享同一個(gè)?TaskManager?上的?slot(CoLocationGroup可以指定的多個(gè)task運(yùn)行同一個(gè)slot里面比如迭代計(jì)算)。

原因二:為了防止同一個(gè)?slot?包含太多的?task,或者我們希望把計(jì)算邏輯復(fù)雜的算子單獨(dú)使用?slot?,提高計(jì)算速度。

其實(shí),SSG就是對(duì)?operator?進(jìn)行分組,同一個(gè) group?的不同?operator?task?可以共享同一個(gè)?slot(相同operator?task是不能共享同一個(gè)slot的,因?yàn)樾枰WC資源利用率盡量高)。

要想確定一個(gè)未做SlotSharingGroup設(shè)置的算子的group是什么,可以根據(jù)上游算子的?group?和自身是否設(shè)置?group共同確定(也就是說(shuō)如果下游算子沒(méi)有設(shè)置分組,它繼承上游算子的分組);?

只有屬于同一個(gè)slot共享組的子任務(wù),才會(huì)開(kāi)啟slot共享;不同組之間的任務(wù)是完全隔離的,必須分配到不同的slot上。在這種場(chǎng)景下,總共需要的slot數(shù)量,就是各個(gè)slot共享組最大并行度的總和。例如,如果不設(shè)置SlotSharingGroup,默認(rèn)所有task在同一個(gè)共享組(可以共享所有slot),那么Flink集群需要的任務(wù)槽與作業(yè)中使用的最高并行度正好相同。但是如下圖所示,如果我們強(qiáng)制指定了map的slot共享組為test,那么map和map下游的組為test,map的上游source的共享組為默認(rèn)的default,此時(shí)default組中最大并行度為10,test組中最大并行度為20,那么需要的Slot=10+20=30;

(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念,flink,大數(shù)據(jù)

怎么配置SSG

代碼配置

我們可以通過(guò)??slotSharingGroup()?為不同的?operator?設(shè)置不同的group,決定哪些?task?需要被共享

dataStream.filter(...).slotSharingGroup("groupName");//表示filter的slot共享組為groupName

它是Flink中用來(lái)實(shí)現(xiàn)slot共享的類(lèi),盡可能的允許不同的JobVertices部署在相同的Slot中,但這是一種寬約束,即也可以不在一個(gè)?slot只是盡量做到,不能完全保證。

還可以通過(guò)?CoLocationGroup?來(lái)決定哪些?task?需要被單獨(dú)的?slot?使用,CoLocationGroup可以強(qiáng)制將subTasksk放到同一個(gè)slot中,是一種硬約束,但是需要注意兩點(diǎn):

  1. 保證把JobVertices的第n個(gè)運(yùn)行實(shí)例和其他相同組內(nèi)的JobVertices第n個(gè)實(shí)例運(yùn)作在相同的slot中(所有的并行度相同的subTasks運(yùn)行在同一個(gè)slot?);
  2. 主要用于迭代流(訓(xùn)練機(jī)?學(xué)習(xí)模型)?,用來(lái)保證迭代頭與迭代尾的第i個(gè)subtask能被調(diào)度到同一個(gè)TaskManager上。

頁(yè)面配置

(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念,flink,大數(shù)據(jù)

?阿里云還可以不同groupslot設(shè)置不同資源作業(yè)資源配置 - 實(shí)時(shí)計(jì)算Flink版 - 阿里云

(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念,flink,大數(shù)據(jù)

Task Slot與parallelism

slot?是靜態(tài)的概念,是指?taskmanager?具有的并發(fā)執(zhí)行能力。比如說(shuō)一個(gè)task manager中slot為2,表示這個(gè)task manager中并發(fā)執(zhí)行能力是2

parallelism?是動(dòng)態(tài)的概念,是指程序運(yùn)行時(shí)實(shí)際使用的并發(fā)能力

我們?cè)O(shè)置task的并行度不能超過(guò)slot的數(shù)量,比如我們這里slot數(shù)量是9,那么最大的并行度也就是9

例如,在一個(gè)作業(yè)中,我們?cè)O(shè)置defaultParallelism=8,jmMem=3G,tmMem=5G,tmCpu=2,tmSlots=2,那么,他所用的taskmanager只有4個(gè)(因?yàn)椴⑿卸葹?,而每個(gè)taskmanager有兩個(gè)slot即倆個(gè)并發(fā),所以只需要4個(gè)taskmanager),所以總共core需要的是2core*4=8core,taskmanager總共內(nèi)存需要的是4G*4=16G

再次嘗試:把某個(gè)算子的并行度從8改成16后,會(huì)發(fā)現(xiàn)整體資源都上升了,變成了:

總共core需要的是2core*8=8core,taskmanager總共內(nèi)存需要的是4G*8=32G

這是因?yàn)椴⑿卸茸畲蟮膖ask對(duì)應(yīng)的subtask會(huì)有16個(gè),而且這16個(gè)subtask是不能放在同一個(gè)slot里的,所以至少需要16個(gè)slot,也就是說(shuō)是由最大并行度的task來(lái)決定的,此處我們?cè)O(shè)置了一個(gè)task?manager劃分成兩個(gè)slot,所以需要8個(gè)task?manager(如果我們一開(kāi)始只設(shè)置了一個(gè)taskmanger只能有一個(gè)slot,那么就至少要有16個(gè)taskmanager)

一個(gè)分配Slot的例子

Flink在調(diào)度任務(wù)分配Slot的時(shí)候遵循兩個(gè)重要原則:

  1. 同一個(gè)Job中的同一分組中的不同Task可以共享同一個(gè)Slot;
  2. Flink是按照拓?fù)漤樞蛞来螐腟ource調(diào)度到sink。
  • 假設(shè)有兩個(gè)TM:TM1、TM2,每個(gè)TM有3個(gè)Slot:S1,S2,S3。假設(shè)source/map的并行度為2,keyBy/window/sink的并行度為4,那么調(diào)度的順序依次為source/map[1]?->source/map[2]?->keyBy/window/sink[1]->keyBy/window/sink[2]->keyBy/window/sink[3]->keyBy/window/sink[4]。那么Flink調(diào)度任務(wù)時(shí)(使用默認(rèn)共享分組):
  1. 首先調(diào)度子任務(wù)source/map[1]到TM1.S1;
  2. 然后調(diào)度子任務(wù)source/map[2]?,根據(jù)Flink的調(diào)度原則:source/map[1]?和source/map[2]?屬于同一個(gè)Task下的兩個(gè)SubTask,所以他們不能放到同一個(gè)Slot中,所以source/map[2]被調(diào)度到TM1.S2;
  3. 然后調(diào)度keyBy/window/sink,keyBy/window/sink的子任務(wù)會(huì)被依次調(diào)度到TM1.S1、TM1.S2、TM2.S1、TM2.S2(之所以不分配到TM1.S3為了平衡分配tm1tm2。但是如果source/map與keyBy/window/sink屬于不同分組,那么keyBy/window/sink會(huì)被調(diào)度到TM1.S3、TM2.S1、TM2.S2、TM2.S3。

細(xì)粒度資源管理 (Fine-Grained?Resource?Management)

1.14版本推出的高級(jí)功能,用于提高大型共享集群的資源利用率。

為什么需要細(xì)粒度資源管理

Flink?集群執(zhí)行多種多樣的數(shù)據(jù)處理工作負(fù)載。不同的數(shù)據(jù)處理步驟通常需要不同的資源,如計(jì)算資源、內(nèi)存等。例如,大多數(shù)映射函數(shù)都比較輕量,而較大的、保留時(shí)間較長(zhǎng)的窗口函數(shù)往往受益于大量?jī)?nèi)存。默認(rèn)情況下,F(xiàn)link?以粗粒度的?Slot?管理資源,一個(gè)?Slot?代表?TaskManager?的一個(gè)資源切片。tasks?被提前定義部署,通常被分配相同的?slots?而沒(méi)有每個(gè)?slot?包含多少資源的概念。一個(gè)?Slot?可以存放流式處理流程中每個(gè)算子的一個(gè)并發(fā)子任務(wù)實(shí)例,即一個(gè)?Slot?可持有一整條處理流程的并發(fā)子任務(wù)實(shí)例。通過(guò)?Slot?Sharing?Group,用戶(hù)可以影響子任務(wù)在?Slot?上的分布。

對(duì)于許多jobs,使用粗粒度的資源管理并簡(jiǎn)單地把所有的tasks放入一個(gè) Slot?共享組中運(yùn)行,就資源利用率而言,也能運(yùn)行得很好。

  • 對(duì)于許多有相同并行度的?tasks?的流作業(yè)而言,每個(gè)?slot?會(huì)包含整個(gè)?pipeline。理想情況條件下,所有的?pipelines?應(yīng)該使用大致相同的資源,這可以容易被滿(mǎn)足通過(guò)調(diào)節(jié)相同?slot?的資源。
  • tasks?的資源消耗隨時(shí)間變化不同。當(dāng)一個(gè)?task?的資源消耗減少,其他的資源可以被另外一個(gè)?task?使用,該?task?的消耗增加。這就是被稱(chēng)為“調(diào)峰填谷效應(yīng)”的現(xiàn)象,它降低了所需要的總體需求。

盡管如此,有些情況下使用粗粒度資源管理效果并不好。

  • 當(dāng)?Slot?比較小時(shí),為每個(gè)?Slot?專(zhuān)門(mén)申請(qǐng)?TaskManager?的代價(jià)是非常高的(JVM?開(kāi)銷(xiāo)、Flink?框架開(kāi)銷(xiāo)等)。Slot?Sharing?通過(guò)讓不同類(lèi)型的算子共享?Slot,即在輕量的算子(需要較小的?Slot)和重量的算子(需要較大的?Slot)間共享資源,在一定程度上解決了這個(gè)問(wèn)題。然而,這僅在所有算子的并發(fā)度相同時(shí)有較好的效果,并非總是最優(yōu)的。此外,有些算子更適合單獨(dú)運(yùn)行(例如機(jī)器學(xué)習(xí)中負(fù)責(zé)訓(xùn)練的算子需要專(zhuān)用的?GPU資源)。

Kubernetes?和?Yarn?往往需要花費(fèi)一段時(shí)間來(lái)滿(mǎn)足資源請(qǐng)求,特別是在集群負(fù)載較高時(shí)。對(duì)于一些批處理作業(yè),等待資源的時(shí)間會(huì)降低作業(yè)的執(zhí)行效率。

  • Tasks?會(huì)有不同的并行度。有時(shí),這種不同的并行度是不可避免的。例如,象?source/sink/lookup?這些類(lèi)別的?tasks?的并行度可能被分區(qū)數(shù)和外部上下游系統(tǒng)的?IO?負(fù)載所限制。在這種情況下,擁有更少的?tasks?的?slots?會(huì)需要更少的資源相比?tasks?的 整個(gè)?pipeline
  • 有時(shí)整個(gè)pipeline 需要的資源可能會(huì)太大以致難于與單一的?slot/TaskManager?的場(chǎng)景相適應(yīng)。在這種情況下,pipeline?需要被分割成多個(gè)?SSGs,它們可能不總是有相同的資源需求。
  • 對(duì)于批作業(yè),不是所有的?tasks?能夠在同時(shí)被執(zhí)行。因此,整個(gè)?pipeline?的瞬時(shí)資源需求而時(shí)間變化。

試圖以相同的?slots?執(zhí)行所有的tasks,這樣會(huì)造成非最優(yōu)的資源利用率。相同?slot?的資源能夠滿(mǎn)足最高的資源需求,這對(duì)于其他資源需求將是浪費(fèi)的。當(dāng)涉及到像?GPU?這樣昂貴的外部資源時(shí),這樣的浪費(fèi)將是難以承受的。細(xì)粒度資源管理運(yùn)用不同資源的?slots?提高了資源利用率在種使用場(chǎng)景中。

有了細(xì)粒度資源管理,TaskManager?上的?Slot?可以動(dòng)態(tài)改變大小。轉(zhuǎn)換和算子指定所需的資源配置(CPU、內(nèi)存、磁盤(pán)等),由?Flink?的?ResourceManager?和?TaskManager?負(fù)責(zé)從?TaskManager?的總資源中劃分出指定大小的資源切片。你可以將這看做是?Flink?中的一層最小化、輕量化的資源編排。下圖展示了細(xì)粒度資源管理與目前默認(rèn)的共享固定大小?Slot?資源管理方式的區(qū)別。

(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念,flink,大數(shù)據(jù)

工作原理

在一個(gè)?TaskManager?中,執(zhí)行?task?時(shí)使用的資源被分割成許多個(gè)?slots。?Slot?既是資源調(diào)度的基本單元,又是Flink運(yùn)行時(shí)申請(qǐng)資源的基本單元。

(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念,flink,大數(shù)據(jù)

對(duì)于細(xì)粒度資源管理,Slot?資源請(qǐng)求包含用戶(hù)指定的特定的資源配置文件。Flink?會(huì)遵從這些用戶(hù)指定的資源請(qǐng)求并從?TaskManager?可用的資源中動(dòng)態(tài)地切分出精確匹配的?slot。

Flink之前的資源申請(qǐng)只包含必須指定的?slots,但沒(méi)有精細(xì)化的資源配置,這是一種粗粒度的資源管理.在這種管理方式下,?TaskManager?以固定相同的?slots?的個(gè)數(shù)的方式來(lái)滿(mǎn)足資源需求,如上圖左側(cè)圖所示。

對(duì)于沒(méi)有指定資源配置的資源請(qǐng)求,F(xiàn)link會(huì)自動(dòng)決定資源配置。

舉一個(gè)細(xì)粒度資源管理的例子

(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念,flink,大數(shù)據(jù)

Flink?會(huì)精確地從?TaskManager?中切分出匹配的?slot?為指定的?slot?資源請(qǐng)求。如上圖第一個(gè)方框所示,TaskManager將以總資源的形式被啟動(dòng),但是沒(méi)有提前指定?slots,所以是free?resource=1core?4GB。

當(dāng)一個(gè)?slot?請(qǐng)求?0.25?Core?和?1GB?的內(nèi)存,F(xiàn)link?將會(huì)選擇一個(gè)有足夠可用資源的?TaskManger?和創(chuàng)建一個(gè)新的已經(jīng)被資源申請(qǐng)的?slot。如果一個(gè)?slot?未被使用,它會(huì)將它的資源返回到?TaskManager?中的可用資源中去。

在當(dāng)前的資源分配策略中,F(xiàn)link?會(huì)遍歷所有被注冊(cè)的?TaskMangers?并選擇第一個(gè)有充足資源的?TaskManager?來(lái)滿(mǎn)足?Slot?資源請(qǐng)求。當(dāng)沒(méi)有?TaskManager?有足夠的資源時(shí),F(xiàn)link將會(huì)從 Native?Kubernetes或者 YARN分配一個(gè)新的?TaskManager在當(dāng)前的策略中,F(xiàn)link?會(huì)根據(jù)?用戶(hù)配置分配相同規(guī)格的TaskManagers,因?yàn)?TaskManagers?的規(guī)格組合是預(yù)定義的。

  • 集群中可能會(huì)存在資源碎片。例如,兩個(gè)?slots?請(qǐng)求?3GB?堆內(nèi)存,然而?TaskManager?總共的堆內(nèi)存是?4GB,F(xiàn)link?會(huì)啟動(dòng)兩個(gè)?TaskManagers,每個(gè)?TaskManager?會(huì)有1G的堆內(nèi)存被浪費(fèi)。未來(lái),可能會(huì)有一種資源分配策略,可以根據(jù)?job?的?slot?請(qǐng)求分配異構(gòu)?TaskManagers(即配置不同的tm),從而緩解資源碎片。
  • 確保配置的?Slot?共享組的資源組成不能大于?TaskManager?的總資源。否則,job?會(huì)失敗,并拋出異常。

犧牲資源隔離來(lái)降低整體內(nèi)存消耗

Flink?1.17?版本還提供了參數(shù)擴(kuò)大?TaskManager?的?slot?之間共享內(nèi)存的范圍,這種方式可以在?TaskManager?中?slot?內(nèi)存使用不均勻時(shí)提高內(nèi)存效率?;诖嗽谡{(diào)整參數(shù)后可以以資源隔離為代價(jià)來(lái)降低整體內(nèi)存消耗。

請(qǐng)參考 了解更多相關(guān)信息。這個(gè)參數(shù)作用

每個(gè)任務(wù)管理器的所有?RocksDB?實(shí)例之間共享的固定內(nèi)存總量(集群級(jí)選項(xiàng))。僅當(dāng)未配置?'state.backend.rocksdb.memory.management'?和?'state.backend.rocksdb.memory.fixed-per-slot'?時(shí),此選項(xiàng)才會(huì)生效。默認(rèn)值為空(不配置),值是內(nèi)存值。如果沒(méi)有配置,那么每個(gè)?RocksDB?列族狀態(tài)都有自己的內(nèi)存緩存(由列族選項(xiàng)控制)。共享資源的相關(guān)選項(xiàng)(例如?write-buffer-ratio)可以在同一級(jí)別設(shè)置(flink-conf.yaml)。注意,此功能打破了插槽之間的資源隔離文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-838433.html

到了這里,關(guān)于(增加細(xì)粒度資源管理)深入理解flink的task slot相關(guān)概念的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • flink集群與資源@k8s源碼分析-資源III 聲明式資源管理

    flink集群與資源@k8s源碼分析-資源III 聲明式資源管理

    資源分析分3部分,資源請(qǐng)求,資源提供,聲明式資源管理,本文是第三部分 聲明式資源管理 檢查資源需求/檢查資源聲明是flink 聲明式資源管理 的核心方法 上面的資源場(chǎng)景分為兩類(lèi), 提出資源需求 和 提供資源 , 檢查資源請(qǐng)求/檢查資源聲明是交匯點(diǎn),處理資源請(qǐng)求,該分

    2024年02月07日
    瀏覽(50)
  • 深入剖析 Linux Cgroups 子系統(tǒng):資源精細(xì)管理

    本章主要演示以下 cgroups 下各個(gè) subsystem 的作用。 根據(jù)難易程度,依次演示了 pids 、cpu 和 memory 3 個(gè) subsystem 的使用。 注:本文所有操作在 Ubuntu20.04 下進(jìn)行。 如果你對(duì)云原生技術(shù)充滿(mǎn)好奇,想要深入了解更多相關(guān)的文章和資訊,歡迎關(guān)注微信公眾號(hào)。 搜索公眾號(hào)【 探索云原

    2024年02月02日
    瀏覽(21)
  • Unity的AssetBundle資源運(yùn)行內(nèi)存管理的再次深入思考

    Unity的AssetBundle資源運(yùn)行內(nèi)存管理的再次深入思考

    ??大家好,我是阿趙。 ??這篇文章我想寫(xiě)了很久,是關(guān)于Unity項(xiàng)目使用AssetBundle加載資源時(shí)的內(nèi)存管理的。這篇文章不會(huì)分享代碼,只是分享思路,思路不一定正確,歡迎討論。 ??對(duì)于Unity引擎的資源內(nèi)存管理,我猜很多朋友都存在一定的疑惑。疑惑的點(diǎn)有非常多,包

    2024年03月22日
    瀏覽(28)
  • 【深入淺出C#】章節(jié)10: 最佳實(shí)踐和性能優(yōu)化:內(nèi)存管理和資源釋放

    一、 內(nèi)存管理基礎(chǔ) 1.1 垃圾回收機(jī)制 垃圾回收概述 垃圾回收(Garbage Collection)是一種計(jì)算機(jī)科學(xué)和編程領(lǐng)域的重要概念,它主要用于自動(dòng)管理計(jì)算機(jī)程序中的內(nèi)存分配和釋放。垃圾回收的目標(biāo)是識(shí)別和回收不再被程序使用的內(nèi)存,以便釋放資源并防止內(nèi)存泄漏,從而提高程

    2024年02月09日
    瀏覽(27)
  • 深入理解 Flink(七)Flink Slot 管理詳解

    深入理解 Flink(七)Flink Slot 管理詳解

    JobMaster 中封裝了一個(gè) DefaultScheduler,在 DefaultScheduler.startSchedulingInternal() 方法中生成 ExecutionGraph 以執(zhí)行調(diào)度。 資源調(diào)度的大體流程如下: Register:當(dāng) TaskExecutor 啟動(dòng)之后,會(huì)向 ResourceManager 注冊(cè)自己(TaskExecutor)和自己內(nèi)部的 Slot(TaskManagerSlot)。 Status Report:TaskExecutor 啟動(dòng)之

    2024年01月21日
    瀏覽(32)
  • K8S資源管理之計(jì)算資源管理

    K8S資源管理之計(jì)算資源管理

    ????????以CPU為例,下圖顯示了未設(shè)置Limits與設(shè)置了Requests和Limits的CPU使用率的區(qū)別 ???????盡管Requests和Limits只能被設(shè)置到容器上,但是設(shè)置了Pod級(jí)別的Requests和Limits能大大提高管理Pod的便利性和靈活性,因此在Kubernetes中提供了對(duì)Pod級(jí)別的Requests和Limits的配置。對(duì)于CP

    2024年04月15日
    瀏覽(23)
  • 水資源管理:云計(jì)算在水資源管理中的優(yōu)勢(shì)

    水資源是人類(lèi)生存和發(fā)展的基礎(chǔ),同時(shí)也是一個(gè)國(guó)家或地區(qū)的重要戰(zhàn)略資源。隨著人口增長(zhǎng)、經(jīng)濟(jì)發(fā)展和工業(yè)化進(jìn)程,水資源的緊缺和污染問(wèn)題日益嚴(yán)重。為了有效地管理水資源,提高水資源利用效率,降低污染水體的成本,云計(jì)算技術(shù)在水資源管理領(lǐng)域發(fā)揮著重要作用。本

    2024年04月16日
    瀏覽(28)
  • YARN 監(jiān)控管理以資源管理

    YARN 監(jiān)控管理以資源管理

    YARN提供了一個(gè)WebUI v1服務(wù),該服務(wù)屬于內(nèi)置服務(wù),隨著RM的啟動(dòng)而啟動(dòng),V1表示這是第一代版本的WebUI服務(wù),用戶(hù)可以通過(guò)瀏覽器登陸界面,來(lái)監(jiān)控集群、隊(duì)列、應(yīng)用程序、服務(wù)、節(jié)點(diǎn)信息,還可以查看集群詳細(xì)配置的信息,檢查各種應(yīng)用程序和服務(wù)的日志 首頁(yè) 瀏覽器輸入h

    2024年02月05日
    瀏覽(25)
  • 文件管理工具.netcore資源文件管理

    文件管理工具.netcore資源文件管理

    文件管理工具 怎么快速有效的管理我的文件包括文件夾,需求功能是 模糊搜索顯示匹配的文件夾或文件數(shù)據(jù) 快速打開(kāi)文件夾位置 在windows直接查看搜索速度太慢,范圍寬泛,整理所需資源文件名和文件本機(jī)路徑保存在數(shù)據(jù)庫(kù),可以在數(shù)據(jù)庫(kù)中快速檢索 顯示文件夾路徑然后點(diǎn)

    2024年01月23日
    瀏覽(28)
  • .NET C#基礎(chǔ)(9):資源釋放 - 需要介入的資源管理

    ?? IDisposable 接口是一個(gè)用于約定可進(jìn)行釋放資源操作的接口,一個(gè)類(lèi)實(shí)現(xiàn)該接口則意味著可以使用接口約定的方法 Dispose 來(lái)釋放資源。其定義如下: ??上述描述中可能存在兩個(gè)問(wèn)題: ??1. 什么是“資源”? ??2. C#是一個(gè)運(yùn)行在含有垃圾回收(GC)平臺(tái)上的語(yǔ)言,為

    2024年02月09日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包