hera

分布式任务调度系统
授权协议 未知
开发语言 Java
所属分类 服务器软件、 集群/负载均衡
软件类型 开源软件
地区 国产
投 递 者 柯伟志
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

hera 分布式任务调度系统是根据前阿里开源调度系统(zeus)进行的二次开发。

架构

hera系统只是负责调度以及辅助的系统,具体的计算还是要落在hadoop、hive、yarn、spark等集群中去。所以此时又一个硬性要求,如果要执行hadoop,hive,spark等任务,我们的hera系统的worker一定要部署在这些集群某些机器之上。如果仅仅是shell,那么也至少需要linux系统。对于windows系统,可以把自己作为master进行调试。

在这里插入图片描述

hera系统本身严格的遵从主从架构模式,由主节点充当着任务调度触发与任务分发器,从节点作为具体的任务执行器.架构图如下:

在这里插入图片描述

设计目标

hera分布式任务调度系统的设计目标首先是要完成zeus大部分核心功能,并能够根据自己公司的需求进行扩展。大致目标有以下几点

  • 支持任务的定时调度、依赖调度、手动调度、手动恢复

  • 支持丰富的任务类型:shell,hive,python,spark-sql,java

  • 可视化的任务DAG图展示,任务的执行严格按照任务的依赖关系执行

  • 某个任务的上、下游执行状况查看,通过任务依赖图可以清楚的判断当前任务为何还未执行,删除该任务会影响那些任务。

  • 支持上传文件到hdfs,支持使用hdfs文件资源

  • 支持日志的实时滚动

  • 支持任务失败自动恢复

  • 实现集群HA,机器宕机环境实现机器断线重连与心跳恢复与hera集群HA,节点单点故障环境下任务自动恢复,master断开,worker抢占master

  • 支持对master/work 负载,内存,进程,cpu信息的可视化查看

  • 支持正在等待执行的任务,每个worker上正在执行的任务信息的可视化查看

  • 支持实时运行的任务,失败任务,成功任务,任务耗时top10的可视化查看

  • 支持历史执行任务信息的折线图查看 具体到某天的总运行次数,总失败次数,总成功次数,总任务数,总失败任务数,总成功任务数

  • 支持关注自己的任务,自动调度执行失败时会向负责人发送邮件

  • 对外提供API,开放系统任务调度触发接口,便于对接其它需要使用hera的系统

  • 组下任务总览、组下任务失败、组下任务正在运行

  • 支持map-reduce任务和yarn任务的实时取消。

  • (还有更多,等待大家探索)

  • 相关介绍 赫拉(hera)分布式任务调度系统之架构,基本功能(一) 赫拉(hera)分布式任务调度系统之项目启动(二) 赫拉(hera)分布式任务调度系统之开发中心(三) 赫拉(hera)分布式任务调度系统之版本(四) 赫拉(hera)分布式任务调度系统之Q&A(五) 1.实现集群HA,机器宕机环境实现机器断线重连与心跳恢复与hera集群HA,节点单点故障环境下任务自动恢复,master断开,wo

  • 简单介绍 待运行队列(MasterContext.scheduleQueue) 生产者:定时时间到、或者依赖任务都执行完,往队列里添加待执行的任务 消费者:worker 定时去扫描队列里 是否有任务 需要执行 一、定时任务如何往队列里 添加任务 1、在Hera启动初始化时 1、发送一条初始化的事件 Events.Initialize // Master.init executeJobPool.ex

 相关资料
  • 简介 在过去,开发者必须在服务器上为每个任务生成单独的 Cron 项目。而令人头疼的是任务调度不受源代码控制,而且必须通过 SSH 连接到服务器上来增加 Cron 项目。 Laravel 的命令调度程序允许你在 Laravel 中对命令调度进行清晰流畅的定义。并且在使用调度程序时,只需要在服务器上增加一条 Cron 项目即可。调度是在 app/Console/Kernel.php 文件的 sche

  • 基本任务调度 方案1: 通过 @Cron 注解,这个需要依赖 cron4j 框架: //1分钟执行一次 @Cron("*/1 * * * *") public class MyTask implements Runnable { @Override public void run() { System.out.println("task running...");

  • 在这最后一章中,我们将回到:kv应用程序,给它添加一个路由层,使之可以根据桶的名字,在各个节点间分发请求。 路由层会接收一个如下形式的路由表: [{?a..?m, :"foo@computer-name"}, {?n..?z, :"bar@computer-name"}] 路由者(负责转发请求的角色,可能是个节点)将根据桶名字的第一个字节查这个路由表, 然后根据路由表所示将用户对桶的请求发给相应

  • 每隔一段时间需要调度任务执行,也许你想注册一个任务在客户端完成连接5分钟后执行,一个常见的用例是发送一个消息“你还活着?”到远端通,如果远端没有反应,则可以关闭通道(连接)和释放资源。 本节介绍使用强大的 EventLoop 实现任务调度,还会简单介绍 Java API的任务调度,以方便和 Netty 比较加深理解。 使用普通的 Java API 调度任务 在 Java 中使用 JDK 提供的 S

  • ShardingSphereTransactionManager SPI 名称 详细说明 ShardingSphereTransactionManager 分布式事务管理器 已知实现类 详细说明 XAShardingSphereTransactionManager 基于 XA 的分布式事务管理器 SeataATShardingSphereTransactionManager 基于 Seata 的分

  • ShardingSphere-Proxy 接入的分布式事务 API 同 ShardingSphere-JDBC 保持一致,支持 LOCAL,XA,BASE 类型的事务。 XA 事务 ShardingSphere-Proxy 原生支持 XA 事务,默认的事务管理器为 Atomikos。 可以通过在 ShardingSphere-Proxy 的 conf 目录中添加 jta.properties 来定