hera分布式任务调度系统是根据前阿里开源调度系统(zeus)进行的二次开发,其中zeus大概在2014年开源,开源后却并未进行维护。我公司(二维火)2015年引进了zeus任务调度系统,一直使用至今年11月份,在我们部门乃至整个公司发挥着不可替代的作用。在我使用zeus的这一年多,不得不承认它的强大,只要集群规模于配置适度,他可以承担数万乃至十万甚至更高的数量级的任务调度。但是由于zeus代码是未维护的,前端更是使用GWT技术,难于在zeus上面进行维护。我与另外一个小伙伴(花名:凌霄,现在阿里淘宝部门)于今年三月份开始重写zeus,改名赫拉(hera)
zeus
hera系统只是负责调度以及辅助的系统,具体的计算还是要落在hadoop、hive、yarn、spark等集群中去。所以此时又一个硬性要求,如果要执行hadoop,hive,spark等任务,我们的hera系统的worker一定要部署在这些集群某些机器之上。如果仅仅是shell,那么也至少需要linux系统。对于windows系统,可以把自己作为master进行调试。
hera
hadoop、hive、yarn、spark
hadoop,hive,spark
worker
shell
linux
windows
master
hera系统本身严格的遵从主从架构模式,由主节点充当着任务调度触发与任务分发器,从节点作为具体的任务执行器.架构图如下:
hera分布式任务调度系统的设计目标首先是要完成zeus大部分核心功能,并能够根据自己公司的需求进行扩展。大致目标有以下几点
支持任务的定时调度、依赖调度、手动调度、手动恢复
支持丰富的任务类型:shell,hive,python,spark-sql,java
shell,hive,python,spark-sql,java
可视化的任务DAG图展示,任务的执行严格按照任务的依赖关系执行
DAG
某个任务的上、下游执行状况查看,通过任务依赖图可以清楚的判断当前任务为何还未执行,删除该任务会影响那些任务。
支持上传文件到hdfs,支持使用hdfs文件资源
hdfs
支持日志的实时滚动
支持任务失败自动恢复
实现集群HA,机器宕机环境实现机器断线重连与心跳恢复与hera集群HA,节点单点故障环境下任务自动恢复,master断开,worker抢占master
HA
支持对master/work 负载,内存,进程,cpu信息的可视化查看
master/work
cpu
支持正在等待执行的任务,每个worker上正在执行的任务信息的可视化查看
支持实时运行的任务,失败任务,成功任务,任务耗时top10的可视化查看
top10
支持历史执行任务信息的折线图查看 具体到某天的总运行次数,总失败次数,总成功次数,总任务数,总失败任务数,总成功任务数
支持关注自己的任务,自动调度执行失败时会向负责人发送邮件
对外提供API,开放系统任务调度触发接口,便于对接其它需要使用hera的系统
API
组下任务总览、组下任务失败、组下任务正在运行
支持map-reduce任务和yarn任务的实时取消。
map-reduce
yarn
(还有更多,等待大家探索)