SkyNet调度系统使用手册当前版本V0.0.2作者刘晓文修改记录更新时间版本修订人修改内容2014/12/30V0.0.1刘晓文初始创建2015/5/4V0.0.2刘晓文页面功能介绍、HTTP接口目录第1章 系统概述31.1 背景31.2 系统架构41.2.1 名词解释41.2.2 系统模块41.2.3 系统特性51.3 系统核心功能5第2章 DashBoard62.1 页面62.2 功能6第3章 任务维护73.1 添加任务73.1.1 页面73.1.2 功能83.2 查询操作任务93.2.1 页面93.2.2 查询任务93.2.3 运行任务93.2.4 查看任务依赖103.2.5 修改任务103.2.6 删除任务11第4章 任务依赖124.1 查询依赖124.2 添加任务依赖124.3 删除任务依赖134.4 查看任务最后一次运行详情13第5章 任务监控145.1 页面145.2 查询任务运行历史155.3 查看任务运行日志155.4 重做任务165.5 KILL任务16第6章 告警配置176.1 添加任务告警176.1.1 任务失败告警186.1.2 任务超时未完成告警(暂未实现)186.2 查询任务告警配置186.3 修改任务告警196.4 删除任务告警196.5 查询告警发送记录20第7章 系统部分运行原理207.1 业务类型207.2 程序路径217.3 指定任务运行主机217.4 调度的延迟21附录A 动态时间参数22附录B Quartz时间表达式22附录C 定时任务配置流程23附录D 依赖任务配置流程23第1章 系统概述1.1 背景大数据平台技术框架支持的开发语言多种多样,开发人员的背景差异也很大,这就产生出很多不同类型的程序(任务)运行在大数据平台之上,如:MapReduce、Hive、Pig、Spark、Java、Shell、Python等。这些任务需要不同的运行环境,并且除了定时运行,各种类型之间的任务存在依赖关系,一张简单的任务依赖图如下:目前各业务的数据任务基本都是靠Crontab定时调度,各个任务之间的依赖仅靠简单的串行来实现。这样做的问题:很容易造成前面的任务未结束或者失败,后面的任务也运行起来,最终跑出错误的分析结果;任务不能并发执行,增加任务执行的整体时间窗口;任务管理和维护很不方便,不好统计任务的执行时间及运行日志;缺乏及时有效的告警;SkyNet调度监控系统,正是为了解决以上问题。1.2 系统架构1.2.1 名词解释SkyNet任务调度监控系统的名称。Job/任务一个程序运行单元,比如,一个MapReduce程序、一个Shell脚本等。业务日期每个程序运行所处理的数据日期。JobInstance/任务实例一次任务运行实例,因为一个任务在同一业务日期可能会运行多次。资源任务运行的节点(主机)DataHub数据交换机,用于异构数据源时间的数据交换。1.2.2 系统模块JobManager:SkyNet的Master,提供RPC服务,接收并处理JobClient/Web提交的所有操作;与元数据通讯,维护Job元数据;负责任务的统一配置维护、触发、调度、监控JobMonitor: 监控正在运行的Job状态、监控任务池、监控等待运行的Job;JobWorker:SkyNet的Slave,从任务池中获取Job、负责启动并收集Job的执行状态,维护至元数据库;JobClient/Web:SkyNet客户端类,前端界面提供给用户,用作任务的配置、管理、监控等;任务元数据:目前使用Mysql,保存Job的配置、依赖关系、运行历史、资源配置、告警配置等;1.2.3 系统特性分布式架构:容量和负载能力(JobWorker)可线性扩充;高可用性:拥有主备Master,一旦主Master异常,备Master会接替主Master提供服务(后期实现);高容错性:Master重新启动后,会将之前未完成的任务重新调度运行;完善易用的Web用户界面:用于用户配置、提交、查询、监控任务及任务的依赖关系;支持任意类型的任务:除了Hadoop生态圈的MapReduce、Hive、Pig等,还支持其他任何语言开发的任务,如Java、Shell、Python、Perl、Spark等;完整的日志记录:收集并记录任务运行过程中产生的标准输出和标准错误,提供Http访问,用户可通过访问任务对应的日志Url来方便的访问任务运行日志;任务之间的灵活依赖:可将任意一个任务作为自己的父任务进行依赖触发;灵活多样的告警规则:除了失败告警,也支持任务超时未完成、任务超时未开始等告警规则;1.3 系统核心功能任务的管理和维护:添加、修改、删除、运行、重做、Kill任务;任务依赖关系维护:添加、修改、删除任务之间的依赖关系;查询:根据业务类型、任务ID查询