当前位置:文档之家› SkyNet任务调度监控系统-使用手册

SkyNet任务调度监控系统-使用手册

SkyNet调度系统使用手册修改记录目录第1章系统概述 (5)1.1 背景 (5)1.2 系统架构 (6)1.2.1 名词解释 (6)1.2.2 系统模块 (6)1.2.3 系统特性 (7)1.3 系统核心功能 (7)第2章DashBoard (8)2.1 页面 (8)2.2 功能 (8)第3章任务维护 (9)3.1 添加任务 (9)3.1.1 页面 (9)3.1.2 功能 (10)3.2 查询操作任务 (11)3.2.1 页面 (11)3.2.2 查询任务 (11)3.2.3 运行任务 (12)3.2.4 查看任务依赖 (13)3.2.5 修改任务 (13)3.2.6 删除任务 (14)第4章任务依赖 (15)4.1 查询依赖 (15)4.2 添加任务依赖 (15)4.3 删除任务依赖 (15)4.4 查看任务最后一次运行详情 (16)第5章任务监控 (17)5.1 页面 (17)5.2 查询任务运行历史 (17)5.3 查看任务运行日志 (18)5.4 重做任务 (18)5.5 KILL任务 (19)第6章告警配置 (20)6.1 添加任务告警 (20)6.1.1 任务失败告警 (21)6.1.2 任务超时未完成告警(暂未实现) (21)6.2 查询任务告警配置 (21)6.3 修改任务告警 (22)6.4 删除任务告警 (23)6.5 查询告警发送记录 (23)第7章系统部分运行原理 (23)7.1 业务类型 (23)7.2 程序路径 (24)7.3 指定任务运行主机 (24)7.4 调度的延迟 (24)附录A 动态时间参数 (27)附录B Quartz时间表达式 (28)附录C 定时任务配置流程 (29)附录D 依赖任务配置流程 (29)第1章系统概述1.1 背景大数据平台技术框架支持的开发语言多种多样,开发人员的背景差异也很大,这就产生出很多不同类型的程序(任务)运行在大数据平台之上,如:MapReduce、Hive、Pig、Spark、Java、Shell、Python等。

这些任务需要不同的运行环境,并且除了定时运行,各种类型之间的任务存在依赖关系,一张简单的任务依赖图如下:目前各业务的数据任务基本都是靠Crontab定时调度,各个任务之间的依赖仅靠简单的串行来实现。

这样做的问题:●很容易造成前面的任务未结束或者失败,后面的任务也运行起来,最终跑出错误的分析结果;●任务不能并发执行,增加任务执行的整体时间窗口;●任务管理和维护很不方便,不好统计任务的执行时间及运行日志;●缺乏及时有效的告警;SkyNet调度监控系统,正是为了解决以上问题。

1.2 系统架构1.2.1 名词解释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查询任务;根据任务ID查询任务的父、子任务;根据任务状态、任务ID、任务实例ID、任务创建时间、业务日期查询任务运行情况;根据任务ID查询任务告警配置信息;根据任务ID、告警发送时间、告警发送状态查询告警发送记录;查询任务的运行完整日志;●任务告警:配置、修改、删除任务告警;第2章DashBoard2.1 页面2.2 功能SkyNet系统任务和资源情况的整体监控。

●任务✓总共任务数:系统中所有的任务数量;点击进入“查询操作任务”页面。

✓正在运行:当天,正在运行的任务数量;点击进入“任务监控”页面。

✓成功:当天,运行成功的任务数量;点击进入“任务监控”页面。

✓失败:当天,运行失败的任务数量;点击进入“任务监控”页面。

✓等待:当天,等待运行的任务数量;点击进入“任务监控”页面。

●资源✓系统中所有的资源(JobWorker)主机名、可运行的任务类型、该任务类型最多可运行的任务数量、该任务类型正在运行的任务数量;第3章任务维护3.1 添加任务3.1.1 页面点击”任务维护”→“添加任务”进入。

3.1.2 功能向系统中添加任务。

●任务名称:填入该任务的名称,长度:200字节。

●任务类型:从下拉菜单中选择任务类型,JAVA、SHELL、MR等。

●任务业务日期格式:该任务要处理的数据日期格式,支持天和小时的日期格式,如,${yyyy-MM-dd,-2d}表示两天前,${yyyy-MM-dd-HH,-1H}表示一小时前。

