九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Flink之工作原理

https://www.jianshu.com/p/04f7c558c556

Flink工作原理

Flink作為新的stream計(jì)算引擎,這兩年社區(qū)的活躍度很高。對(duì)于Flink 既可以處理stream data也可以處理batch data,同時(shí)可以兼顧Spark以及Sparkstreaming的功能,與Spark不同的是,F(xiàn)link本質(zhì)上只有stream的概念,batch被認(rèn)為是special stream。Flink主要有以下幾個(gè)角色需要大家了解,對(duì)于Flink的開發(fā)是很有幫助的。也便于自己后期翻閱。

圖1

JobClient:
負(fù)責(zé)接收程序,解析和優(yōu)化程序的執(zhí)行計(jì)劃,然后提交執(zhí)行計(jì)劃到JobManager。這里執(zhí)行的程序優(yōu)化是將相鄰的Operator融合,形成OperatorChain,Operator的融合可以減少task的數(shù)量,提高TaskManager的資源利用率。

JobManagers:
負(fù)責(zé)申請(qǐng)資源,協(xié)調(diào)以及控制整個(gè)job的執(zhí)行過程,具體包括,調(diào)度任務(wù)、處理checkpoint、容錯(cuò)等等

TaskManager:
TaskManager運(yùn)行在不同節(jié)點(diǎn)上的JVM進(jìn)程(process),負(fù)責(zé)接收并執(zhí)行JobManager發(fā)送的task,并且與JobManager通信,反饋任務(wù)狀態(tài)信息,如果說JobManager是master的話,那么TaskManager就是worker用于執(zhí)行任務(wù)。每個(gè)TaskManager像是一個(gè)容器
,包含一個(gè)或者多個(gè)Slot。

Slot:
Slot是TaskManager資源粒度的劃分,每個(gè)Slot都有自己獨(dú)立的內(nèi)存。所有Slot平均分配TaskManager的內(nèi)存,值得注意的是,Slot僅劃分內(nèi)存,不涉及cpu的劃分。每個(gè)Slot可以運(yùn)行多個(gè)task。Slot的個(gè)數(shù)就代表了一個(gè)程序的最高并行度。

Task:
Task是在operators的subtask進(jìn)行鏈化之后形成的,具體Flink job中有多少task和operator的并行度和鏈化的策略有關(guān),為了方便大家理解,可以參考圖5中所示的理解。

SubTask:
因?yàn)镕link是分布式部署的,程序中的每個(gè)算子,在實(shí)際執(zhí)行中被分隔為一個(gè)或者多個(gè)subtask,運(yùn)算符子任務(wù)(subtask)的數(shù)量是該特定運(yùn)算符的并行度。數(shù)據(jù)流在算子之間流動(dòng),就對(duì)應(yīng)到SubTask之間的數(shù)據(jù)傳輸。Flink允許同一個(gè)job中來自不同task的subtask可以共享同一個(gè)slot。每個(gè)slot可以執(zhí)行一個(gè)并行的pipeline??梢詫ipeline看作是多個(gè)subtask的組成的。

Parallel Dataflows

Flink程序本質(zhì)上是并行和分布式的。在程序執(zhí)行期間,一個(gè)流會(huì)生成一個(gè)或者多個(gè)stream partition,并且一個(gè)operator會(huì)生成一個(gè)或者多個(gè)operator subtask。operator的 subtask 彼此之間是獨(dú)立的,分別在不同的線程里去執(zhí)行并且可能分布在不同的機(jī)器上或者containers上。

operator的subtasks的數(shù)量等于該操作算子的并行度的數(shù)量。流的并行度有總是取決于產(chǎn)生它的操作算子的并行度決定的。同一個(gè)flink程序中的不同的operators可能有不同的并行度。

圖2

數(shù)據(jù)流在兩個(gè)operators之間進(jìn)行傳遞的方式有兩種:one-to-one 模式 和 redistributing 模式
①:one-to-one 模式:兩個(gè)operator用此模式傳遞的時(shí)候,會(huì)保持?jǐn)?shù)據(jù)的分區(qū)數(shù)和數(shù)據(jù)的排序,比如:在下圖中Source和map() operators之間的數(shù)據(jù)傳遞方式;

