任务调度中心系统_第1页
任务调度中心系统_第2页
任务调度中心系统_第3页
任务调度中心系统_第4页
任务调度中心系统_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

任务调度中心系统当前版本作者

修改记录更新时间版本修订人修改容目录TOC\o"1-5"\h\z\o"CurrentDocument"一、设计目的 5\o"CurrentDocument"二、整体架构 7\o"CurrentDocument"2.1核心功能 7\o"CurrentDocument"2.2核心组件 8\o"CurrentDocument"三、 Job元数据 8四、 JobClient 9\o"CurrentDocument"五、 JobManager(Master) 95.1RPCServer 9数据库管理服务类 10\o"CurrentDocument"资源管理服务 11\o"CurrentDocument"Job依赖关系维护 12\o"CurrentDocument"定时调度器 12\o"CurrentDocument"Job监控 12\o"CurrentDocument"告警服务 13\o"CurrentDocument"初始化流程 13\o"CurrentDocument"启动流程 13\o"CurrentDocument"5.10成功Job处理流程 145.11失败Job处理流程 14六、 JobWorker(Slave) 14\o"CurrentDocument"存数据结构 14\o"CurrentDocument"6.2定期从获取可以运行的Job 14\o"CurrentDocument"执行Job 15\o"CurrentDocument"七、 核心流程图 15\o"CurrentDocument"Job维护流程 15Job依赖维护流程 16\o"CurrentDocument"资源维护流程 18\o"CurrentDocument"Job提交流程 19\o"CurrentDocument"Job执行流程 20\o"CurrentDocument"Job监控流程 20\o"CurrentDocument"八、 后台部署与运行 22\o"CurrentDocument"8.1安装 22\o"CurrentDocument"8.2数据库建库建表 22\o"CurrentDocument"配置 22\o"CurrentDocument"运行 24\o"CurrentDocument"8.5停止 24\o"CurrentDocument"九、 部署与运行 25\o"CurrentDocument"9.1安装 25\o"CurrentDocument"9.2配置 259.3运行 26一、设计目的•目前整个市场任务调度非常粗糙,基本仅靠Crontab来定时运行,日志清洗、日志校验、数据分析、入库各模块之间无有效依赖,经常由于前置任务出错或者未完成,后续的任务运行出错,并且对任务出错的监控不到位,造成分析数据不能及时入库,导致线上BUG•真实业务场景下合理的任务运行图:分析J0B2入库J0B2日分析J0B2入库J0B2日志校验分护JOB?分tFlJOBl图一)定时触发一个日志校验的Job,去检查清洗后的日志是否已经就绪;分析的JOB均依赖日志校验的Job,一旦日志校验的Job执行成功,则并发启动依赖其的分析Job1-4;入库JOB1依赖分析JOB1和分析JOB2,如果这两个分析JOB全部执行成功,则启动执行入库JOB1;对于入库JOB2,如果分析JOB3和分析JOB4有一个未成功执行,则入库JOB2就不执行;•—个复杂的任务依赖图:•为了解决数据平台分配任务的稳定性,时效性,因此设计开发任务调度中心系统,旨在解决任务的统一配置,统一调度,统一监控告警等功能,减少开发人员的开发和维护成本,提高平台的稳定性。二、整体架构HW-SerwJobWftrkerIVpw/mr/MVffl-冇幫歴炊HW-SerwJobWftrkerIVpw/mr/MVffl-冇幫歴炊9=tz•尉l*ft«JobWorkerih/pv/pnr/hwe2.1核心功能1.Job维护:添加、修改、删除、杀死Job;Job依赖关系维护:添加、修改、删除Job之间的依赖关系;查询类:查询Job列表、根据状态查询Job列表、查询Job的父子依赖等;资源维护:添加、修改、删除资源,查询资源列表;5.Job触发:支持定时、依赖、手工触发调度Job;6.任务失败告警:当任务失败或者某个时间点未成功结束时,触发和短信报警;7.支持任务类型包括:shell、python、MapReduce、Hive、DataHub任务的调度及监控;8.可扩展性:Slave(JobWorker)可根据需要随时扩充;2.2核心组件1.元数据库:Mysql,保存Job的配置、依赖关系、运行历史、资源配置、告JobClient:客户端类,对外的唯一接口;JobManager:Master,提供RPC服务,接收并处理JobClient提交的所有操作;与元数据库通讯,维护Job元数据;负责任务的统一配置维护、触发、调度、监控;JobMonitor:监控正在运行的Job状态、监控任务池、监控等待运行的Job;JobWorker:Slave,从任务池中获取Job、负责启动并收集Job的执行状态,以心跳方式发送给JobManager;以上各组件下文中详细介绍。三、Job元数据元数据存储于Mysql。

