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

下载本文档

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

文档简介

1、任务调度中心系统当前版本作者修改记录更新时间版本修订人修改内容目录一、设计目的3二、整体架构42.1 核心功能52.2 核心组件53、 Job元数据54、 JobClient55、 JobManager(Master)65.1 RPCServer65.2 数据库管理服务类65.3 资源管理服务75.4 Job依赖关系维护85.5 定时调度器85.6 Job监控85.7 告警服务85.8 初始化流程95.9 启动流程95.10 成功Job处理流程95.11 失败Job处理流程96、 JobWorker(Slave)96.1 内存数据结构96.2 定期从获取可以运行的Job106.3 执行Job1

2、07、 核心流程图107.1 Job维护流程107.2 Job依赖维护流程117.3 资源维护流程127.4 Job提交流程137.5 Job执行流程157.6 Job监控流程15八、后台部署与运行178.1 安装178.2 数据库建库建表178.3 配置178.4 运行188.5 停止18九、部署与运行189.1 安装189.2 配置189.3 运行19设计目的目前整个市场任务调度非常粗糙,基本仅靠Crontab来定时运行,日志清洗、日志校验、数据分析、入库各模块之间无有效依赖,经常由于前置任务出错或者未完成,后续的任务运行出错,并且对任务出错的监控不到位,造成分析数据不能及时入库,导致线上

3、BUG真实业务场景下合理的任务运行图:入库JOB1人岸J0B2(图一)1 .定时触发一个日志校验的Job,去检查清洗后的日志是否已经就绪;2 .分析的JOB均依赖日志校验的Job,一旦日志校验的Job执行成功,则并发启动依赖其的分析Job1-4;3 .入库JOB1依赖分析JOB1和分析JOB2如果这两个分析JOB全部执行成功,则启动执行入库JOB,4 .对于入库JOB2如果分析JOB3和分析JOB4有一个未成功执行,则入库JOB2就不执行;一个复杂的任务依赖图:9年-为了解决数据平台分配任务的稳定性,时效性,因此设计开发任务调度中心系统,旨在解决任务的统一配置,统一调度,统一监控告警等功能,减

4、少开发人员的开发和维护成本,提高平台的稳定性。整体架构JabClient|一位任*L£3E"v护牛2.1核心功能1 .Job维护:添加、修改、删除、杀死Job;2 .Job依赖关系维护:添加、修改、删除Job之间的依赖关系;3 .查询类:查询Job列表、根据状态查询Job列表、查询Job的父子依赖等;4 .资源维护:添加、修改、删除资源,查询资源列表;5 .Job触发:支持定时、依赖、手工触发调度Job;6 .任务失败告警:当任务失败或者某个时间点未成功结束时,触发邮件和短信报警;7 .支持任务类型包括:shell、python、MapReduce>Hive、Data

5、Hub任务的调度及监控;8 .可扩展性:Slave(JobWorker)可根据需要随时扩充;9 .2核心组件1. 元数据库:Mysql,保存Job的配置、依赖关系、运行历史、资源配置、告警配置等;2. JobClient客户端类,对外的唯一接口;3. JobManager:Master,提供RPC服务,接收并处理JobClient提交的所有操作;与元数据库通讯,维护Job元数据;负责任务的统一配置维护、触发、调度、监控;4. JobMonitor:监控正在运行的Job状态、监控任务池、监控等待运行的Job;5. JobWorker:Slave从任务7tk中获取Job、负责启动并收集Job的执行

6、状态,以心跳方式发送给JobManager;以上各组件下文中详细介绍。三、Job元数据元数据存储于Mysql。四、JobClient1 .用户与系统交互的唯一接口;2 .封装提供给用户使用的所有接口,单例模式,使用时候指定JobManager的RPChostnamef口端口号;3 .拥有JobManager的RPC代理,将用户提交的操作通过RPC调用JobManager的相应接口进行处理;4 .提供的接口包括:操作Job,包括增加,修改,删除,运行,杀死Job等;维护Job依赖关系;配置、查询资源;查询Job信息,包括指定条件查询,如状态,JoblD,时间等;查询Job依赖;五、JobMana

