SkyNet任务调度监控系统-概要设计_第1页
SkyNet任务调度监控系统-概要设计_第2页
SkyNet任务调度监控系统-概要设计_第3页
SkyNet任务调度监控系统-概要设计_第4页
SkyNet任务调度监控系统-概要设计_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

调度监控系统 (图一)002876942.1SkyNet核心功能6.任务失败告警:当任务失败或者某个时间点未成功结束时,触发邮件和短信报警;ub8.可扩展性:Slave(JobWorker)可根据需要随时扩充;2.2SkyNet核心组件tATEDATABASEskynetDEFAULTCHARACTERSETutfCOLLATEutfgeneralci3.1Job配置表DROPTABLEIFEXISTSdmp_job;CREATETABLEdmp_job(job_idINTNOTNULL,job_create_timeDATETIMENOTNULL,job_last_update_timeDATETIMENOTNULL,job_namejob_typeVARCHAR(200)NOTNULL,HIVEMRJAVAetcjob_app_locationjob_class_namejob_run_argsjob_run_cronVARCHAR(500)NOTNULLCOMMENT'JOB程序文件路径',VARCHAR(200)COMMENT'JOB类名',VARCHAR(500)COMMENT'JOB运行参数',VARCHAR(20)COMMENT'JOB定时运行quartz表达式',NOTNULLCOMMENTJOBDAPUTetcjob_commentjob_periodVARCHAR(4000)COMMENT'JOB备注信息',INTDEFAULT0COMMENT'JOB运行周期,0:天,1:小时',job_special_hostVARCHAR(100)COMMENT'JOB指定运行的HOST',job_business_timeVARCHAR(50)COMMENT'JOB业务日期格式',job_retry_cntINTDEFAULT0COMMENT'失败重试次数',job_retry_intervalINTDEFAULT60COMMENT'失败重试间隔(秒)',job_final_commandVARCHAR(500)COMMENT'任务完成后执行命令',PRIMARYKEY(job_id))ENGINE=InnoDBDEFAULTCHARSET=utf8;3.2Job依赖配置表DROPTABLEIFEXISTSdmp_job_dependence;CREATETABLEdmp_job_dependence(parent_job_idINTNOTNULL,son_job_idINTNOTNULL,PRIMARYKEY(parent_job_id,son_job_id))ENGINE=InnoDBDEFAULTCHARSET=utf8;3.3Job运行历史表DROPTABLEIFEXISTSdmp_job_log;CREATETABLEdmp_job_log(job_instance_idBIGINTNOTNULL,job_idINTNOTNULL,create_timedatetimeNOTNULLCOMMENT'记录创建时间',job_run_hostVARCHAR(50)NOTNULLCOMMENT'job运行主机',job_statusVARCHAR(20)NOTNULLCOMMENT'job运行状态',job_business_timeVARCHAR(20)COMMENT'job运行业务日期',job_start_timedatetimeCOMMENT'job开始运行时间',job_end_timedatetimeCOMMENT'job运行结束时间',job_run_logVARCHAR(200)COMMENT'job运行日志文件',jobsubmitflagINTCOMMENTjob提交标记,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`(`job_status`))ENGINE=InnoDBDEFAULTCHARSET=utf8;3.4资源配置表DROPTABLEIFEXISTSdmp_resource_config;CREATETABLEdmp_resource_config(hostnameVARCHAR(100)NOTNULLCOMMENT'主机名/IP',job_typeVARCHAR(50)NOTNULLCOMMENT'可运行的JOB类型',max_job_countINTNOTNULLCOMMENT'该类型可运行的最大任务数',running_job_countINTCOMMENT'表示已分配出去的任务数',is_specialINTdefault0comment'是否特定的资源',PRIMARYKEY(hostname,job_type))ENGINE=InnoDBDEFAULTCHARSET=utf8;3.5告警配置表DROPTABLEIFEXISTSdmp_alarm_config;CREATETABLEdmp_alarm_config(job_idalarm_flagalarm_timeHH:mm:ss',alarm_typeINTNOTNULL,VARCHAR(20)COMMENT'当alarm_type=1时,设定告警时间,格式为:alarm_mail_listVARCHAR(2000)COMMENT'邮件告警收件人列表,分号分隔',alarm_mobile_listVARCHAR(2000)COMMENT'短信告警收信人手机号列表,分号分隔',PRIMARYKEY(job_id,alarm_flag))ENGINE=InnoDBDEFAULTCHARSET=utf8;3.6告警发送记录表DROPTABLEIFEXISTSdmp_alarm_log;CREATETABLEdmp_alarm_log(job_idINTNOTNULL,alarm_timedatetimeNOTNULLCOMMENT'告警时间',)ENGINE=InnoDBDEFAULTCHARSET=utf8;DROPTABLEIFEXISTSdmp_running_job;CREATETABLEdmp_running_job(job_instance_idBIGINTNOTNULL,job_idINTNOTNULL,create_timedatetimeNOTNULLCOMMENT'记录创建时间',job_last_update_timedatetimeNOTNULLCOMMENT'上次更新状态的时间',job_run_hostVARCHAR(50)NOTNULLCOMMENT'job运行主机',job_statusVARCHAR(20)NOTNULLCOMMENT'job运行状态',job_business_timeVARCHAR(20)COMMENT'job运行业务日期',job_start_timedatetimeCOMMENT'job开始运行时间',job_end_timedatetimeCOMMENT'job运行结束时间',job_run_logVARCHAR(200)COMMENT'job运行日志文件',flagINTNOTNULLDEFAULTCOMMENTjob_batch_noBIGINTDEFAULT0COMMENT'job运行批次号',PRIMARYKEY(job_instance_id))ENGINE=InnoDBDEFAULTCHARSET=utf8;3.8任务池表DROPTABLEIFEXISTSdmp_job_pool;CREATETABLEdmp_job_pool(job_instance_idBIGINTNOTNULL,job_idINTNOTNULL,create_timedatetimeNOTNULLCOMMENT'记录创建时间',job_run_hostVARCHAR(50)NOTNULLCOMMENT'job运行主机',job_business_timeVARCHAR(20)COMMENT'job运行业务日期',job_actionINTNOTNULLDEFAULT0COMMENT'0:运行任务;1:kill任务',flagINTNOTNULLDEFAULTCOMMENT拿走',job_batch_noBIGINTDEFAULT0COMMENT'job运行批次号',PRIMARYKEY(job_instance_id),INDEXjob_run_host(job_run_host))ENGINE=InnoDBDEFAULTCHARSET=utf8;3.9等待任务表存放等待运行的job,标记出是没资源,还是父任务未全部完成DROPTABLEIFEXISTSdmp_waitting_job;CREATETABLEdmp_waitting_job(job_instance_idBIGINTNOTNULL,job_idINTNOTNULL,create_timedatetimeNOTNULLCOMMENT'记录创建时间',job_business_timeVARCHAR(20)COMMENT'job运行业务日期',job_wait_flagINTNOTNULLCOMMENT'0:没有资源;1:父任务未全部完成',flagINTNOTNULLDEFAULTCOMMENTjob_batch_noBIGINTDEFAULT0COMMENT'job运行批次号',PRIMARYKEY(job_instance_id))ENGINE=InnoDBDEFAULTCHARSET=utf8;3.10序列表--------实现序列的功能droptableifexistsdmp_seq;createtabledmp_seq(seq_nameVARCHAR(50)NOTNULLCOMMENT'序列名称',current_valBIGINTNOTNULLCOMMENT'当前值',increment_valINTNOTNULLDEFAULT1COMMENT'步长(跨度)',PRIMARYKEY(seq_name)INSERTINTOdmp_seq(seq_name,current_val)VALUES('job_id',1000);INSERTINTOdmp_seq(seq_name,current_val)VALUES('job_instance_id',25000);INSERTINTOdmp_seq(seq_name,current_val)VALUES('job_batch_no',1200);DELIMITER$createfunctioncurrval(v_seq_nameVARCHAR(50))rnsintegerdeclarevalueinteger;setvalue=0;selectcurrent_valintovaluefromdmp_seqwhereseq_name=v_seq_name;rnvalueDELIMITER$CREATEfunctionnextval(v_seq_nameVARCHAR(50))urnsintegerupdatedmp_seqsetcurrent_val=current_val+increment_valwhereseq_name=v_seq_name;returncurrval(v_seq_name);DELIMITER$createfunctionsetval(v_seq_nameVARCHAR(50),v_new_valINTEGER)urnsintegerupdatedmp_seqsetcurrent_val=v_new_valwhereseq_name=v_seq_name;returncurrval(v_seq_name);3.11Job状态视图CREATEorreplaceviewv_job_status1selecta.job_id,a.job_instance_id,a.create_time,nullasjob_run_host,'WAITTING'asjob_status,a.job_business_time,nullasjob_start_time,nullasjob_end_time,nullasjob_run_log,a.job_submit_flag,a.job_wait_flag,fromdmp_waitting_jobaionallselectb.job_id,b.job_instance_id,eatetimeb.job_run_host,usb.job_business_time,b.job_start_time,b.job_end_time,b.job_run_log,b.job_submit_flag,nullasjob_wait_flag,2asodrfromdmp_job_logbionallselectc.job_id,c.job_instance_id,c.create_time,c.job_run_host,cjobstatus,c.job_business_time,c.job_start_time,c.job_end_time,c.job_run_log,c.job_submit_flag,nullasjob_wait_flag,3asodrfromdmp_running_jobc;CREATEorreplaceviewv_job_statusSELECTa.*,b.job_name,b.job_type,b.job_business_typeFROMv_job_status1ajoindmp_jobbON(a.job_id=b.job_id);3.12用户表DROPTABLEIFEXISTSdmp_user;CREATETABLEdmp_user(usernameVARCHAR(100)NOTNULL,passwordVARCHAR(100)NOTNULL,createtimeDATETIMENOTNULL,user_roleVARCHAR(100),TJOBDAPUTetcPRIMARYKEY(username))ENGINE=InnoDBDEFAULTCHARSET=utf8;3.13业务类型配置表DROPTABLEIFEXISTSdmp_job_buseinss_type;CREATETABLEdmp_job_buseinss_type(job_business_typeVARCHAR(100)NOTNULL,user_nameVARCHAR(100)NOTNULLCOMMENT'业务类型使用的用户名',hadoop_resource_poolVARCHAR(100)COMMENT'hadoop资源池',PRIMARYKEY(job_business_type))ENGINE=InnoDBDEFAULTCHARSET=utf8;3.14资源健康状态表DROPTABLEIFEXISTSdmp_resource_healthy;CREATETABLEdmp_resource_healthy(hostnameVARCHAR(100)NOTNULLCOMMENT'主机名/IP',last_update_timedatetimeCOMMENT'上次心跳时间',flagINTDEFAULT0COMMENT'0:jobworker,1:jobmanager',PRIMARYKEY(hostname,flag))ENGINE=InnoDBDEFAULTCHARSET=utf8;ClientgetInstancelxwPC3.拥有JobManager的RPC代理,将用户提交的操作通过RPC调用5.2数据库管理服务类表:5.3资源管理服务资源包括:主机名/IP,可运行的任务类型,最大运行的任务数量;资源申请流程:当Job的依赖关系发生变化时,需要在Neo4j中做相应的维护;JJobManager请资源ResourceManager返回资源收到资源请求之后从资源配置表中计算得出合适的资源资源配置表obJob✓从上面获取的节点中取(max_job_count–running_job_count)>0,并按照(max_job_count–running_job_count)降序排列,取第一条记录;✓如果有返回主机名,表示有资源,则将该资源已分配Job数量+1;✓如果没有记录返回,则表示没有资源,返回null;资源释放流程:JJobManager释放资源ResourceManager更新资源配置表中相应的资源数资源配置表5.4Job依赖关系维护eojService5.5定时调度器vice5.6Job监控监控超时未成功执行的Job,触发告警(可依靠Quartz定时触发);5.7告警服务提供告警服务,目前只提供邮件告警服务5.8初始化流程5.9启动流程初始化;启动jobManagerRPCServer;registerShutdownHook;启动Neo4j服务线程;启动Quartz服务线程;启动Job监控线程;更新Job状态;Job更新Job状态;告警;正在运行的JobExecutor列表;6.2定期从获取可以运行的Job定期从任务池获取可以运行的Job定期汇总各个Job状态,并更新;JobJobExecutorJob7.1Job维护流程添加、修改JobJobClient(JobManagerProxy)添加、修改JobJobManagerJob配置表维护内存数据结构neo4j是否定时任务Y添加至Quartz调度器N结束删除JobJobClient(JobManagerProxy)删除JobJobManagerY返回错误是否有依赖JobN维护内存数据结构neo4j是否定时任务Y从Quartz中删除N从Job配置表中删除7.2Job依赖维护流程添加Job依赖JobClientNJobManagerNJobYJob配置表oj删除Job依赖JobClientgerProxy删除依赖JobManagerY子Job是否被依赖N从neo4j中删除Job依赖配置表7.3资源维护流程添加、修改资源JoJobClient添加、修改资源JobManagerN加改Y删除资源JJobClient(JobManagerProxy)删除资源JobManager资源配置表删除结束7.4Job提交流程Job自动提交(定时触发和依赖触发)JobMonitorJobMonitorQuartzScheduler依赖触发定时调度询检查JobManager是否有同一业运行和等待N父任务是否全Y有资源Y池标记出是没有资源还是父任完成Y不允许多次提交NNJob手动提交(由JobClient提交)JobClientJobMonitor再次提交手动提交JobManagerY同一业务时间不允许多次提交轮询检查标记出是没有资源N是否有同一业务时间的job在运行和等待N是否有资源Y任务池7.5Job执行流程正在运行正在运行Job表汇总各个Job执行状态更新正在运行的Job表JobWorkerN是否获取到JobYACTION类型维护内存数据结构JobExecutorJobExecutor维护内存数据结构KillJobExecutorKILLJOB定时获取任务池7.6Job监控流程监控任务池任务池删除已标记为拿走的记录定期扫描JobMonitor监控等待运行的Job等等待运行Job表定时扫描JobMonitorN是否父任务未完成而等待YY从等待表中删除检查父Job是否全部完成Y是否有资源Y任务池NN监控正在运行的Job扫描从运行表中删除JobMonitor从运行表中删除状态为结束状态的b是否需要报警N任务池任务池job告警发送记录长时间未更新的b放入任务池JobAlarmY8.1安装解压skynet.tar.gz解压后目录结构:skynet/conf/##配置文件bin/##执行脚本libjar包SkyNet.jar##SkyNet核心jar包8.2数据库建库建表建库:ATEDATABASEskynetDEFAULTCHARACTERSETutfCOLLATEutfgeneralci赋权:GRANTALLPRIVILEGESONskynet.*TO'skynet'@'localhost'IDENTIFIEDBY'password'WITHGRANTOPTION;flushprivileges;建表:见第三章,Job元数据中建表脚本8.3配置conf/pertiescp数据库链接池。conf/pertiesconf/pertiesJobManager配置文件。✓job_manager_rpc_host=//JobManagerRPC运行主机ip✓job_manager_rpc_port=2234//JobManagerRPC运行端口号✓job_monitor_scan_period=10//JobMonitor扫描数据库时间间隔conf/pertiesobWorker✓job_worker_scan_period=5//JobWorker线程扫描数据库间隔,单位:秒✓job_log_dir=/usr/local/skynet/logs//JobWorker记录的日志路径✓job_worker_jetty_port=9911//JobWorker中Jetty服务端口号,用于查✓job_working_directory

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论