-
Notifications
You must be signed in to change notification settings - Fork 18
管理员配置手册
- 宙斯问题排查利器介绍
- 多渠道报警配置(短信,邮件,即时通讯)
- 宙斯与其他系统的协作(zookeeper)
- Hive UDF函数配置
-
宙斯问题排查利器介绍
宙斯调度系统内部使用了 scheduler 与 worker的方式进行通信和任务分派,由于网络等原因,可能会出现一些异常情况
宙斯调度系统中的很多依赖任务,层次很深,出现问题时也需要一些方法进行排查
对于这些问题,我们提供了一个问题排查的接口,展示内核运行的一些看不见的数据,方便问题排查
在浏览器中打开 dump.do (相对路径),即可进入问题排查页面 (如果有乱码,请将浏览器编码设置成utf8)
此地址只有访问到scheduler服务器上时,才能看到内容,因为如果你的服务器多于一台(分布式环境),不能保证每次刷新都能进入此页
打开页面后,有三个链接,分别为:Job调度状态 master-worker状态 等待队列任务- Job调度状态
任务的开启和关闭操作,会更新到mysql数据库中,同时也会更新到调度内核(内存)中
正常情况下数据库的状态和调度内核的状态应该是一致的。
此页面用于展示调度内核中当前所有任务的开启关闭状态,以及依赖任务状态
如果发现此处状态与数据库状态不一致,则可判断调度内核数据有错误,需要进行校正 - master-worker状态
宙斯系统在启动时会进行抢占式争夺,最先获取到锁的一台服务器,内部会启动一个scheduler,即调度内核
当调度内核启动后,其他服务器将会以worker的身份去连接scheduler(master)
后续scheduler就会将任务分配给worker进行执行了。
当宙斯服务器只有一台时,仍然会按照上面的步骤执行。这台服务器即当scheduler,又当worker
进入此页面后可以看到一个列表,每一大行代表一台worker,以ip+port开头,如下图所示:(只有一台服务器)
- Job调度状态
-
多渠道报警配置(短信,邮件,即时通讯)
宙斯系统支持多种类型的报警方式
由于这些报警方式都需要与外部系统进行配合使用,因此开源的宙斯去除了报警的实现代码。但是留有接口,只需要用自己的方式实现相应的接口即可。- 短信报警
实现SMSAlarm类中的方法即可
短信报警的逻辑是:在非上班时间(周一至周五早9点至晚6点之外的时间)宙斯的自动调度任务失败时,会触发报警 - 邮件报警
实现MailAlarm类中的方法即可
邮件报警的逻辑是:任何手动执行或者自动调度任务失败,都会触发邮件报警 - 即时通讯报警
开源代码中已经删除,如果自己有相应的即时通讯接口,可以自行创建。使用邮件报警一致的逻辑即可
注意:
自动调度的依赖任务有遍历报警的机制
比如任务B和C依赖任务A,当任务A自动调度失败时,任务A会发出报警,同事任务B和C也会发出报警(因为任务A失败意味着任务B和C必然失败)
因此如果一个非常底层的任务失败,将会导致大量报警信息
从这个侧面,也可以说明收到的报警信息越多,影响的任务就越多,这个报警也就越紧急
对于短信报警,由一个任务触发的连锁报警,每人最多只能收到20条
- 短信报警
-
宙斯与其他系统的协作
宙斯是一个非常灵活的系统,他可以与其他系统进行非常方便的协作
实际业务中可能会有这种需求,宙斯中运行的任务成功后,表明新的数据已经产生,需要通知其他系统切换到新的数据
这里可以通过配置宙斯的zookeeper通知系统来进行协作
在antx.properties配置项中对 zeus.zookeeper.host 进行配置,格式为 ip:port 与zk自身的配置方式一致
当配置成功后每当自动调度任务有成功或者失败时,都会将这个消息发送至zk的相应节点上(/zeus/jobs/123) 通过对该节点的监听,即可知道宙斯任务的运行情况
具体代码可以参见: ZKResultNotify 类 -
Hive UDF函数的配置
在开发中心创建一个文档,写入udf函数信息
在类:HiveJob 中,找到TODO,将fileID设置为开发中心的文档id
重新打包部署即可
未来如需修改udf函数库,动态修改该文档即可。即时生效,无需重启