7、ger(Master)任务调度中心系统的Master节点,负责所有任务的调度,分发,状态跟踪,报警,资源管理等。5.1 RPCServerJobManager自身为一个RPCServer为JobClient提供调用接口;为JobClient提供的RPCS口:Job操作类接口:保存Job,根据JobID获取Job,获取所有Job,获取新的JobID,删除JobJob依赖关系维护接口:添加、删除Job依赖,查询Job的父子依赖;查询类接口;查询正在运行的Job,查询Job的历史运行,查询一个时间段内的Job等;维护类接口:停止JobManager,添加、修改、删除资源,获取资源列表;5.2 数据库

8、管理服务类JobStoreManager,封装所有与元数据库通讯的接口,用于Job元数据的持久化和查询。使用数据库链接池;接口列表:dic.n.,jfti'Llk.k.drflipajkj*niet!pciMitei£escperfllO'r*©JobStoisMdra#gfei 1lagLogger priiJ_lu;,aiiuq二 jdlx:WBCHelpr 'JobSTOreMarisg&rO getlnstanie(._L21._uFurjucf addJob(Job):山小 updateJd'b(Jdb):bdoleanse

9、leclUcibByttXimU二0b sel«lLA.ll-tab*4)le:| deleteJobtinl)winaddJtitiDependence(intPmt):ic、dddJobdependences(String|)曰111 selectAllJobDependerbcesO-二二二:一 deleteJobDependencefint,int)b爪I,.1. seletIMaxJoblmtdnceldfl:Lt. dddResonii(ce(Strii>g,String,iflt).'.:1“pdateRescMjrce(String,"Stri

10、ng,intilcjn drieteiR«ourcetring,Stringjbeu41 getAIIRewmrcesO1-“:一5.3 资源管理服务ResourceManager,负责Job资源的计算和分配;资源包括:主机名/IP,可运行的任务类型,最大运行的任务数量;初始化将资源配置表中已分配的Job数全部设为0;资源申请流程:资源配置表V根据Job类型,首先从资源配置表中获取可以运行该类型Job的节点、最多可运行的Job数量、已分配出去的Job数量;从上面获取的节点中取(max_job_count-running_job_count)>0,并按照(max_job_coun

11、trunning_job_count)降序NE歹U,取第条t己录;如果有返回主机名,表示有资源,则将该资源已分配Job数量+1;返回主机名;如果没有记录返回,则表示没有资源,返回null;资源释放流程:JobManager释放资源ResourceManager资源配置表更新资源配置表中相应的资源数Job数量-1;根据传入的hostname和job_type,将资源配置表中该记录已分配5.4 Job依赖关系维护Neo4jService使用Neo4j保存任务的依赖关系,供查询使用;当Job的依赖关系发生变化时,需要在Neo4j中做相应的维护;5.5 定时调度器QuartzService维护定时运行

12、的Job,当Job到达任务触发时间时,提交Job运行;5.6 Job监控监控超时未成功执行的Job,触发告警(可依靠Quartz定时触发);监控正在运行的Job列表,当Job长时间未更新时,做相应处理;监控待运行Job队列,并尝试提交Job;监控任务池,从任务池中删除被拿走的Job;5.7 告警服务提供告警服务,目前只提供邮件告警服务5.8 初始化流程获取RPChost&port从配置文件conf/master.xml中获取;构建RPCServer初始化Neo4j服务;从数据库中初始化加载所有Job;从数据库中初始化job依赖;初始化资源管理服务;构建Quartz服务;5.9 启动流程

13、初始化;启动jobManagerRPCServer;registerShutdownHook;启动Neo4j服务线程;启动Quartz服务线程;启动Job监控线程;5.10 成功Job处理流程更新Job状态;获取该Job的一级子Job,分别检查子Job的其他父Job,如果父Job全部完成,则提交该Job运行;如果有父Job未完成,则将该Job加入因前置Job未全部完成而等待运行的Job队列5.11 失败Job处理流程更新Job状态;六、JobWorker(Slave)6.1内存数据结构正在运行的JobExecutor歹U表;6.2 定期从获取可以运行的Job定期从任务池获取可以运行的Job定期

14、汇总各个Job状态,并更新;6.3 执行JobJob执行日志;根据Job类型,构建相应的JobExecutor,执行并收集七、核心流程图7.1 Job维护流程添加、修改Job删除Job7.2Job依赖维护流程添加Job依赖删除Job依赖7.3资源维护流程添加、修改资源U删除资源7.4Job提交流程JobClient(JobManagerProxy)添加、修改资源JobManagerJob自动提交(定时触发和依赖触发)Job手动提交(由JobClient提交)Y任务池7.5 Job执行流程正在运行Job表汇总各个Job执行状态更新正在运行的Job表JobWorker定时获取任务池Job,&quo

15、t;-标,己Job已拿走内部心跳汇报Job执行状态KILLJOBACTION运彳亍JOB维护内存数据结构启动JobExecutor维护内存数据结构KillJobExecutor标己Job已拿走JobExecutor7.6 Job监控流程监控任务池任务池定期1描删除已标记为拿走的记录JobMonitor监控等待运行的Job定时扫描从等待表中删除是否有资源任务池等待运行Job表JobMonitor是否父任务未完成而等待Job是否一全部完成监控正在运行的Job八、后台部署与运行8.1 安装解压解压后目录结构:conf/#配置文件bin/#执行脚本lib/#第三方jar包Manager.jar#赧心j

16、ar包8.2 数据库建库建表库权表建赋建8.3 配置conf/pertiesc3p0数据库链接池。conf/perties发送告警邮件配置。/JobWorker线程扫描数据库间隔,单位:秒/JobWorker记录的日志路径/JobWorker中Jetty服务端口号,用于查看conf/pertiesJobManager配置文件。job_manager_rpc_host=job_manager_rpc_port=2234job_monitor_scan_period=10conf/pertiesJobWork

17、er配置文件。job_worker_scan_period=5job_log_dir=/usr/local/skynet/logsjob_worker_jetty_port=9911/JobManagerRPC运行主机ip/JobManagerRPC运行端口号/JobMonitor扫描数据库时间间隔Job运行日志/job执行工作目录,各用户必须有可读写job_working_directory=/tmp/skynet/权限,chmod-R777/tmp/skynetbin/net.sh配置exportJAVA_HOME=/usr/local/jre1.7.0_67bin/monitor-net

18、.sh系统监控脚本。配置exportJAVAHOME=/usr/local/jre1.7.067配置maillist=liu.xiaowen开放相关端口访问权限job_manager_rpc_port、job_worker_jetty_port配置环境变量NET_HOME,JAVA_HOME数据库中配置初始数据dmp_job_buseinss_typedmp_resource_configdmp_user/业务类型资源用户、用于前端页面登陆和权限控制运行JobManagerbin/net.shstartjm启动后,在net/下产生运行JobWorkerbin/net.shstartjw启动后,

19、在net/下产生运行系统监控脚本bin/monitor-net.sh启动后,在net/下产生jm.log日志文件jw.log日志文件monitor.log日志文件(5分钟刷新一次)8.4运行8.5停止停止JobWorkerbin/net.shstopjw停止JobManagerbin/net.shstopjm/会将JobManager和系统监控(monitor-net.sh)一起停止九、部署与运行9.1 安装将net.war拷贝至$TOMCAT_HOME/webapps/9.2 配置开放8080端口配置tomcat数据库链接池:$TOMCAT_HOME/conf/context.xml<Resourcename="jdbc/NetDB&

温馨提示

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

评论

0/150

提交评论