百萬級任務(wù)調(diào)度系統(tǒng)實(shí)踐-陳奉剛_第1頁
百萬級任務(wù)調(diào)度系統(tǒng)實(shí)踐-陳奉剛_第2頁
百萬級任務(wù)調(diào)度系統(tǒng)實(shí)踐-陳奉剛_第3頁
百萬級任務(wù)調(diào)度系統(tǒng)實(shí)踐-陳奉剛_第4頁
百萬級任務(wù)調(diào)度系統(tǒng)實(shí)踐-陳奉剛_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

興盛優(yōu)選/陳奉剛百萬級任務(wù)調(diào)度系統(tǒng)在興盛優(yōu)選的實(shí)踐■■■興盛優(yōu)選任務(wù)調(diào)度系統(tǒng)的設(shè)計(jì)背景戰(zhàn)開源任務(wù)調(diào)度系統(tǒng)的分析■■■隨著業(yè)務(wù)發(fā)展,任務(wù)急劇增加,原有的調(diào)度出現(xiàn)明顯的延時(shí)和調(diào)度卡死的情況,經(jīng)常出現(xiàn)“起夜”現(xiàn)象,不得不為了簡化大數(shù)據(jù)運(yùn)維,需統(tǒng)-管控公司的大數(shù)據(jù)任務(wù)(包括離線調(diào)度任務(wù),實(shí)時(shí)運(yùn)行任務(wù)等);需統(tǒng)-管控?cái)?shù)據(jù)權(quán)限,Yarn隊(duì)列資源。需要解決流批之間的依賴關(guān)系,比如銷售預(yù)測場景中,需基于每小時(shí)的商品銷售量來推測當(dāng)天的該商品銷售量。因?yàn)闊o法預(yù)知實(shí)時(shí)任務(wù)數(shù)據(jù)是否有延時(shí),因此推測任務(wù)(離線任務(wù))的高精度調(diào)度定Worker本身的處理能力,是否能接受新任務(wù)線程是否合理,有足夠線程處理是否有資源隔離,能否實(shí)現(xiàn)優(yōu)先級■■■任務(wù)數(shù)量大,怎樣提升并發(fā)能力,保障所有的任務(wù)都能正確任務(wù)從孵化到執(zhí)行流程繁多,影響大,怎么保障準(zhǔn)確準(zhǔn)時(shí)調(diào)度資源不足怎么保障高優(yōu)業(yè)務(wù)集群是不穩(wěn)定的不可預(yù)期節(jié)點(diǎn)故不可預(yù)期節(jié)點(diǎn)故障快速的版本迭代隨時(shí)bug修復(fù)彈性資源的回收atat-least-onceexactly-once挑戰(zhàn)故障自動轉(zhuǎn)移故障自動轉(zhuǎn)移盡可能“斷點(diǎn)續(xù)傳”■■■■■多種異構(gòu)計(jì)算引擎的常用算子圖形化支持拖拉拽實(shí)現(xiàn)任務(wù)快速的生成和編排提供API被其他系統(tǒng)集成簡化任務(wù)管理抽象化技術(shù)體系化平臺標(biāo)準(zhǔn)化業(yè)務(wù)使用流程社區(qū)活躍,功能齊全Airflowasticjob訂閱式調(diào)度Azkaban與社區(qū)活躍,功能齊全Airflowasticjob訂閱式調(diào)度Azkaban與Hadoop生態(tài)圈結(jié)合緊密Scheduler無法實(shí)現(xiàn)流批一體腳本式開發(fā)內(nèi)部采用掃描式加載調(diào)度任務(wù),存在明顯的延時(shí);運(yùn)行時(shí)解析任務(wù)腳本,處理能力有限;另外Airflow沒有對外提供API接口,需要將代碼上傳到調(diào)度目錄才能加載。直直接嵌入代碼,能實(shí)時(shí)獲取結(jié)果用戶注入任務(wù),由調(diào)度系統(tǒng)通過消息系統(tǒng)定時(shí)觸發(fā)業(yè)務(wù)邏輯,所以比較適合Java,配置化調(diào)度只有DAG內(nèi)部依賴,沒有DAG之間的依賴;UI界面無法直接添加任務(wù)。第第一個完整依賴關(guān)系的圖形化調(diào)度分布式架構(gòu);支持DAG之間依賴;支持資源組;提供依賴完整的DAG為基礎(chǔ)的調(diào)度體系。但目前架構(gòu)無法實(shí)現(xiàn)流批任務(wù)統(tǒng)-管理DolphinScheduler的優(yōu)勢可可視化的操作,能夠完美解決workflow之間的依賴分布式的架構(gòu)提供了大量的開箱即用的算子基于DAG為單位調(diào)度業(yè)務(wù)目標(biāo)實(shí)實(shí)現(xiàn)流批統(tǒng)-集群管理,建立批流依賴關(guān)系高并發(fā)下任務(wù)準(zhǔn)時(shí)調(diào)度故障的優(yōu)雅處理以及優(yōu)雅升級■■■■■調(diào)度準(zhǔn)時(shí)性增強(qiáng)優(yōu)雅故障處理master:提供任務(wù)調(diào)度,故障處理等;worker:提供任務(wù)實(shí)例的執(zhí)行;算子:某-類型的任務(wù)抽象。調(diào)試模塊:提供Sparksql,Flinksql的調(diào)試功能;日志模塊:日志服務(wù);告警模塊:警告服務(wù);版本管理:提供任務(wù)腳本版本管理;資源,權(quán)限管理模塊:提供基礎(chǔ)資源的計(jì)算資源,數(shù)據(jù)資源信息,用戶權(quán)限信息。任務(wù)的孵化和執(zhí)行分離,簡化EWstcr職責(zé)■■■■■■■■Master只負(fù)責(zé)流程控制算子開始算子結(jié)束算子Switch算子職責(zé)更明確,Master只負(fù)責(zé)分發(fā)即可重試下,減少通信次數(shù)Master故障時(shí)只需要恢復(fù)Workflowinstance即可提升了Master穩(wěn)定性Master只關(guān)心workflow實(shí)例狀態(tài),Worker只關(guān)心task實(shí)例■由線程監(jiān)控workflowinstance狀態(tài)改■■將任務(wù)分為Local和Remote任務(wù),Local本地執(zhí)行,比如Python,Shell等,Remote任務(wù)狀態(tài)由遠(yuǎn)程服務(wù)托管比如Yarn類,Check類,依賴類任務(wù)。■■Remotetask提交后,由狀態(tài)監(jiān)測隊(duì)列■和線程管理。優(yōu)化后效果■單臺Master管理workflow實(shí)例能力由100(默認(rèn))提升數(shù)十萬■■單臺Worker對Yarn任務(wù)并發(fā)能力提■升60倍(Yarn任務(wù)平均耗時(shí)10min算)■采用狀態(tài)監(jiān)控類型后,支撐了實(shí)時(shí)任■務(wù)和離線任務(wù)共同部署性■將第三方托管任務(wù)狀態(tài)返還給第三方■■利用Kafka能長時(shí)間緩存狀態(tài),為Master故障恢復(fù)提■引入Mysql■防僵死:防止消息遺漏產(chǎn)生狀態(tài)未更新■■量小,頻次低:5分鐘級別,另只掃描超過5min未■■減少掃描,提升并發(fā)度和響應(yīng)速度■性和減少數(shù)據(jù)庫掃描■■■■■■通過提前將執(zhí)行任務(wù)并提前分發(fā),減少M(fèi)aster處理和分發(fā)過程導(dǎo)致的延時(shí)。減少掃庫的頻率,提升的分發(fā)的效率。多余時(shí)間通過時(shí)間轉(zhuǎn)盤消除,時(shí)間轉(zhuǎn)盤每秒轉(zhuǎn)動-次。調(diào)度器提前分發(fā),時(shí)間轉(zhuǎn)盤消除多余,實(shí)現(xiàn)了準(zhǔn)時(shí)觸發(fā)提前30s獲取任務(wù),單Master減少15倍掃描數(shù)據(jù)庫,隨著Master功能簡化,處理性能提升,假設(shè)Master部署數(shù)減半,掃描次數(shù)減少30倍。降低調(diào)度延時(shí),減少了Master和網(wǎng)絡(luò)的02設(shè)置不同優(yōu)先級隊(duì)列保障高優(yōu)任務(wù)的執(zhí)行挑戰(zhàn)點(diǎn)優(yōu)先級高的任務(wù)無法讓正在運(yùn)行的任務(wù)釋放改進(jìn)■■■Master節(jié)點(diǎn):分發(fā)的時(shí)候根據(jù)任務(wù)的優(yōu)先級排序進(jìn)行順序分發(fā)。Worker節(jié)點(diǎn):劃分多類任務(wù)的線程池,每-類消耗不影響其他類的任Yarn管理器:提供高優(yōu)任務(wù)隊(duì)列任務(wù)以組為單位提交,每個組在yarn資源上有高,中,低三個隊(duì)列。tcr■多個master出于同等狀態(tài),收到故障消息后通過■鎖爭搶故障處理?!鯩aster在處理故障的同時(shí)還處理其他的任務(wù),影■■多個master里面選出主master,專門用于故障處理?!觥霎?dāng)Master或Worker故障時(shí),主Master停止孵化workflow,優(yōu)■復(fù)機(jī)器故障應(yīng)盡可能機(jī)器故障應(yīng)盡可能“再續(xù)前緣”■■■■■■主Master故障:先切主,然后執(zhí)行下-步。非主Master故障:找到故障機(jī)器的workflow實(shí)例,并在主master恢復(fù)狀態(tài)信息主Master監(jiān)聽故障后,找到故障節(jié)點(diǎn)的運(yùn)行的任務(wù),重新隨機(jī)發(fā)送。LocalTask:因?yàn)樵诠收蠙C(jī)器上運(yùn)行,需RemoteTask:因?yàn)樵谶h(yuǎn)端運(yùn)行,從遠(yuǎn)端資源管理器獲取該任務(wù)狀態(tài)即可。當(dāng)前業(yè)務(wù)本身95%是Remote任務(wù),所以該部分任務(wù)無需重跑,僅部分任務(wù)需要重新構(gòu)建重跑,提升了故障恢復(fù)的效率?!觥觥鯩aster滾動升級:master的狀態(tài)存儲在kafka和數(shù)據(jù)庫當(dāng)中,單個節(jié)點(diǎn)升級的過程如故障處理-樣。Worker滾動升級:worker節(jié)點(diǎn)本地存儲了Local任務(wù)的執(zhí)行狀態(tài),升級的時(shí)候master暫停往該節(jié)點(diǎn)發(fā)送任務(wù),待Local任務(wù)結(jié)束即可升級并恢復(fù)任務(wù)處理。共經(jīng)歷2個大版本,10多個小版本,另外10多個補(bǔ)丁或緊急需求,均無業(yè)務(wù)感知■基于SparkSQL重構(gòu)了Sqoop數(shù)據(jù)互導(dǎo);支持全量/■T+1寫Hive;全量/增量入庫Hudi;全量/增量/insert/upsert寫其他數(shù)據(jù)庫存儲。■■■提供SparkSql對hive的計(jì)算。基于FlinkSQL提供了實(shí)時(shí)寫算子能力。提供MutliInput對Mysql分庫分表數(shù)據(jù)的匯聚?!鐾ㄟ^分區(qū)探測算子將實(shí)時(shí)任務(wù)和離線任務(wù)建立了聯(lián)■■■基于異步回調(diào)進(jìn)-步性能提升基于k8s實(shí)現(xiàn)worker節(jié)點(diǎn)的彈性伸縮■■■■調(diào)度系統(tǒng)采用DAG為基本調(diào)度單位,有獨(dú)自的調(diào)度周期。因周期不同,時(shí)間點(diǎn)的不同,很難做到至上而下的觸發(fā)式調(diào)度,目前采用檢查方式。調(diào)度只能保證任務(wù)能啟動,但無法控制任務(wù)本身錯誤?;贒AG的血緣關(guān)系,可進(jìn)行DAG之間的重跑,如圖,只觸發(fā)A點(diǎn)重跑,后自動觸發(fā)B點(diǎn)運(yùn)行,最后到C依賴點(diǎn)如果沒有達(dá)到調(diào)度時(shí)間,將不觸發(fā),等待DAG03本地任務(wù)容器化和任務(wù)狀態(tài)回調(diào)進(jìn)-步提升穩(wěn)定性和性能Local任務(wù)采用容器化運(yùn)行,與Worker節(jié)點(diǎn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論