2022年SkyNet任务调度监控系统-概要设计 .pdf
《2022年SkyNet任务调度监控系统-概要设计 .pdf》由会员分享,可在线阅读,更多相关《2022年SkyNet任务调度监控系统-概要设计 .pdf(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SkyNet任务调度监控系统当前版本V0.0.1 作者刘晓文名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 28 页 - - - - - - - - - 修改记录更新时间版本修订人修改内容2014/12/30 V0.0.1 刘晓文初始创建2015/5/4 V0.0.2 刘晓文元数据、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 28 页 - - -
2、 - - - - - - 目录一、设计目的 . 4二、整体架构 . 62.1 SkyNet 核心功能 . 62.2 SkyNet 核心组件 . 7三、Job元数据 . 73.1 Job配置表 . 73.2 Job依赖配置表 . 83.3 Job运行历史表 . 83.4 资源配置表 . 83.5 告警配置表 . 93.6 告警发送记录表. 93.7 正在运行Job . 93.8 任务池表 . 10 3.9 等待任务表 . 10 3.10 序列表 . 11 3.11 Job 状态视图 . 12 3.12 用户表 . 13 3.13 业务类型配置表. 13 3.14 资源健康状态表. 14 四、Jo
3、bClient . 14 五、JobManager (Master) . 14 5.1 RPCServer . 14 5.2 数据库管理服务类. 15 5.3 资源管理服务. 15 5.4 Job依赖关系维护 . 16 5.5 定时调度器 . 17 5.6 Job监控 . 17 5.7 告警服务 . 17 5.8 初始化流程 . 17 5.9 启动流程 . 17 5.10 成功 Job 处理流程 . 18 5.11 失败 Job 处理流程 . 18 六、JobWorker (Slave) . 18 6.1 内存数据结构. 18 6.2 定期从获取可以运行的Job . 18 6.3 执行 Job
4、 . 18 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 28 页 - - - - - - - - - 七、核心流程图 . 18 7.1 Job维护流程 . 18 7.2 Job依赖维护流程 . 20 7.3 资源维护流程. 21 7.4 Job提交流程 . 22 7.5 Job执行流程 . 23 7.6 Job监控流程 . 23 八、SkyNet后台部署与运行. 25 8.1 安装 . 25 8.2 数据库建库建表. 25 8.3 配置 . 25 8.4 运行 . 2
5、6 8.5 停止 . 26 九、SkyNet前端部署与运行. 26 9.1 安装 . 26 9.2 配置 . 27 9.3 运行 . 27 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 28 页 - - - - - - - - - 一、 设计目的目前整个数据平台的任务调度非常粗糙,基本仅靠 Crontab来定时运行,日志清洗、日志校验、数据分析、 入库各模块之间无有效依赖,经常由于前置任务出错或者未完成,后续的任务运行出错,并且对任务出错的监控不到位, 造成分析数据不能
6、及时入库, 导致线上 BUG。真实业务场景下合理的任务运行图:(图一)1. 定时触发一个日志校验的Job,去检查清洗后的日志是否已经就绪;2. 分析的 JOB均依赖日志校验的Job,一旦日志校验的Job执行成功,则并发启动依赖其的分析Job1-4 ;3. 入库 JOB1依赖分析 JOB1和分析 JOB2 ,如果这两个分析JOB全部执行成功,则启动执行入库JOB1 ;4. 对于入库 JOB2 ,如果分析 JOB3和分析 JOB4有一个未成功执行,则入库 JOB2就不执行;一个复杂的任务依赖图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
7、 - - 名师精心整理 - - - - - - - 第 5 页,共 28 页 - - - - - - - - - 为了解决数据平台ETL任务的稳定性, 时效性,因此设计开发 SkyNet任务调度系统,旨在解决任务的统一配置,统一调度,统一监控告警等功能,减少开发人员的开发和维护成本,提高平台的稳定性。012345678910名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 28 页 - - - - - - - - - 二、 整体架构2.1 SkyNet核心功能1. Job维
8、护:添加、修改、删除、杀死Job;2. Job依赖关系维护:添加、修改、删除Job 之间的依赖关系;3. 查询类:查询 Job列表、根据状态查询Job列表、查询 Job的父子依赖等;4. 资源维护:添加、修改、删除资源,查询资源列表;5. Job触发:支持定时、依赖、手工触发调度Job;6.任务失败告警:当任务失败或者某个时间点未成功结束时,触发邮件和短信报警;7.支持任务类型包括:shell、python、MapReduce、Hive、DataHub 任务的调度及监控;8.可扩展性: Slave ( JobWorker)可根据需要随时扩充;名师资料总结 - - -精品资料欢迎下载 - - -
9、 - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 28 页 - - - - - - - - - 2.2 SkyNet核心组件1.元数据库: Mysql,保存 Job的配置、依赖关系、运行历史、资源配置、告警配置等;2.JobClient :SkyNet客户端类,对外的唯一接口;3.JobManager:SkyNet的 Master,提供 RPC服务,接收并处理JobClient提交的所有操作;与元数据库通讯, 维护 Job元数据;负责任务的统一配置维护、触发、调度、监控;4.JobMonitor: 监控正在运行的Job 状态
10、、监控任务池、监控等待运行的Job;5.JobWorker:SkyNet的 Slave ,从任务池中获取Job、负责启动并收集Job的执行状态,以心跳方式发送给JobManager ;以上各组件下文中详细介绍。三、 Job 元数据元数据存储于 Mysql,数据库名 skynet. CREATE DATABASE skynet DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 3.1 Job配置表DROP TABLE IF EXISTS dmp_job; CREATE TABLE dmp_job ( job_id INT NOT NULL,
11、job_create_time DATETIME NOT NULL, job_last_update_time DATETIME NOT NULL, job_name VARCHAR(200) NOT NULL, job_type VARCHAR(20) NOT NULL COMMENT JOB类型: SHELL,HIVE,MR,JAVA,etc., job_app_location VARCHAR(500) NOT NULL COMMENT JOB程序文件路径, job_class_name VARCHAR(200) COMMENT JOB 类名 , job_run_args VARCHAR
12、(500) COMMENT JOB 运行参数 , job_run_cron VARCHAR(20) COMMENT JOB 定时运行quartz 表达式 , job_business_type VARCHAR(200) NOT NULL COMMENT JOB 业务类型,如:DAP ,UT,etc., job_comment VARCHAR(4000) COMMENT JOB 备注信息 , job_period INT DEFAULT 0 COMMENT JOB 运行周期 ,0:天,1:小时 , job_special_host VARCHAR(100) COMMENT JOB 指定运行的HO
13、ST, job_business_time VARCHAR(50) COMMENT JOB业务日期格式, job_retry_cnt INT DEFAULT 0 COMMENT 失败重试次数 , 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 28 页 - - - - - - - - - job_retry_interval INT DEFAULT 60 COMMENT 失败重试间隔(秒 ), job_final_command VARCHAR(500) COMMENT
14、任务完成后执行命令, PRIMARY KEY (job_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.2 Job依赖配置表DROP TABLE IF EXISTS dmp_job_dependence; CREATE TABLE dmp_job_dependence( parent_job_id INT NOT NULL, son_job_id INT NOT NULL, PRIMARY KEY (parent_job_id,son_job_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.3 Job运行历史表DR
15、OP TABLE IF EXISTS dmp_job_log; CREATE TABLE dmp_job_log ( job_instance_id BIGINT NOT NULL, job_id INT NOT NULL, create_time datetime NOT NULL COMMENT 记录创建时间, job_run_host VARCHAR(50) NOT NULL COMMENT job 运行主机 , job_status VARCHAR(20) NOT NULL COMMENT job 运行状态 , job_business_time VARCHAR(20) COMMENT
16、 job运行业务日期 , job_start_timedatetime COMMENT job开始运行时间, job_end_timedatetime COMMENT job运行结束时间, job_run_log VARCHAR(200) COMMENT job 运行日志文件 , job_submit_flag INT COMMENT job 提交标记, 0:自动 ;1:手动 , job_batch_no BIGINT DEFAULT 0 COMMENT job运行批次号 , INDEX job_instance_id (job_instance_id), INDEX job_id (job_
17、id), INDEX job_business_time (job_business_time), INDEX create_time (create_time), INDEX job_status (job_status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.4 资源配置表DROP TABLE IF EXISTS dmp_resource_config; CREATE TABLE dmp_resource_config ( hostname VARCHAR(100) NOT NULL COMMENT 主机名 /IP, job_type VARCHA
18、R(50) NOT NULL COMMENT 可运行的JOB类型 , 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 28 页 - - - - - - - - - max_job_count INT NOT NULL COMMENT 该类型可运行的最大任务数, running_job_count INT COMMENT 表示已分配出去的任务数, is_special INT default 0 comment 是否特定的资源, PRIMARY KEY (hostname,
19、job_type) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.5 告警配置表DROP TABLE IF EXISTS dmp_alarm_config; CREATE TABLE dmp_alarm_config ( job_id INT NOT NULL, alarm_flag INT NOT NULL DEFAULT 0 COMMENT 0:失败告警, 1:指定时间未成功结束告警;, alarm_time VARCHAR(20) COMMENT 当alarm_type = 1 时,设定告警时间,格式为: HH:mm:ss, alarm_type INT
20、 NOT NULL DEFAULT 0 COMMENT 0:邮件告警, 1:短信告警, 2:邮件和短信告警;, alarm_mail_list VARCHAR(2000) COMMENT 邮件告警收件人列表,分号分隔 , alarm_mobile_list VARCHAR(2000) COMMENT 短信告警收信人手机号列表,分号分隔, PRIMARY KEY (job_id,alarm_flag) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.6 告警发送记录表DROP TABLE IF EXISTS dmp_alarm_log; CREATE TABLE
21、dmp_alarm_log ( job_id INT NOT NULL, alarm_flag INT DEFAULT 0 COMMENT 0: 失败告警, 1:指定时间未成功结束告警;, alarm_timedatetime NOT NULL COMMENT 告警时间 , alarm_status INT NOT NULL COMMENT 告警发送结果,0:成功, 1:失败 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.7 正在运行Job 保存正在运行的job,当 job 结束后,从该表中删除。DROP TABLE IF EXISTS dmp_running
22、_job; CREATE TABLE dmp_running_job ( job_instance_id BIGINT NOT NULL, job_id INT NOT NULL, create_time datetime NOT NULL COMMENT 记录创建时间, job_last_update_timedatetime NOT NULL COMMENT 上次更新状态的时间, job_run_host VARCHAR(50) NOT NULL COMMENT job 运行主机 , 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
23、- - 名师精心整理 - - - - - - - 第 10 页,共 28 页 - - - - - - - - - job_status VARCHAR(20) NOT NULL COMMENT job 运行状态 , job_business_time VARCHAR(20) COMMENT job运行业务日期 , job_start_timedatetime COMMENT job开始运行时间, job_end_timedatetime COMMENT job运行结束时间, job_run_log VARCHAR(200) COMMENT job 运行日志文件 , job_submit_fla
24、g INT NOT NULL DEFAULT 0 COMMENT 0: 自动提交; 1:手动提交 , job_batch_no BIGINT DEFAULT 0 COMMENT job运行批次号 , PRIMARY KEY (job_instance_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.8 任务池表用于存放等待JobWorker 获取的 Job DROP TABLE IF EXISTS dmp_job_pool; CREATE TABLE dmp_job_pool ( job_instance_id BIGINT NOT NULL, job_
25、id INT NOT NULL, create_time datetime NOT NULL COMMENT 记录创建时间, job_run_host VARCHAR(50) NOT NULL COMMENT job 运行主机 , job_business_time VARCHAR(20) COMMENT job运行业务日期 , job_action INT NOT NULL DEFAULT 0 COMMENT 0: 运行任务 ;1:kill 任务 , job_submit_flag INT NOT NULL DEFAULT 0 COMMENT 0: 自动提交; 1:手动提交 , job_is
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年SkyNet任务调度监控系统-概要设计 2022 SkyNet 任务 调度 监控 系统 概要 设计
限制150内