LUJobClientLUJobClient1.用户与系统交互的唯一接口;封装提供给用户使用的所有接口,单例模式,吏用时候指定JobManager的RPChostname和端口号;拥有JobManager的RPC代理,将用户提交的操作通过RPC调用JobManager的相应接口进行处理;提供的接口包括:•操作Job,包括增加,修改,删除,运行,杀死Job等;•维护Job依赖关系;•配置、查询资源;•查询Job信息,包括指定条件查询,如状态,JobID,时间等;•查询Job依赖;五、JobManager(Master)任务调度中心系统的Master节点,负责所有任务的调度,分发,状态跟踪,报警,资源管理等。5.1RPCServer•JobManager自身为一个RPCServer,为JobClient提供调用接口;•为JobClient提供的RPC接口:

Job操作类接口:保存Job,根据JoblD获取Job,获取所有Job,获取新的JoblD,删除Job;Job依赖关系维护接口:添加、删除Job依赖,查询Job的父子依赖;✓查询类接口;查询正在运行的Job,查询Job的历史运行,查询一个时间段的Job等;✓维护类接口:停止JobManager,添加、修改、删除资源,获取资源列表;5.2数据库管5.2数据库管理服务类JobStoreManager,封装所有与元数据库通讯的接口,用于Job元数据的持久化和查询。使用数据库池;接口列表:曲<jn..u[niclit,kdlmpiiskyinieLpersk(ence.operatorJ❽」obStcreManager°3log:Loggerosjsm:JobStoreManagernidbczJDBCHelperJJlobStoreManag&rO'gietlnstanceO:」口bSt口teM〕日n日per爭addJob(Job):booleani4updateJo :hc^leanfselecdobBylOfint)-Job4lettAllJobsO:Job[]deleteJobfint}bociean«addJobD):booleanadldlobDependences(5tringim:booleanselectAllJobDependteflcesO..»ob[)ep'endei-ce[|■#dieleteJobD):bc>aleanwselectMaxloblnstaimceldO::lomg*•addlRescurcefString,String,int):booleaneupdateResource(String.Strmg.mt)-bool-sandieleteResourcefString,Strirfcg):boolean«■geiAllResoijrce&O:List<Resoyrce>

5.3资源管理服务ResourceManager,负责Job资源的计算和分配;•资源包括:主机名/IP,可运行的任务类型,最大运行的任务数量;•初始化将资源配置表中已分配的Job数全部设为0;资源申请流程:资源配置表资源配置表根据Job类型,首先从资源配置表中获取可以运行该类型Job的节点、最多可运行的Job数量、已分配出去的Job数量;从上面获取的节点中取(max_job_count-running_job_count)>0,并按照(max_job_count-running_job_count)降序排列,取第一条记录;如果有返回主机名,表示有资源,则将该资源已分配Job数量+1;返回主机名;如果没有记录返回,则表示没有资源,返回null;•资源释放流程:✓根据传入的hostname和job_type,将资源配置表中该记录已分配Job数量-1;5.4Job依赖关系维护•Neo4jService•使用Neo4j保存任务的依赖关系,供查询使用;•当Job的依赖关系发生变化时,需要在Neo4j中做相应的维护;5.5定时调度器•QuartzService•维护定时运行的Job,当Job到达任务触发时间时,提交Job运行;5.6Job监控•监控超时未成功执行的Job,触发告警(可依靠Quartz定时触发);•监控正在运行的Job列表,当Job长时间未更新时,做相应处理;•监控待运行Job队列,并尝试提交Job;•监控任务池,从任务池中删除被拿走的Job;5.7告警服务提供告警服务,目前只提供告警服务5.8初始化流程获取RPChost&port:从配置文件conf/master.xml中获取;•构建RPCServer;•初始化Neo4j服务;•从数据库中初始化加载所有Job;•从数据库中初始化job依赖;初始化资源管理服务;•构建Quartz服务;5.9启动流程初始化;•启动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列表;6.2定期从获取可以运行的Job定期从任务池获取可以运行的Job定期汇总各个Job状态,并更新;

6.3执行Job•根据Job类型,构建相应的JobExecutor,执行并收集Job执行日志;七、核心流程7.1Job维护流程•添加、修改Job•删除Job7.2Job依赖维护流程添加Job依赖删除Job依赖Job依赖配置表-I中删除7.3资源维护流程•添加、修改资源Yf f1资源配置表修\改V结束I资源配置表添\加JobClient(JobManagerProxy)JobManager添加、修改资源•删除资源JobClient(JobManagerProxy)删除资源JobManager资源配置表删\除结束7.4Job提交流程•Job自动提交(定时触发和依赖触发)N是否有资源NA父任务是否全部完成轮询检查Job等待表标记岀是没有资源还是父任务未完成Y同一业务时间不允许多次提交是否有同一业务时间的job在运行和等待JobManagerN是否有资源NA父任务是否全部完成轮询检查Job等待表标记岀是没有资源还是父任务未完成Y同一业务时间不允许多次提交是否有同一业务时间的job在运行和等待JobManager依赖触发定时调度QuartzSchedulerJobMonitor任务池•Job手动提交(由JobClient提交)7.5Job执行流程正在运行Job表汇总各个Job执行状态更新正在运行的Job表JobWorkerACTIONKILLJOB内部心跳汇报Job执行状态维护内存数据结构KillJobExecutor维护内存数据结构启动JobExecutor7.6Job监控流程•监控任务池JobExecutor•监控等待运行的Job/A等待运行Job表定时扫描YY是否父任务未完成而等待检查父Job是否全部完成' 是否有资源Y从等待表中删除任务池JobMonitor监控正在运行的Jobr*正在运行Job表■■"是否需要报警Y任务池从运行表中删除任务池放入任务池Action为killjob告警发送记\录从运行表中删除定时扫描JobMonitor长时间未更新的JobJobAlarm状态为结束状态的Job八、后台部署与运行8.1安装•解压•解压后目录结构:conf/##配置文件bin/##执行脚本lib/##第三方jar包Manager.jar##亥心jar包8.2数据库建库建表•建库:•赋权:•建表:8.3配•conf/pertiesc3pO数据库池。•conf/perties发送告警配置。•conf/pertiesJobManager配置文件。✓job_manager_rpc_host=//JobManagerRPC运行主机ipjob_manager_rpc_port=2234job_monitor_scan_period=10job_manager_rpc_port=2234job_monitor_scan_period=10•conf/pertiesJobWorker配置文件。job_worker_scan_period=5位:秒//JobManagerRPC运行端口号//JobMonitor扫描数据库时间间隔//JobWorker线程扫描数据库间隔,单job_log_dir二/usr/local/skynet/logs//JobWorker记录的日志路径job_worker_jetty_port=9911 //JobWorker中Jetty服务端口号用于查看Job运行日志job_working_directory二/tmp/skynet///job执行工作目录,各用户必须有可读写权限,chmod-R777/tmp/skynet•bin/net.sh酉己置exportJAVA_HOME二/usr/local/jre1.7.0_67•bin/monitor-net.sh系统监控脚本。酉己置exportJAVA_HOME=/usr/local/jre1.7.0_67酉己置maillist=〃当系统运行异常时,发给管理员告警•开放相关端口访问权限job_manager_rpc_port、job_worker_jetty_port•配置环境变量NET_HOME,JAVA_HOME•数据库中配置初始数据dmp_job_buseinss_type //业务类型dmp_resource_config //资源dmp_user//用户、用于前端页面登陆和权限控制8.4运行•运行JobManagerbin/net.shstartjm启动后,在net/下产生jm.log日志文件•运行JobWorkerbin/net

温馨提示

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

评论

0/150

提交评论