azkaban 可以作为hadoop 任务的调度工具,也可以作为shell任务和java任务的调度工具。安装过程有点繁琐,见安装文档。

Job Type

见链接

https://azkaban.github.io/

任务DAG

通过任务之间的依赖关系(dependencies)构建DAG

下面是一个 upload.job 的例子, 依赖 report-en.job

type=java
#指定类的全路径
job.class=com.example.demo.task.BbUploadJob
#指定执行jar包的路径
classpath=lib/*
#依赖任务
dependencies=report-en
#jvm 参数
Xmx=512M
# 自定义参数
batch.timestamp=${azkaban.flow.start.timestamp}

schedule

azkaban 目前包含Quartz,支持 Cron 表达式

java job

JavaJob 目前需要配置Hadoop,但是可以通过修改源代码来去掉 Hadoop 的依赖关系,参考安装过程。

Java Job template

  1. run 相当于 main 方法,任务代码写在这里
  2. cancel 在 run 方法出现 Exception 之后调用,任务失败后处理
  3. getJobGeneratedProperties 是输出的参数,用于给下一个任务传递参数
import azkaban.utils.Props;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class JavaJob1 {private static final Logger logger = LoggerFactory.getLogger(JavaJob1.class);private Props props;public JavaJob1(String name, Props props) {this.props = props;}public void run() {String timestamp = props.getString("azkaban.flow.start.timestamp");logger.info("timestamp value is ==> " + timestamp);}public void cancel(){}public Props getJobGeneratedProperties(){Props props = new Props();return props;}
}

java job 中使用 Spring

在JavaJob 中可以使用Spring,和普通的Java代码一模一样

this.classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
this.reportService = (ReportService) this.classPathXmlApplicationContext.getBean("reportService");

其他问题

邮件通知

azkaban 原生就支持通知功能,在安装的时候配置smtp服务器,在job文件中里配置failure.emails, success.emails, notify.emails 来通知任务执行情况(多个邮箱地址用逗号分隔)

任务之间参数传递

azkaban支持任务之间传递参数,A任务可以向依赖A的任务B传递参数。实际上是通过读写临时文件来实现这个功能。

System.getenv("JOB_OUTPUT_PROP_FILE") // 任务输出的参数文件
System.getenv("JOB_PROP_FILE")   // 任务初始化的参数文件

B任务初始化的参数文件中会包含A任务输出的参数,这是azkaban帮我们做的。

JavaJob 更加方便,只要在Job中增加一个getJobGeneratedProperties方法,返回Props对象,然后B任务可以直接在初始化的Props中读取到这个参数。

public Props getJobGeneratedProperties(){Props props = new Props();props.put("demo.test.arg1", "Hello World!");return props;
}

使用azkaban 建立一个简单的任务调度系统相关推荐

  1. 疫情期间,在家使用java的SSH框架实现一个简单的任务调度系统

    导读:随着科学技术的飞速发展和各行各业的分工愈发明细化,对于改革传统的人工任务调度方式的呼声越来越大.得益于快速发展的计算机技术,我们看到了改革的方向.本系统是针对企业或者事业单位甚至一个小团队的任务 ...

  2. bat 删除文件_利用电脑文本文档建立一个简单方便的删除文件的小程序

    删除文不需要的文件或者资料,是日常工作中必定会遇到了. 各种的杀毒软件或者防护软件都具备删除文件的功能,例如360.腾讯电脑管家.这些操作起来其实也不是太麻烦! 不过呢!今天来和大家分享一个更简单的方 ...

  3. 怎么建立一个简单的程序化交易系统?

    怎么建立一个简单的程序化交易系统? 交易系统构成就有好几个部分,主要给大家介绍一个简单的交易系统的构成. 简单的交易系统建立的话至少要包括3个部分,即入市信号系统.离市信号系统.资金风险控制系统. 入 ...

  4. 用Java实现一个简单的考试系统

    用Java实现一个简单的考试系统 需求分析 设计思路 编码实现 需求分析 该考试系统可以实现的功能和系统要求应该包括: 学生:登录.考试.考试后查看成绩 老师:出题目(往题库中添加新题目).批阅卷子( ...

  5. python追踪屏幕的移动目标_利用树莓派和Python建立一个简单、便宜的移动目标探测器...

    今天我们将讨论如何建立一个简单.便宜的移动目标探测器. 这项研究的目的是确定在一个便宜的移动设备上的对象检测模型是否可以用于现实世界的任务. 作为一个移动平台,我们使用的是树莓派3B.树莓派是一款售价 ...

  6. 用Tkinter打造自己的Python IDE开发工具(1)建立一个简单的代码编辑器

    用Tkinter打造自己的Python IDE开发工具(1)建立一个简单的代码编辑器 很多Python初学者,安装完Python后,已经包含了IDLE代码开发和调试系统.都会再安装各种Python开发 ...

  7. Libra (介绍) 建立一个简单的全球货币和金融基础 (1)

    1. 简介 Libra的使命是建立一个简单的全球货币和金融基础设施,使数十亿人受益[1]. 互联网和移动宽带的出现使全球数十亿人能够获得世界上的知识和信息.高保真通信以及广泛的低成本.更方便的服务.这 ...

  8. 《Linux内核分析》 第三周 构造一个简单的Linux系统MenuOS

    Linux内核分析 第三周 构造一个简单的Linux系统MenuOS 张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/ ...

  9. 基于C#中的Trace实现一个简单的日志系统

      最近在做的项目进入中期阶段,因为在基本框架结构确定以后,现阶段工作重心开始转变为具体业务逻辑的实现,在这个过程中我认为主要有两点,即保证逻辑代码的正确性和容错性.确定需求文档中隐性需求和逻辑缺陷. ...

最新文章

  1. python面向对象的优点_Python面向对象编程——总结面向对象的优点
  2. mysql distinct 条件,多行条件下的mysql distinct列
  3. dz自动开起html,discuz论坛开启markdown 允许html代码嵌入js
  4. bzoj3589 动态树 求链并 容斥
  5. laravel 判断字符串包含_laravel 字符串操作大全
  6. 专家:不仅人脸识别,信息验证、生物特征都不可靠
  7. 湖北工程学院计算机宿舍,湖北工程学院宿舍条件,宿舍环境图片(10篇)
  8. url动态追加参数_url设置的注意事项有哪些?
  9. Linux权限管理的认知
  10. 线程创建 pthread_create 中自定义参数注意事项
  11. CentOS设置时间
  12. Machine Learning - II. Linear Regression with One Variable单变量线性回归 (Week 1)
  13. 现代三角钢琴音源 Native Instruments The Grandeur 1.2
  14. SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 第一篇
  15. python爬取微信公众号_python爬取微信公众号
  16. 雷达原理之 多普勒效应原理及应用(一)
  17. (个人翻译)Scrivener交互式手册中文版FowWindows 03基础操作
  18. 统计图表插件Chart.js(前端常用图表)
  19. JAVA-Servlet项目接入支付宝网站支付
  20. 大规模SNS中兴趣圈子的自动挖掘

热门文章

  1. WA 2A 光电压缩器 “Getting Started” 官方介绍
  2. cyq.data mysql_CYQ.Data 支持 PostgreSQL 数据库
  3. 内存条更换/添加需要知道的电脑信息
  4. C4D三维背景、镜头+Animate二维人物的动画制作流程分享
  5. 拼多多开店要知道的那些事-纽黑文教育
  6. 企业微信公众平台推广方案
  7. 免费使用微软Azure进行文字转语音!分享三个方法给大家!
  8. linux oracle 11g x86,Oracle 11g在Linux6下安装及报错 C [ld-linux-x86-64.so.2+0x14d70]的解决方...
  9. 小白建站之基础配置,选购、配置服务器
  10. 计算机会显示错误的是,电脑提示蓝屏错误WHEA UNCORRECTABLE ERROR的解决方法