Flink怎么樣調(diào)度作業(yè)

這篇文章給大家分享的是有關(guān)Flink怎么樣調(diào)度作業(yè)的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請域名、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、東安網(wǎng)站維護(hù)、網(wǎng)站推廣。

Scheduling? 調(diào)度

Flink中的執(zhí)行資源是通過任務(wù)執(zhí)行槽來確定的。每個(gè)TaskManager有一個(gè)或者多個(gè)任務(wù)執(zhí)行槽,每個(gè)可以運(yùn)行一個(gè)并行任務(wù)的流水線。每個(gè)流水線包含多個(gè)連續(xù)的任務(wù),像N次的MapFunction的并行實(shí)例跟一個(gè)ReduceFunction的n次并行實(shí)例。注意Flink經(jīng)常同時(shí)執(zhí)行多個(gè)連續(xù)的任務(wù):對數(shù)據(jù)流程序來說都會這樣,但是對于批處理程序來只是頻繁發(fā)生。

下面的圖說明了這個(gè)情況。一個(gè)帶數(shù)據(jù)源的程序,一個(gè)MapFunction和一個(gè)ReduceFunction。數(shù)據(jù)源和MapFunction都是按照4個(gè)并發(fā)度來執(zhí)行的,而ReduceFunction是按照3個(gè)并發(fā)度來執(zhí)行。這是一個(gè)包含了順序Source到Map到Reduce的流水線。在一個(gè)有兩個(gè)TaskManager的集群上,每個(gè)TaskManager各有3個(gè)任務(wù)執(zhí)行槽,這個(gè)程序?qū)凑障旅娴拿枋鰜韴?zhí)行。

Flink怎么樣調(diào)度作業(yè)

在內(nèi)部,F(xiàn)link通過SlotSharingGroup 和 CoLocationGroup來確定那些任務(wù)可以共享一個(gè)任務(wù)槽(許可的), 分別要把那些任務(wù)嚴(yán)格的放置到同一個(gè)執(zhí)行槽中。

JobManager Data Structures? JobManager數(shù)據(jù)結(jié)構(gòu)

在作業(yè)執(zhí)行階段,JobManager會持續(xù)跟蹤那些分布式執(zhí)行的任務(wù),決定什么時(shí)候調(diào)度執(zhí)行下一個(gè)任務(wù)(或者一組任務(wù)), 對完成的任務(wù)或執(zhí)行失敗作出反應(yīng)。

JobManager接收到JobGraph, JobGraph由包含操作的數(shù)據(jù)流(JobVertex) 和中間結(jié)果(IntermediateDataSet)來描述表示。每個(gè)操作都有屬性,像并行度執(zhí)行的代碼。另外JobGraph包含一組附加的操作代碼執(zhí)行必須的庫。

JobManager把JobGraph轉(zhuǎn)換成執(zhí)行圖ExecutionGraph。ExecutionGraph執(zhí)行圖 是一個(gè)JobGraph的并行版本:對于每個(gè)JobVertex ,它包含每個(gè)并行子任務(wù)的ExecutionVertex。一個(gè)并行度為100的操作會有一個(gè)JobVertex和100個(gè)ExecutionVertices。ExecutionVertex跟蹤具體任務(wù)的執(zhí)行狀態(tài)。一個(gè)JobVertex中所有的ExecutionVertices都會在一個(gè)ExecutionJobVertex中。ExecutionJobVertex跟蹤操作的的整體狀態(tài)。除了頂點(diǎn),ExecutionGraph執(zhí)行圖還包含中間結(jié)果IntermediateResult 和中間結(jié)果分區(qū) IntermediateResultPartition。前者跟蹤中間數(shù)據(jù)集的狀態(tài),后者跟蹤每個(gè)分區(qū)的狀態(tài)。

Flink怎么樣調(diào)度作業(yè)

每個(gè)執(zhí)行圖ExecutionGraph有個(gè)一個(gè)與之關(guān)聯(lián)的作業(yè)狀態(tài)。這個(gè)作業(yè)狀態(tài)表示了作業(yè)執(zhí)行的當(dāng)前狀態(tài)。

一個(gè)Flink作業(yè)開始是創(chuàng)建狀態(tài)完成,然后轉(zhuǎn)為運(yùn)行中狀態(tài),在完成所有作業(yè)之后再轉(zhuǎn)為完成狀態(tài)。萬一失敗了,作業(yè)就會轉(zhuǎn)為失敗中狀態(tài)并且會撤銷所有運(yùn)行的任務(wù)。如果作業(yè)定點(diǎn)到了最后的狀態(tài)并且作業(yè)不能重啟,那么作業(yè)轉(zhuǎn)為已經(jīng)失敗狀態(tài)。如果作業(yè)可以重啟,那么作業(yè)會進(jìn)入重啟中狀態(tài)。一旦作業(yè)重啟完成,作業(yè)會變成創(chuàng)建狀態(tài)完成。

如果用戶取消了作業(yè),那么作業(yè)就變成了取消中狀態(tài)。同時(shí)還需要撤銷所有正在運(yùn)行的任務(wù)。一旦所有的運(yùn)行的任務(wù)到了最終的狀態(tài),這個(gè)作業(yè)就編程了取消完成狀態(tài)。

不像已經(jīng)完成狀態(tài),已經(jīng)取消和已經(jīng)失敗狀態(tài)表示的是全局最終狀態(tài),并且會粗發(fā)清理作業(yè)任務(wù),已經(jīng)掛起狀態(tài)是只在本地終端的。本地終端的意思是作業(yè)的執(zhí)行已經(jīng)被自己的JobManager終止了,但是FLink集群上的另外一個(gè)JobManager可以通過持久化的HA存儲獲取這個(gè)作業(yè)并重啟這個(gè)作業(yè)。因此被掛起的作業(yè)是不會被完全清理的。

Flink怎么樣調(diào)度作業(yè)

在執(zhí)行圖ExecutionGraph執(zhí)行時(shí),每個(gè)并行任務(wù)都經(jīng)過了多個(gè)狀態(tài),從被創(chuàng)建完成到已完成或已失敗。下面這個(gè)圖說明這些狀態(tài)和他們之間可能的轉(zhuǎn)移關(guān)系。一個(gè)任務(wù)可能會執(zhí)行多次(例如:在故障恢復(fù)過程中)。由于這個(gè)原因,在一次執(zhí)行中Execution會跟蹤ExecutionVertex的執(zhí)行。

Flink怎么樣調(diào)度作業(yè)

感謝各位的閱讀!關(guān)于“Flink怎么樣調(diào)度作業(yè)”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

本文題目:Flink怎么樣調(diào)度作業(yè)
文章起源:http://muchs.cn/article38/picopp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作用戶體驗(yàn)、關(guān)鍵詞優(yōu)化云服務(wù)器、網(wǎng)頁設(shè)計(jì)公司定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)