任务调度中心系统.docx

上传人:牧羊曲112 文档编号:5006953 上传时间:2023-05-29 格式:DOCX 页数:31 大小:312.59KB
返回 下载 相关 举报
任务调度中心系统.docx_第1页
第1页 / 共31页
任务调度中心系统.docx_第2页
第2页 / 共31页
任务调度中心系统.docx_第3页
第3页 / 共31页
任务调度中心系统.docx_第4页
第4页 / 共31页
任务调度中心系统.docx_第5页
第5页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《任务调度中心系统.docx》由会员分享,可在线阅读,更多相关《任务调度中心系统.docx(31页珍藏版)》请在三一办公上搜索。

1、任务调度中心系统当前版本作者修改记录更新时间版本修订人修改容目录一、设计目的5二、整体架构.72.1核心功能.72.2核心组件8三、Job元数据8四、JobClient9五、JobManager (Master).95.1 RPCServer.95.2数据库管理服务类105.3资源管理服务115.4 Job做关系维护125.5定时调度器125.7告警服务135.8初始化流程135.9启动流程135.10成功Job处理流程145.11失败Job处理流程14六、JobWorker (Slave)146.1存数据结构146.2定期从获取可以运行的Job146.3 执行 Job15七、核心流程图157

2、.1 Job维护流程157.2 Job依赖维护流程167.3资源维护流程187.4 Job提交流程197.5 Job执行流程207.6 Job监控流程20八、后台部署与运行228.1安装228.2数据库建库建表228.3酉己置228.5停止24九、部署与运行259.1安装259.2酉己置259.3运行26一、设计目的目前整个市场任务调度非常粗糙,基本仅靠Crontab来定时运行, 日志清洗、日志校验、数据分析、入库各模块之间无有效依赖,经 常由于前置任务出错或者未完成,后续的任务运行出错,并且对任 务出错的监控不到位,造成分析数据不能及时入库,导致线上BUG。真实业务场景下合理的任务运行图:(

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

4、整体架构JobWftrkerI Vpw/inr/hlVfJob Worker ih/pv/pnr/hi*e磨折9= 布嵌 !*是新.京荷2.1核心功能1. Job维护:添加、修改、删除、杀死Job;2. Job依赖关系维护:添加、修改、删除Job之间的依赖关系;3. 查询类:查询Job列表、根据状态查询Job列表、查询Job的父子依赖等;4. 资源维护:添加、修改、删除资源,查询资源列表;5. Job触发:支持定时、依赖、手工触发调度Job;6. 任务失败告警:当任务失败或者某个时间点未成功结束时,触发和短信报警;7. 支持任务类型包括:shell、python、MapReduce、Hive、

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

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

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

8、anager,添加、修改、删除资源,获取资 源列表;5.2数据库管理服务类 JobStoreManager,封装所有与元数据库通讯的接口,用于Job元数 据的持久化和查询。使用数据库池; 接口列表:咨 alean selectMaxJobnstaimcecl): lomg* addlRescu rcefString, String, int): booleane updateResourcetString, Strmg. mt) - bool-san die leteResou rcefString, Strirfcg): boolean。geiAllResoijrce&O : List5.3

9、资源管理服务 ResourceManager,负责Job资源的计算和分配;资源包括:主机名/IP,可运行的任务类型,最大运行的任务数量;初始化将资源配置表中已分配的Job数全部设为0 ;资源申请流程:资源配置表 根据Job类型,首先从资源配置表中获取可以运行该类型Job的节点、最多 可运行的Job数量、已分配出去的Job数量; 从上面获取的节点中取(max_job_count- running_job_count) 0,并按 照(max_job_count - running_job_count)降序排列,取第一条记录; 如果有返回主机名,表示有资源,则将该资源已分配Job数量+1;返回主机名

10、; 如果没有记录返回,则表示没有资源,返回null ;资源释放流程: 根据传入的hostname和job_type,将资源配置表中该记录已分配Job数量-1;5.4 Job依赖关系维护 Neo4jService使用Neo4j保存任务的依赖关系,供查询使用;当Job的依赖关系发生变化时,需要在Neo4j中做相应的维护;5.5定时调度器 QuartzService维护定时运行的Job,当Job到达任务触发时间时,提交Job运行;5.6 Job监控监控超时未成功执行的Job,触发告警(可依靠Quartz定时触发);监控正在运行的Job列表,当Job长时间未更新时,做相应处理;监控待运行Job队列,并

