文档章节

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

喵了_个咪
 喵了_个咪
发布于 2018/07/30 09:18
字数 887
阅读 538
收藏 2

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

附上:

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

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

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

一 ,任务依赖

之前说的都是部署方式和一个简单的运行例子,那么像开头说的如果任务直接有依赖关系咋办呢? 那就需要用到 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服务器上,那么有没有办法指定任务执行的环境呢?

首先找到对应的ID

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

PS:局限虽然可以指定在一台节点上执行,但是失去了高可用的优势,如果有不同类型的任务建议用多套azkaban

三 , 参数传递

当我在编写程序的时候常常会用到变量来去传递使用,使用变量的好处在于程序会应该不同的变量完成不同的事情,那么对于任务来说也是同样一个道理,比如我传递的数据库的链接地址的不同就决定了从哪个数据库获取源数据,为了程序的泛用性变量是不可缺少的,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

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

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

© 著作权归作者所有

共有 人打赏支持
喵了_个咪
粉丝 326
博文 150
码字总数 199180
作品 4
杨浦
技术主管
私信 提问
加载中

评论(3)

y
yooc

引用来自“喵了_个咪”的评论

现在看来是没有太好的方式解决,可以吧重启集群和表更新成你希望的ID打包成一个脚本
理论上Azkaban并不推荐指定ID的方式运行
我做了一些尝试,最后我更改了ExecutorServer的启动脚本,判断服务启动后连接Mysql服务器并且更改它的id。来解决了这个问题。
还有一个问题是,Azkaban报警邮件 我想要将具体的错误日志打印到邮件模板中该怎么办?😄
喵了_个咪
喵了_个咪
现在看来是没有太好的方式解决,可以吧重启集群和表更新成你希望的ID打包成一个脚本
理论上Azkaban并不推荐指定ID的方式运行
y
yooc
大神你好,我有个问题要请教你。

我们搭建了azkaban集群,但是重启集群的ExecutorServer会导致我们的executor-id自增长,怎么解决这个问题
Hadoop平台调度系统

1.概述   在Hadoop应用,随着业务指标的迭代,而使其日趋复杂化的时候,管理Hadoop的相关应用会变成一件头疼的事情,如:作业的依赖调度,任务的运行情况的监控,异常问题的排查等,这些问...

jackwxh
2017/03/03
0
0
Azkaban 任务调度系统(安装搭建)

无论是在业务开发还是在大数据开发中,脚本都是必不可少的存在,在初期我们会使用crontab来解决问题,那么当发现规模变大监控需求可视化需求的到来Crontab已经显然满足不了需求,抱着一颗解决大数...

喵了_个咪
2018/07/26
0
0
强子哥哥/MyAzkaban

#MyAzkaban Azkaban是由Linkedin开源的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。 Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一...

强子哥哥
2016/04/15
0
0
我的第2个开源项目:MyAzkaban-3.0.0

网址: http://git.oschina.net/qiangzigege/MyAzkaban http://azkaban.github.io/azkaban/docs/latest 官方例子: https://github.com/joeharris76/azkabanexamples 为什么要做这个东西? ......

强子哥哥
2016/04/14
888
0
Azkaban 工作流调度器

1、Azkaban是什么 我们在工作中应该都遇到过这样的场景:有一个任务,这个任务可以划分成多个较小的任务完成,之所以进行划分是因为小任务之间可以并发的进行,例如是一个shell脚本执行的命令...

张欢19933
2016/11/23
63
0

没有更多内容

加载失败,请刷新页面

加载更多

tac 与cat

tac从后往前看文件,结合grep使用

writeademo
37分钟前
2
0
表单中readonly和dsabled的区别

这两种写法都会使显示出来的文本框不能输入文字, 但disabled会使文本框变灰,而且通过通过表单提交时,获取不到文本框中的value值(如果有的话), 而readonly只是使文本框不能输入,外观没...

少年已不再年少
58分钟前
2
0
SpringBoot上传图片操作

首先有个上传文件的工具类 /** * 文件上传 * @param file * @param filePath * @param fileName * @throws Exception */public static void uploadFile(byte[] file, String ...

_liucui_
今天
6
0
DrawerLayout

public class MainActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener,OnFragmentInteractionListener{ public NavigationView navView; ......

安卓工程师王恒
今天
2
0
python精简笔记

python精简笔记-字符串基本用法 字符串常见用法: * encode() # 编码成bytes类型 * find() # 查找子串 * index() # 获取下标 * replace() # 替换子串 * len(string) # 返回字符串长度,...

平头哥-Enjoystudy
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部