Azkaban 任务调度系统(使用和小技巧)

上节主要介绍了安装搭建和简单的运行一个job,可是真正使用到实际场景仍是须要了解更多的知识,好比任务怎么互相依赖,能够选择指定的节点来执行吗等等一些相关的操做会在本节中进行介绍java

附上:git

喵了个咪的博客:w-blog.cngithub

Azkaban官网: https://azkaban.github.ioweb

官方文档地址: http://azkaban.github.io/azkaban/docs/latestdocker

一 ,任务依赖

以前说的都是部署方式和一个简单的运行例子,那么像开头说的若是任务直接有依赖关系咋办呢? 那就须要用到 dependencies 关键字了数据库

> mkdir azkaban_job
> vim azkaban_job/one.job
type=command
command=echo "this is job one"

> vim azkaban_job/tow.job
type=command
dependencies=one
command=echo "this is job two"

zip -r azkaban_job.zip azkaban_job/

二 ,指定exec运行对应的任务

笔者遇到了难题,如今Azkaban管着3个exec,其中2个是hadoop的一个是docker相关的,可是Azkaban选择执行任务的节点是更具节点的资源来调度的,那么就会出现跑docker相关的命令会跑到hadoop的服务器上,hadoop的命令会跑到docker服务器上,那么有没有办法指定任务执行的环境呢?vim

首先找到对应的ID服务器

在运行任务的时候添加一个变量 异步

PS:局限虽然能够指定在一台节点上执行,可是失去了高可用的优点,若是有不一样类型的任务建议用多套azkabansocket

三 , 参数传递

当我在编写程序的时候经常会用到变量来去传递使用,使用变量的好处在于程序会应该不一样的变量完成不一样的事情,那么对于任务来讲也是一样一个道理,好比我传递的数据库的连接地址的不一样就决定了从哪一个数据库获取源数据,为了程序的泛用性变量是不可缺乏的,azkaban在job文件中也能够指定变量来接受每一次执行时不一样的参数

azkaban变量替换格式是<${name}>,上传下面测试job文件

#command.job
type=command
command=echo 'hello ${name}!'

在运行前配置好要替换 &{name} 参数的具体的值

最终在执行下来就能够看到参数已经被替换了

四 , 邮件配置

应为任务是异步定时的,咱们对于结果的感知每每没有手动跑脚本那么及时,可是若是任何一个任务运行失败可能都会引发一些列问题,在这个状况下消息通知就很重要了,azkaban支持邮件通知任务执行状况

首先要确保在编译的时候有按照本文搭建所示修改过azkaban-common/src/main/java/azkaban/utils/EmailMessage.java文件增长了下面这行代码

props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

邮件配置只须要配置到azkaban.properties就能够了

> vim /usr/local/azkaban-web-server/conf/azkaban.properties

mail.sender= @qq.com
mail.user= 
mail.host=smtp.qq.com
mail.password= 
mail.tls=true
mail.port=465

在执行任务前配置成功失败的收件人

当任务执行完成就会收到以下邮件

相关文章
相关标签/搜索