batch-scheduler

批次调度系统
授权协议 MIT
开发语言 Java HTML/CSS
所属分类 程序开发、 作业/任务调度
软件类型 开源软件
地区 国产
投 递 者 燕正德
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

这是一个企业级批次调度系统, 在成熟的spring框架基础上,实现ETL调度服务. 权限管理部分,采用asofdate hauth项目. batch-schduler与常见的任务调度系统侧重点不同,这个系统设计的初衷,是解决大批量存在依赖关系得任务调度。并不是为了解决定时任务调度。所以,batch-scheduler系统与通常的定时任务调度系统存在一些差异。

引用组件

  1. spring-boot spring社区中一款优秀的快速开发框架

  2. spring-batch 一款非常优秀的批处理框架

  3. spring-security 用户认证管理

  4. quartz 调度器

主要功能点介绍

调度服务主要业务流程

批次     任务组     job信息
batch 包含 group 包含 job
批次中多个group需要设置依赖关系,否则并行执行
任务组中多个job需要设置依赖关系,否则并行执行

ETL调度系统,最小的调度单元job,job可以是下边几种类型:

> 数据库存储过程 (已实现,单元测试完成,通过)
> shell脚本 (已实现,单元测试完成,通过)
> CMD批次处理脚本 (已实现,单元测试完成,通过)
> 二进制可执行程序 (已实现,未测试)
> JAR可执行文件 (已实现,未测试)

在job之上是任务组, 任务组是对任务的一个打包处理, 同一个任务,可以被任务组包含多次. 任务组内对每个job设置上下依赖关系,ETL调度引擎,会根据依赖关系执行job.

在任务组之上是批次, 同一任务组,在一个批次中可以配置多次, 调度引擎,会根据任务组的依赖关系,解析依赖,执行任务组中的job.

当一个批次被运行起来时, 会首先解析批次中的任务组依赖关系, 根据依赖关系, 找到最顶层的任务组,如果顶层是多个任务组,则并发启动多个任务组. 任务组被启动后,调度引擎会解析任务组中的任务依赖关系,执行任务组中最顶层的job,当上一个job执行完成后,将会自动触发下一个job, 当一个任务组中的job全部执行完成后,任务组状态被设置成"已完成", 调度器将会解析下一个可以运行的任务组. 按照这个执行逻辑,直到所有的任务组中任务执行完成. 当所有任务执行完成后,调度器退出调度.

注意:一旦出现某个job执行失败,调度器将会停止调度这个批次. 其他正常运行的批次不受影响.

项目主要功能图: 

  • 在输出目录中,可以看到一部分的输出,但是不完全,因为程序一直在栈溢出。 错误原因 内存过小,数据量过大,发生栈溢出,无法保存模型 解决 设置检查点 在原程序的主方法中添加: sc.setCheckpointDir("your chpoint directory") 因为我这是在hadoop集群上跑,这个目录必须是一个HDFS路径。 其他情况自己看着办 扩展 checkpoint的意思就是建立检查点

  • Spark-streaming-scheduler @(spark)[streaming|scheduler] BatchInfo /**

  • 在本教程中,我们将向您展示如何使用Quartz调度程序框架调度Spring批处理作业,使其每10秒运行一次。 使用的工具和库 Maven 3 Eclipse 4.2 JDK 1.6 Spring Core 3.2.2。发布 Spring Batch 2.2.0。发布 石英1.8.6 该关系如下所示: Spring Batch <--> Spring QuartzJobBean <--> Quart

  • projects/projectCode/process-definition /projects/6034950904640/executors/start-process-instance commandType == 其他 commandType == CommandType.COMPLEMENT_DATA 串行 并行 MasterSchedulerService 根据id%master节点

  • 环境设置对应的job 执行时间 global class UpdateAccountSegmentationScheduler implements Schedulable{ global void execute(SchedulableContext sc) { Integer month=Date.today().month(); UpdateAccountSegmentatio

 相关资料
  • 什么是调度器? - 调度器控制着何时启动 subscription 和何时发送通知。它由三部分组成: 调度器是一种数据结构。 它知道如何根据优先级或其他标准来存储任务和将任务进行排序。 调度器是执行上下文。 它表示在何时何地执行任务(举例来说,立即的,或另一种回调函数机制(比如 setTimeout 或 process.nextTick),或动画帧)。 调度器有一个(虚拟的)时钟。 调度器功能通过

  • TiDB Scheduler 是 Kubernetes 调度器扩展 的 TiDB 实现。TiDB Scheduler 用于向 Kubernetes 添加新的调度规则。本文介绍 TiDB Scheduler 扩展调度器的工作原理。 TiDB 集群调度需求 TiDB 集群包括 PD,TiKV 以及 TiDB 三个核心组件,每个组件又是由多个节点组成,PD 是一个 Raft 集群,TiKV 是一个多 R

  • 本文档的目的是为 Storm 分布式实时计算系统提供资源感知调度程序的描述。 本文档将为您提供 Storm 中资源感知调度程序的高级描述。 以下是 Hadoop Summit 2016 演示文稿中概述的一些好处是在 Storm 上使用资源感知调度器: http://www.slideshare.net/HadoopSummit/resource-aware-scheduling-in-apache

  • 我在版本2.1.4中开始学习Spring Boot Batch 这是我的配置 最后一节课是我的排定程序:

  • 考虑一种需要使用Hibernate将大量记录上传到数据库的情况。 以下是使用Hibernate实现此目的的代码片段 - Session session = SessionFactory.openSession(); Transaction tx = session.beginTransaction(); for ( int i=0; i<100000; i++ ) { Employee em

  • 批处理允许您将相关的SQL语句分组到批处理中,并通过一次调用数据库来提交它们。 当您一次向数据库发送多个SQL语句时,可以减少通信开销,从而提高性能。 JDBC驱动程序不需要支持此功能。 您应该使用DatabaseMetaData.supportsBatchUpdates()方法来确定目标数据库是否支持批量更新处理。 如果JDBC驱动程序支持此功能,则该方法返回true。 Statement, P