②:Redistributing 模式:這種模式會(huì)改變數(shù)據(jù)的分區(qū)數(shù);每個(gè)一個(gè)operator subtask會(huì)根據(jù)選擇transformation把數(shù)據(jù)發(fā)送到不同的目標(biāo)subtasks,比如keyBy()會(huì)通過hashcode重新分區(qū),broadcast()和rebalance()方法會(huì)隨機(jī)重新分區(qū),比如:在下圖中map()和keyBy/window ,keyBy/window和Sink之間的數(shù)據(jù)傳遞方式;

圖3

Task and Operator Chains

對(duì)于分布式計(jì)算,F(xiàn)link將operator 的subtasks鏈化在一起形成tasks。每個(gè)task在一個(gè)線程中被執(zhí)行。將operators鏈化在一起形成tasks是比較好的一個(gè)優(yōu)化:他減少了線程和線程之間的切換和緩沖的開銷,增加了吞吐量降低了延遲。對(duì)于operator的鏈化行為,可以根據(jù)個(gè)人來去調(diào)整。詳情參考官網(wǎng)

圖4

下圖中operators經(jīng)過鏈化之后,僅僅需要5個(gè)并行的線程。

圖5

Task Slots and Resources

①每一個(gè)worker(TaskManager) 都是一個(gè)JVM進(jìn)程,他可能會(huì)在獨(dú)立的線程中執(zhí)行一個(gè)或者多個(gè)subtask。為了控制worker能夠接收多個(gè)task。worker通過task slot來進(jìn)行控制(一個(gè)worker至少有一個(gè)task slot)。

②每個(gè)task slot表示TaskManager擁有資源的一個(gè)固定大小的子集。假如一個(gè)TaskManager有三個(gè)slot,那么它會(huì)將其管理的內(nèi)存分成三份給各個(gè)slot。slot的資源化意味著一個(gè)job的subtask將不需要跟來自其它job的subtask競(jìng)爭(zhēng)被管理的內(nèi)存。

③通過調(diào)整task slots的數(shù)量,用戶可以定義subtasks它們之間如何互相隔離。如果一個(gè)TaskManager一個(gè)slot,那將意味著每個(gè)task group獨(dú)立的運(yùn)行在JVM中。而一個(gè)TaskManager多個(gè)slot意味著更多的subtask可以共享一個(gè)JVM。而在同一個(gè)JVM進(jìn)程中的task將共享TCP連接和心跳消息。它們也可能共享數(shù)據(jù)集和數(shù)據(jù)結(jié)構(gòu),這樣可以減少每個(gè)task的負(fù)載。

圖6

默認(rèn),如果subtask是來自相同的job,但不是相同的task,Flink允許subtask共享slot。這樣就會(huì)出現(xiàn)一個(gè)slot可能容納一個(gè)job中的整個(gè)pipeline。允許slot共享有以下兩個(gè)好處:
① Flink集群需要的task slots的數(shù)量和作業(yè)中的最高并行度的一致。不需要計(jì)算一個(gè)程序總共包含多少個(gè)task。
②更好的利用資源。如果沒有slot共享,非密集型source/map()子任務(wù)將阻塞與資源密集型窗口子任務(wù)一樣多的資源;在slot共享的話,將我們圖6的示例中的基本并行度從2提高到6,可以充分利用slot資源,同時(shí)確保繁重的subtasks在Taskmanager中公平分配。

作者:MrSocean
鏈接:https://www.jianshu.com/p/04f7c558c556
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
01-Flink運(yùn)行架構(gòu)
Flink學(xué)習(xí)筆記:Flink Runtime
攜程2021大數(shù)據(jù)開發(fā)一面
Flink性能調(diào)優(yōu)小小總結(jié)
萬字長文深度解析WordCount,入門Flink,看這一篇就夠了
Flink-3-ApacheFlink架構(gòu)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服