skynet任務調度監(jiān)控系統(tǒng)-概要設計_第1頁
skynet任務調度監(jiān)控系統(tǒng)-概要設計_第2頁
skynet任務調度監(jiān)控系統(tǒng)-概要設計_第3頁
skynet任務調度監(jiān)控系統(tǒng)-概要設計_第4頁
skynet任務調度監(jiān)控系統(tǒng)-概要設計_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

修改記更新時版修訂修改內初始創(chuàng)元數(shù)據(jù)一、設計目 二、整體架 SkyNet功 SkyNet組 三、Job元數(shù) Job配置 Job依賴配置 Job運行歷史 任務池 序列 Job狀態(tài)視 用戶 四、 五、JobManager Job依賴關系 Job告 啟動流 成功Job處理流 失敗Job處理流 六、JobWorker 執(zhí)行 七、流程 Job流 Job依賴流 資源流 Job提交流 Job執(zhí)行流 Job流 八、SkyNet部署與運 安 配 運 停 九、SkyNet前端部署與運 安 配 運 一、設計目目前整個數(shù)據(jù)平臺的任務調度非常粗糙基本僅靠Crontab來定時運務出錯的造成分析數(shù)據(jù)不入庫導致線上BUG。(圖一定時觸發(fā)一個日志校驗的Job,去檢查后的日志是否已經就JOBJobJob執(zhí)行成Job1-4;JOB1JOB1JOB2JOB全JOB1;JOB2JOB3JOB4有一個未成功執(zhí)JOB2就不執(zhí)行;7723098,,1654為了解決數(shù)據(jù)平臺ETL任務的穩(wěn)定性時效性因此設計開發(fā)SkyNet任務調度系統(tǒng)旨在解決任務的配置調度告警等功能,減少開發(fā)的開發(fā)和成本,提高平臺的穩(wěn)定性。,,1654二、整體架SkyNet功Job:添加、修改、刪除、殺死Job依賴關系:添加、修改、刪除Job之間的依賴關系JobJobJob資源:添加、修改、刪除資源,查詢資源列表Job任務失敗告警:當任務失敗或者某個時間點未成功結束時,觸發(fā)郵件和支持任務類型包括 、python、MapReduce、Hive、DataHub任務的調度及SkyNet組JobClient:SkyNetJobManager:SkyNetMasterRPCJobClient提交的所有操作與元數(shù)據(jù)庫通訊Job元數(shù)據(jù)負責任務的配置、觸發(fā)、調度、;JobMonitor:正在運行的Job狀態(tài)、任務池、等待運行的JobWorker:SkyNetSlave,從任務池中獲取Job、負責啟動并收集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運行參數(shù)', VARCHAR(20)COMMENT'JOB定時運行quartz表達式', VARCHAR(4000)COMMENT'JOB備注信息', INTDEFAULT0COMMENT'JOB運行周期,0:天,1:小時',job_special_hostVARCHAR(100)COMMENT'JOBHOST',job_business_timeVARCHAR(50)COMMENT'JOB業(yè)務日期格式', INTDEFAULT0COMMENT失敗重試次數(shù)job_retry_intervalINTDEFAULT60COMMENT失敗重試間隔(秒mandVARCHAR(500)COMMENT任務完成后執(zhí)行命令',PRIMARYKEY(job_id)Job依賴配置DROPTABLEIFEXISTSdmp_job_dependence;CREATETABLEdmp_job_dependence(parent_job_idINTNOTNULL,son_job_idINTNOTNULL,PRIMARYKEYJob運行DROPTABLEIFEXISTSdmp_job_log;CREATETABLEdmp_job_log(job_instance_idBIGINTNOTNULL, INTNOTNULL, datetimeNOTNULLCOMMENT'記錄創(chuàng)建時間',job_run_hostVARCHAR(50)NOTNULLCOMMENTjob運行主機',job_statusVARCHAR(20)NOTNULLCOMMENT'job運行狀態(tài)',job_business_timeVARCHAR(20)COMMENT'job運行業(yè)務日期',job_start_timedatetimeCOMMENT'job開始運行時間',job_end_timedatetimeCOMMENT'job運行結束時間',job_run_logVARCHAR(200)COMMENT'job運行日志文件',job_submit_flagINTCOMMENT'job提交標記,0:自動;1:手動',job_batch_noBIGINTDEFAULT0COMMENT'job運行批次號',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主機名job_typeVARCHAR(50)NOTNULLCOMMENTJOB類型max_job_countINTNOTNULLCOMMENT該類型可運行的最大任務數(shù)',running_job_countINTCOMMENT'表示已分配出去的任務數(shù)',is_specialINTdefault0comment是否特定的資源',PRIMARYKEY(hostname,job_type)告警配置DROPTABLEIFEXISTSdmp_alarm_config;CREATETABLEdmp_alarm_config( INTNOTalarm_flagINTNOTNULLDEFAULT0COMMENT'0:失敗告警,1:指定時間未成功結束告警;',alarm_timeVARCHAR(20)COMMENT當alarm_type=1時,設定告警時間,格式為: INTNOTNULLDEFAULT0COMMENT'0:郵件告警,1:告警,2:郵件和告 VARCHAR(2000)COMMENT'郵件告警收件人列表,分號分隔',alarm_mobile_listVARCHAR(2000)COMMENT'告警收信人號列表,分號分隔',PRIMARYKEY(job_id,alarm_flag)告警發(fā)送記錄DROPTABLEIFEXISTSdmp_alarm_log;CREATETABLEdmp_alarm_log( INTNOT INTDEFAULT0COMMENT'0:失敗告警,1:指定時間未成功結束告警;',alarm_timedatetimeNOTNULLCOMMENT'告警時間',alarm_statusINTNOTNULLCOMMENT告警發(fā)送結果,0:成功,1:失敗jobjobDROPTABLEIFEXISTSdmp_running_job;CREATETABLEdmp_running_job(job_instance_idBIGINTNOTNULL, INTNOTNULL, datetimeNOTNULLCOMMENT記錄創(chuàng)建時間job_last_update_timedatetimeNOTNULLCOMMENT上次更新狀態(tài)的時間',job_run_hostVARCHAR(50)NOTNULLCOMMENT'job運行主機',job_statusVARCHAR(20)NOTNULLCOMMENT'job運行狀態(tài)',job_business_timeVARCHAR(20)COMMENT'job運行業(yè)務日期',job_start_timedatetimeCOMMENT'job開始運行時間',job_end_timedatetimeCOMMENT'job運行結束時間',job_run_logVARCHAR(200)COMMENT'job運行日志文件',job_submit_flagINTNOTNULLDEFAULT0COMMENT'0:自動提交;1:手動提交',job_batch_noBIGINTDEFAULT0COMMENT'job運行批次號',PRIMARYKEY任務池DROPTABLEIFEXISTSdmp_job_pool;CREATETABLEdmp_job_pool(job_instance_idBIGINTNOTNULL, INTNOTNULL, datetimeNOTNULLCOMMENT'記錄創(chuàng)建時間',job_run_hostVARCHAR(50)NOTNULLCOMMENT'job運行主機',job_business_timeVARCHAR(20)COMMENT'job運行業(yè)務日期',job_actionINTNOTNULLDEFAULT0COMMENT'0:運行任務;1:kill任務',job_submit_flagINTNOTNULLDEFAULT0COMMENT'0:自動提交;1:手動提交拿走job_batch_noBIGINTDEFAULT0COMMENT'job運行批次號',PRIMARYKEY(job_instance_id),INDEXjob_run_host等待任務存放等待運行的job,標記出是沒資源,還是父任務未全部完成DROPTABLEIFEXISTSdmp_waitting_job;CREATETABLEdmp_waitting_job(job_instance_idBIGINTNOTNULL,job_idINTNOTNULL, datetimeNOTNULLCOMMENT'記錄創(chuàng)建時間',job_business_timeVARCHAR(20)COMMENT'job運行業(yè)務日期',job_wait_flagINTNOTNULLCOMMENT0:沒有資源;1:父任務未全部完成',job_submit_flagINTNOTNULLDEFAULT0COMMENT0:自動提交;1:手動提交job_batch_noBIGINTDEFAULT0COMMENTjob運行批次號',PRIMARYKEY(job_instance_id) droptableifexistsdmp_seq;createtabledmp_seq( VARCHAR(50)NOTNULLCOMMENT'序列名稱', NOTNULLCOMMENT'當前值', NOTNULL DEFAULT1COMMENT步長(跨度)',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è)務類型配置DROPTABLEIFEXISTSdmp_job_buseinss_type;CREATETABLEdmp_job_buseinss_type(job_business_typeVARCHAR(100)NOTNULL,user_nameVARCHAR(100)NOTNULLCOMMENT業(yè)務類型使用的用戶名',hadoop_resource_poolVARCHAR(100)COMMENT'hadoop資源池',PRIMARYKEY資源健康狀態(tài)DROPTABLEIFEXISTSdmp_resource_healthy;CREATETABLEdmp_resource_healthy( VARCHAR(100NOTNULLCOMMENT主機名last_update_timedatetimeCOMMENT'上次心跳時間',PRIMARYKEY(hostname,flag)四、的RPChostname和端JobClientjc=JobClient.getInstance("lxw-PC",擁有JobManager的RPC,將用戶提交的操作通過RPC調用JobManagerJobJobJob依賴關系;Job信息,包括指定條件查詢,如狀態(tài),JobIDJob五、JobManagerJobManagerRPCServerJobClientJobClientRPCJobJobJobIDJobJob,獲JobIDJob;Job依賴關系接口添加刪除Job依賴查詢Job的父子依賴JobJobManager,添加、修改、刪除資源,獲取資源列數(shù)據(jù)庫管理服使用數(shù)據(jù)庫池資源管理服ResourceManagerJob資源包括:主機名/IPJob資源資源配置收到資源請求之算得出合適的資申請資返回資申請資返回資從上面獲取的節(jié)點中取(max_job_count–running_job_count)>0,并按照–Job數(shù)量資源流程資資資源配置job_typeJob依賴Neo4j當Job的依賴關系發(fā)生變化時,需要在Neo4j中做相應的定時調度JobJobJobJob 超時未成功執(zhí)行的Job,觸發(fā)告警(可依靠Quartz定時觸發(fā) 正在運行的Job列表,當Job長時間未更新時,做相應處理 待運行Job隊列,并嘗試提交 任務池,從任務池中刪除被拿走的告提供告務,目前只提供郵件告初始化流Neo4jjobQuartz啟動流Neo4jQuartz啟動Job線程成功Job處理流Job獲取該Job的一級子Job,分別檢查子Job的其他父Job,如果父Job全部完成,則提交該Job運行;如果有父Job未完成,則將該Job加入因前置Job未全部完成而Job隊列失敗Job處理流Job六、JobWorker內存數(shù)據(jù)結JobExecutor定期從獲取可以運行的Job執(zhí)行JobJobExecutorJob七、流程Job流(JobManagerJob配置內存數(shù)據(jù)結Job配置內存數(shù)據(jù)結是是否定時任YN結(JobManager內存數(shù)據(jù)結Y返內存數(shù)據(jù)結Y返回錯是是否定時任YN從Job配置表刪結從Quartz中刪Job依賴流Job(JobManagerNNJobJob添加至Job(JobManager刪除依 YYJobJob依賴配置中刪結從neo4j中刪資源流(JobManager添加、修改資資資源是否存YN資源配置表改結(JobManager刪除資資資源配置表除結Job提交流Job自動提交(定時觸發(fā)和依賴觸發(fā)依賴觸發(fā)NJobNYN

溫馨提示

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

評論

0/150

提交評論