版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
修改記更新時(shí)版修訂修改內(nèi)初始創(chuàng)元數(shù)據(jù)一、設(shè)計(jì)目 二、整體架 SkyNet功 SkyNet組 三、Job元數(shù) Job配置 Job依賴配置 Job運(yùn)行歷史 任務(wù)池 序列 Job狀態(tài)視 用戶 四、 五、JobManager Job依賴關(guān)系 Job告 啟動(dòng)流 成功Job處理流 失敗Job處理流 六、JobWorker 執(zhí)行 七、流程 Job流 Job依賴流 資源流 Job提交流 Job執(zhí)行流 Job流 八、SkyNet部署與運(yùn) 安 配 運(yùn) 停 九、SkyNet前端部署與運(yùn) 安 配 運(yùn) 一、設(shè)計(jì)目目前整個(gè)數(shù)據(jù)平臺(tái)的任務(wù)調(diào)度非常粗糙基本僅靠Crontab來定時(shí)運(yùn)務(wù)出錯(cuò)的造成分析數(shù)據(jù)不入庫導(dǎo)致線上BUG。(圖一定時(shí)觸發(fā)一個(gè)日志校驗(yàn)的Job,去檢查后的日志是否已經(jīng)就JOBJobJob執(zhí)行成Job1-4;JOB1JOB1JOB2JOB全JOB1;JOB2JOB3JOB4有一個(gè)未成功執(zhí)JOB2就不執(zhí)行;7723098,,1654為了解決數(shù)據(jù)平臺(tái)ETL任務(wù)的穩(wěn)定性時(shí)效性因此設(shè)計(jì)開發(fā)SkyNet任務(wù)調(diào)度系統(tǒng)旨在解決任務(wù)的配置調(diào)度告警等功能,減少開發(fā)的開發(fā)和成本,提高平臺(tái)的穩(wěn)定性。,,1654二、整體架SkyNet功Job:添加、修改、刪除、殺死Job依賴關(guān)系:添加、修改、刪除Job之間的依賴關(guān)系JobJobJob資源:添加、修改、刪除資源,查詢資源列表Job任務(wù)失敗告警:當(dāng)任務(wù)失敗或者某個(gè)時(shí)間點(diǎn)未成功結(jié)束時(shí),觸發(fā)郵件和支持任務(wù)類型包括 、python、MapReduce、Hive、DataHub任務(wù)的調(diào)度及SkyNet組JobClient:SkyNetJobManager:SkyNetMasterRPCJobClient提交的所有操作與元數(shù)據(jù)庫通訊Job元數(shù)據(jù)負(fù)責(zé)任務(wù)的配置、觸發(fā)、調(diào)度、;JobMonitor:正在運(yùn)行的Job狀態(tài)、任務(wù)池、等待運(yùn)行的JobWorker:SkyNetSlave,從任務(wù)池中獲取Job、負(fù)責(zé)啟動(dòng)并收集Job的執(zhí)JobManager;三、Job元數(shù)元數(shù)據(jù)于Mysql,數(shù)據(jù)庫名Job配置DROPTABLEIFEXISTSCREATETABLEdmp_job( INTNOTNULL, DATETIMENOTNULL,job_last_update_timeDATETIMENOTNULL, VARCHAR(200)NOTNULL, VARCHAR(20)NOTNULLCOMMENT'JOB類型 job_app_locationVARCHAR(500)NOTNULLCOMMENT'JOB程序文件路徑', VARCHAR(200)COMMENT'JOB類名', VARCHAR(500)COMMENT'JOB運(yùn)行參數(shù)', VARCHAR(20)COMMENT'JOB定時(shí)運(yùn)行quartz表達(dá)式', VARCHAR(4000)COMMENT'JOB備注信息', INTDEFAULT0COMMENT'JOB運(yùn)行周期,0:天,1:小時(shí)',job_special_hostVARCHAR(100)COMMENT'JOBHOST',job_business_timeVARCHAR(50)COMMENT'JOB業(yè)務(wù)日期格式', INTDEFAULT0COMMENT失敗重試次數(shù)job_retry_intervalINTDEFAULT60COMMENT失敗重試間隔(秒mandVARCHAR(500)COMMENT任務(wù)完成后執(zhí)行命令',PRIMARYKEY(job_id)Job依賴配置DROPTABLEIFEXISTSdmp_job_dependence;CREATETABLEdmp_job_dependence(parent_job_idINTNOTNULL,son_job_idINTNOTNULL,PRIMARYKEYJob運(yùn)行DROPTABLEIFEXISTSdmp_job_log;CREATETABLEdmp_job_log(job_instance_idBIGINTNOTNULL, INTNOTNULL, datetimeNOTNULLCOMMENT'記錄創(chuàng)建時(shí)間',job_run_hostVARCHAR(50)NOTNULLCOMMENTjob運(yùn)行主機(jī)',job_statusVARCHAR(20)NOTNULLCOMMENT'job運(yùn)行狀態(tài)',job_business_timeVARCHAR(20)COMMENT'job運(yùn)行業(yè)務(wù)日期',job_start_timedatetimeCOMMENT'job開始運(yùn)行時(shí)間',job_end_timedatetimeCOMMENT'job運(yùn)行結(jié)束時(shí)間',job_run_logVARCHAR(200)COMMENT'job運(yùn)行日志文件',job_submit_flagINTCOMMENT'job提交標(biāo)記,0:自動(dòng);1:手動(dòng)',job_batch_noBIGINTDEFAULT0COMMENT'job運(yùn)行批次號(hào)',INDEX`job_instance_id`(job_instance_id),INDEX`job_id`(`job_id`),INDEX`job_business_time`(`job_business_time`),INDEX`create_time`(`create_time`),INDEX`job_status`資源配置DROPTABLEIFEXISTSdmp_resource_config;CREATETABLEdmp_resource_config( VARCHAR(100NOTNULLCOMMENT主機(jī)名job_typeVARCHAR(50)NOTNULLCOMMENTJOB類型max_job_countINTNOTNULLCOMMENT該類型可運(yùn)行的最大任務(wù)數(shù)',running_job_countINTCOMMENT'表示已分配出去的任務(wù)數(shù)',is_specialINTdefault0comment是否特定的資源',PRIMARYKEY(hostname,job_type)告警配置DROPTABLEIFEXISTSdmp_alarm_config;CREATETABLEdmp_alarm_config( INTNOTalarm_flagINTNOTNULLDEFAULT0COMMENT'0:失敗告警,1:指定時(shí)間未成功結(jié)束告警;',alarm_timeVARCHAR(20)COMMENT當(dāng)alarm_type=1時(shí),設(shè)定告警時(shí)間,格式為: INTNOTNULLDEFAULT0COMMENT'0:郵件告警,1:告警,2:郵件和告 VARCHAR(2000)COMMENT'郵件告警收件人列表,分號(hào)分隔',alarm_mobile_listVARCHAR(2000)COMMENT'告警收信人號(hào)列表,分號(hào)分隔',PRIMARYKEY(job_id,alarm_flag)告警發(fā)送記錄DROPTABLEIFEXISTSdmp_alarm_log;CREATETABLEdmp_alarm_log( INTNOT INTDEFAULT0COMMENT'0:失敗告警,1:指定時(shí)間未成功結(jié)束告警;',alarm_timedatetimeNOTNULLCOMMENT'告警時(shí)間',alarm_statusINTNOTNULLCOMMENT告警發(fā)送結(jié)果,0:成功,1:失敗jobjobDROPTABLEIFEXISTSdmp_running_job;CREATETABLEdmp_running_job(job_instance_idBIGINTNOTNULL, INTNOTNULL, datetimeNOTNULLCOMMENT記錄創(chuàng)建時(shí)間job_last_update_timedatetimeNOTNULLCOMMENT上次更新狀態(tài)的時(shí)間',job_run_hostVARCHAR(50)NOTNULLCOMMENT'job運(yùn)行主機(jī)',job_statusVARCHAR(20)NOTNULLCOMMENT'job運(yùn)行狀態(tài)',job_business_timeVARCHAR(20)COMMENT'job運(yùn)行業(yè)務(wù)日期',job_start_timedatetimeCOMMENT'job開始運(yùn)行時(shí)間',job_end_timedatetimeCOMMENT'job運(yùn)行結(jié)束時(shí)間',job_run_logVARCHAR(200)COMMENT'job運(yùn)行日志文件',job_submit_flagINTNOTNULLDEFAULT0COMMENT'0:自動(dòng)提交;1:手動(dòng)提交',job_batch_noBIGINTDEFAULT0COMMENT'job運(yùn)行批次號(hào)',PRIMARYKEY任務(wù)池DROPTABLEIFEXISTSdmp_job_pool;CREATETABLEdmp_job_pool(job_instance_idBIGINTNOTNULL, INTNOTNULL, datetimeNOTNULLCOMMENT'記錄創(chuàng)建時(shí)間',job_run_hostVARCHAR(50)NOTNULLCOMMENT'job運(yùn)行主機(jī)',job_business_timeVARCHAR(20)COMMENT'job運(yùn)行業(yè)務(wù)日期',job_actionINTNOTNULLDEFAULT0COMMENT'0:運(yùn)行任務(wù);1:kill任務(wù)',job_submit_flagINTNOTNULLDEFAULT0COMMENT'0:自動(dòng)提交;1:手動(dòng)提交拿走job_batch_noBIGINTDEFAULT0COMMENT'job運(yùn)行批次號(hào)',PRIMARYKEY(job_instance_id),INDEXjob_run_host等待任務(wù)存放等待運(yùn)行的job,標(biāo)記出是沒資源,還是父任務(wù)未全部完成DROPTABLEIFEXISTSdmp_waitting_job;CREATETABLEdmp_waitting_job(job_instance_idBIGINTNOTNULL,job_idINTNOTNULL, datetimeNOTNULLCOMMENT'記錄創(chuàng)建時(shí)間',job_business_timeVARCHAR(20)COMMENT'job運(yùn)行業(yè)務(wù)日期',job_wait_flagINTNOTNULLCOMMENT0:沒有資源;1:父任務(wù)未全部完成',job_submit_flagINTNOTNULLDEFAULT0COMMENT0:自動(dòng)提交;1:手動(dòng)提交job_batch_noBIGINTDEFAULT0COMMENTjob運(yùn)行批次號(hào)',PRIMARYKEY(job_instance_id) droptableifexistsdmp_seq;createtabledmp_seq( VARCHAR(50)NOTNULLCOMMENT'序列名稱', NOTNULLCOMMENT'當(dāng)前值', NOTNULL DEFAULT1COMMENT步長(zhǎng)(跨度)',PRIMARYKEY(seq_name)INSERTINTOdmp_seq(seq_name,current_val)INSERTINTOdmp_seq(seq_name,current_val)VALUES('job_instance_id',25000);INSERTINTOdmp_seq(seq_name,current_val)VALUES('job_batch_no',1200);DELIMITERcreatefunctioncurrval(v_seq_nameVARCHAR(50))returnsintegerdeclarevalueinteger;setvalue=0;selectcurrent_valintovaluefromdmp_seqwhereseq_name=v_seq_name;returnvalue;DELIMITERCREATEfunctionnextval(v_seq_nameVARCHAR(50))returnsintegerupdatesetcurrent_val=current_val+increment_valwhereseq_name=v_seq_name;returncurrval(v_seq_name);DELIMITERcreatefunctionsetval(v_seq_nameVARCHAR(50),v_new_valupdatesetcurrent_val=whereseq_name=v_seq_name;returncurrval(v_seq_name);Job狀態(tài)視CREATEorreplaceviewv_job_status1selecta.job_id,nullas'WAITTING'asjob_status,nullasjob_start_time,nullasjob_end_time,nullasjob_run_log,1asfromdmp_waitting_jobaunionallselectb.job_id,nullasjob_wait_flag,2asodrfromdmp_job_logbunionallselectnullasjob_wait_flag,3asodrfromdmp_running_jobCREATEorreplaceviewv_job_statusSELECTa.*,b.job_name,b.job_type,b.job_business_typeFROMv_job_status1ajoindmp_jobbON(a.job_id=DROPTABLEIFEXISTSdmp_user;CREATETABLEdmp_user(usernameVARCHAR(100)NOTNULL,createtimeDATETIMENOTNULL,user_roleVARCHAR(100),PRIMARYKEY(username)業(yè)務(wù)類型配置DROPTABLEIFEXISTSdmp_job_buseinss_type;CREATETABLEdmp_job_buseinss_type(job_business_typeVARCHAR(100)NOTNULL,user_nameVARCHAR(100)NOTNULLCOMMENT業(yè)務(wù)類型使用的用戶名',hadoop_resource_poolVARCHAR(100)COMMENT'hadoop資源池',PRIMARYKEY資源健康狀態(tài)DROPTABLEIFEXISTSdmp_resource_healthy;CREATETABLEdmp_resource_healthy( VARCHAR(100NOTNULLCOMMENT主機(jī)名last_update_timedatetimeCOMMENT'上次心跳時(shí)間',PRIMARYKEY(hostname,flag)四、的RPChostname和端JobClientjc=JobClient.getInstance("lxw-PC",擁有JobManager的RPC,將用戶提交的操作通過RPC調(diào)用JobManagerJobJobJob依賴關(guān)系;Job信息,包括指定條件查詢,如狀態(tài),JobIDJob五、JobManagerJobManagerRPCServerJobClientJobClientRPCJobJobJobIDJobJob,獲JobIDJob;Job依賴關(guān)系接口添加刪除Job依賴查詢Job的父子依賴JobJobManager,添加、修改、刪除資源,獲取資源列數(shù)據(jù)庫管理服使用數(shù)據(jù)庫池資源管理服ResourceManagerJob資源包括:主機(jī)名/IPJob資源資源配置收到資源請(qǐng)求之算得出合適的資申請(qǐng)資返回資申請(qǐng)資返回資從上面獲取的節(jié)點(diǎn)中取(max_job_count–running_job_count)>0,并按照–Job數(shù)量資源流程資資資源配置job_typeJob依賴Neo4j當(dāng)Job的依賴關(guān)系發(fā)生變化時(shí),需要在Neo4j中做相應(yīng)的定時(shí)調(diào)度JobJobJobJob 超時(shí)未成功執(zhí)行的Job,觸發(fā)告警(可依靠Quartz定時(shí)觸發(fā) 正在運(yùn)行的Job列表,當(dāng)Job長(zhǎng)時(shí)間未更新時(shí),做相應(yīng)處理 待運(yùn)行Job隊(duì)列,并嘗試提交 任務(wù)池,從任務(wù)池中刪除被拿走的告提供告務(wù),目前只提供郵件告初始化流Neo4jjobQuartz啟動(dòng)流Neo4jQuartz啟動(dòng)Job線程成功Job處理流Job獲取該Job的一級(jí)子Job,分別檢查子Job的其他父Job,如果父Job全部完成,則提交該Job運(yùn)行;如果有父Job未完成,則將該Job加入因前置Job未全部完成而Job隊(duì)列失敗Job處理流Job六、JobWorker內(nèi)存數(shù)據(jù)結(jié)JobExecutor定期從獲取可以運(yùn)行的Job執(zhí)行JobJobExecutorJob七、流程Job流(JobManagerJob配置內(nèi)存數(shù)據(jù)結(jié)Job配置內(nèi)存數(shù)據(jù)結(jié)是是否定時(shí)任YN結(jié)(JobManager內(nèi)存數(shù)據(jù)結(jié)Y返內(nèi)存數(shù)據(jù)結(jié)Y返回錯(cuò)是是否定時(shí)任YN從Job配置表刪結(jié)從Quartz中刪Job依賴流Job(JobManagerNNJobJob添加至Job(JobManager刪除依 YYJobJob依賴配置中刪結(jié)從neo4j中刪資源流(JobManager添加、修改資資資源是否存YN資源配置表改結(jié)(JobManager刪除資資資源配置表除結(jié)Job提交流Job自動(dòng)提交(定時(shí)觸發(fā)和依賴觸發(fā)依賴觸發(fā)NJobNYN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年離職創(chuàng)業(yè)人員權(quán)益保障協(xié)議版B版
- 2024年中國(guó)射擊計(jì)時(shí)顯示牌市場(chǎng)調(diào)查研究報(bào)告
- 竹子課程設(shè)計(jì)案例
- 北京2025年北京順義區(qū)教委所屬事業(yè)單位面向應(yīng)屆生招聘教師300人筆試歷年典型考點(diǎn)(頻考版試卷)附帶答案詳解
- 2025年強(qiáng)振加速度儀合作協(xié)議書
- 2025至2030年中國(guó)33-二甲基丙烯酸行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024年貨物運(yùn)輸保險(xiǎn)費(fèi)用協(xié)議
- 油田污水處理課程設(shè)計(jì)
- 2025年度程海流域水資源節(jié)約與循環(huán)利用合同3篇
- 2025至2030年中國(guó)采摘機(jī)械行業(yè)投資前景及策略咨詢研究報(bào)告
- 錨桿密實(shí)度檢測(cè)
- 跳繩興趣小組活動(dòng)總結(jié)
- 文物保護(hù)項(xiàng)目加固工程監(jiān)理細(xì)則
- 肋骨骨折查房演示
- 五年級(jí)語文備課組工作總結(jié)三篇
- 浙江農(nóng)林大學(xué)土壤肥料學(xué)
- “戲”說故宮智慧樹知到答案章節(jié)測(cè)試2023年中央戲劇學(xué)院
- 四大名著《西游記》語文課件PPT
- 三年級(jí)道德與法治下冊(cè)第一單元我和我的同伴教材解讀新人教版
- 紅星照耀中國(guó)思維導(dǎo)圖
- YY/T 0506.8-2019病人、醫(yī)護(hù)人員和器械用手術(shù)單、手術(shù)衣和潔凈服第8部分:產(chǎn)品專用要求
評(píng)論
0/150
提交評(píng)論