11、尝试提交Job;监控任务池,从任务池中删除被拿走的Job;5.7告警服务提供告警服务,目前只提供告警服务5.8初始化流程 获取RPC host&port :从配置文件conf/master.xml中获取;构建 RPCServer ;初始化Neo4j服务;从数据库中初始化加载所有Job;从数据库中初始化job依赖;初始化资源管理服务;构建Q uartz服务;5.9启动流程初始化;启动 jobManagerRPCServer ; registerShutdownHook ; 启动Neo4j服务线程;启动Quartz月服务线程;启动Job监控线程;5.10 成功 Job处理流程更新Job状态; 获取

12、该Job的一级子Job,分别检查子Job的其他父Job,如果父Job全部完成, 则提交该Job运行;如果有父Job未完成,则将该Job加入因前置Job未全部完 成而等待运行的Job队列5.11失败Job处理流程更新Job状态; 告警;六、JobWorker ave)6.1存数据结构 正在运行的JobExecutor列表;6.2定期从获取可以运行的Job定期从任务池获取可以运行的Job 定期汇总各个Job状态,并更新;6.3执行Job 根据Job类型,构建相应的JobExecutor,执行并收集Job执行日志;七,核心流程7.1 Job维护流程添加、修改Job删除Job7.2 Job依赖维护流程

13、添加Job依赖删除亢6依赖7.3资源维护流程添加、修改资源删除资源资源配置表删 除结束Job自动提交(定时触发和依赖触发)Job手动提交(由JobClient提交)正在运行Job表汇总各个Job执行状态 更新正在运行的 Job表八1 1JobWorker定时获取1任务池1 1V7.6 Job监控流程监控任务池监控正在运行的Joba*正在运行Job表从运行表中删除从运行表中删除任务池长时间未更新的 Job放入任务池 Action为killJobMonitor状态为结束状态的Job几后台部署与运行8.1 安装解压解压后目录结构:conf/#配置文件bin/#执行脚本lib/#第三方jar包Mana

14、ger.jar #核心 jar 包8.2数据库建库建表建库: 赋权: 建表:8.3配置conf/c3p0.properties c3p 0数据库池。conf/mail.properties发送告警配置。conf/master.propertiesJobManager酉己置文件。 job_manager_rpc_host=172.16.0.1 /JobManager RPC 运行主机 ip job_manager_rpc_port=2234/JobManager RPC 运行端口号 job_monitor_scan_period = 10/JobMonitor 扫描数据库时间间隔 conf/sl

15、ave.propertiesJobWorker酉己置文件。 job_worker_scan_period = 5/JobWorker 线程扫描数据库间隔,单位:秒 job_log_dir=/usr/local/skynet/logs /JobWorker记录的日志路径 job_worker_jetty_port=9911/JobWorker 中 Jetty 服务端口号,用于查看Job运行日志 job_working_directory=/tmp/skynet/ /job 执行工作目录,各用户必须有 可读写权限,chmod -R 777 /tmp/skynet bin/net.sh酉己置 exp

16、ort JAVA_HOME=/usr/local/jre1.7.0_67 bin/monitor-net.sh系统监控脚本。酉己置 export JAVA_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运行运行 Job

17、Managerbin/net.sh start jm启动后,在net/下产生jm.log日志文件运行 JobWorkerbin/net.sh start jw启动后,在net/下产生jw.log日志文件运行系统监控脚本bin/ monitor-net.sh启动后,在net/下产生 monitor.log日志文件(5分钟刷新一次)8.5停止停止 JobWorkerbin/net.sh stop jw停止 JobManagerbin/net.sh stop jm九、部署与运行9.1 安装 将 net.war 拷贝至$TOMCAT_HOME/ webapps/9.2配置 开放8080端口酉己置tomcat数据库池:$TOMCAT_HOME/conf/ context.xml配置后台服务信息: $TOMCAT_HOME/ webapps/net/WEB-INF/classes/ jm.properties蜷堇中冬册srrdwp丰偕晦玉囹阜由因也昌H由 /Au/0808:isoi|%o| :囿至回史 也惘1%山。1?贝 鳗E6I09I7ZI=lSOL|_:)clj_J96eueiu_qof

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号