(具体用法见附录A解释);●程序路径:程序所在的绝对路径,支持本地路径和HDFS路径,如:/home/liuxiaowen/jobs/shell-job.sh、hdfs://namenode/tmp/lxw/jobs/java-job.jar注意:✓当程序存储在HDFS上时候,填入正确的HDFS路径,以”hdfs://”开头,区分大小写;执行任务的用户(跟业务类型有关)必须有访问权限。

✓当程序存储在本地目录时候,必须在JobWorker所在机器的本地目录,且执行任务的用户(跟业务类型有关)必须有访问权限。

●程序运行类型:当任务类型为JAVA、MR时候,指定程序运行的类名,如:com.lxw.test.TestJavaSuccessJob,其他任务类型留空即可。

●程序运行参数:程序运行需要的参数,多个参数以空格分开,系统会将该值整体传给程序运行,这里可以加动态时间参数,程序在调度时候,会以真实的业务日期,替换其中的动态时间参数。

比如:业务日期设置为${yyyy-MM-dd,-1d},今天(2015-05-04)调度时候根据当前时间,得到的真实业务日期为2015-05-03,而程序运行参数中有day=${yyyy-MM-dd,-1d},此处替换时候会以2015-05-03为基准时间,替换后为day=2015-05-02●程序定时运行时间:当程序需要定时运行时候,填入Quartz时间表达式(具体用法见附录B解释);●业务类型:根据实际业务,选择业务类型;注意:✓业务类型和程序执行所使用的用户有关,特别是和Hadoop有关的任务,如:wizad业务使用wizad用户、ut业务使用ut用户;✓如果没有自己的业务类型或者想使用其他用户执行程序,请与管理员联系;●任务说明:对该任务的说明,可空;●指定运行主机:一般不填。

如果需要指定程序到哪台机器上运行,请填入主机名,前提是指定的主机上必须运行着JobWorker服务,具体使用请与管理员联系。

●失败重试次数:当任务失败时候,可以重试10次以下。

●失败重试间隔:任务失败重试时间间隔,单位为秒,最低60秒。

●失败执行命令:任务最终失败时,执行该命令,用于失败后处理,比如:sh /tmp/jobfailed.sh ${yyyy-MM-dd}这里可以用动态时间参数,替换规则同程序运行参数中的替换规则。

●父任务:在添加任务时候,可以直接指定依赖的父任务,ID以逗号分隔。

点击”添加任务”按钮之后,弹出框会显示操作结果。

●如果结果中是刚添加的任务信息,首个数字为任务ID,如下图所示:则表示添加成功,点击”Close”按钮之后,会跳转至任务查询页面,显示刚才添加的任务。

●如果弹出框中显示null或其他信息,则表示添加失败。

3.2 查询操作任务3.2.1 页面点击”任务维护”→“查询操作任务”进入。

3.2.2 查询任务●可选择业务类型,输入任务ID查询任务列表。

●可以输入任务名称进行查询,支持模糊匹配;●可以选择任务类型进行查询;●多种查询条件可任意组合;●默认显示所有的任务列表。

●显示的内容包括:✓任务ID、任务名称;✓程序路径、程序类名、程序运行参数;✓程序定时运行Quartz表达式;✓业务类型;✓指定运行的主机名;3.2.3 运行任务●点击某条任务前面的”运行”超链接,弹出提交任务的弹出框:●填入业务日期,日期格式必须与程序运行参数中指定的日期格式一致。

选择是否需要运行子任务:✓如果选择”不运行子任务”,则只运行该任务本身;✓如果选择”运行子任务”,则会将该任务及所有该任务的子孙任务依次运行(运行失败的任务其子任务不会运行);●点击”提交”按钮,弹出框中会显示任务的提交结果:●如果显示”true,任务提交成功”,则表示任务提交成功,关闭后跳转至任务监控页面。

如果显示”false”,则表示任务提交不成功,同时将相关的原因显示出。

3.2.4 查看任务依赖在任务查询页面点击“依赖”超链接,跳转到任务依赖页面,显示该任务的下级依赖任务。

详见第4章介绍。

3.2.5 修改任务在任务查询页面点击“修改”超链接,跳转至修改该任务的页面。

●修改任务属性,点击”修改任务”按钮。

弹出框显示修改结果。

●和添加任务结果类似,如果显示修改过的任务信息,则表示修改成功,关闭后跳转至任务查询页面,显示该任务信息。

如果是其他信息,则表示修改失败。

3.2.6 删除任务●在任务查询页面点击”删除”超链接,弹出删除任务确认对话框。

●点击”删除”按钮,显示任务删除操作结果。

●如果显示”true”,则表示删除成功,否则删除失败,并且会提示失败原因。

相关主题