这里先默认大家都已经安装并配置完成了azkaban
1、启动azkaban
启动azkaban server。进入executor,执行:
bin/ azkaban-executor-start.sh
可以使用bin/azkaban-executor-shutdown.sh关闭
因为有日志输出建议使用nohup 执行
启动azkaban web。进入web,执行:
bin/azkaban-web-start.sh
可以使用bin/ azkaban-web-shutdown.sh关闭
建议使用nohup执行
启动之后,使用https://ip:8443登录。
登陆界面
强调一下使用https!!!!
登录的用户名和密码就是azkaban-users.xml中默认的或配置的。
2、azkaban使用
2.1简单入门。
登录azkaban后创建project。在本地建立xxx.job文件。例如test.job。编辑内容为:
#test job
type=command
command=echo this is test!!!
然后压缩成test.zip文件上传到azkaban。就可以看到:
任务上传
点击进去test可以选择执行。
2
任务配置列表
任务执行效果
3.2 azkaban job配置和依赖
假设azkaban的一个工程有五个job。
o2o_2_hive.job:将清洗完的数据入hive库
o2o_clean_data.job:调用mr清洗hdfs数据
o2o_up_2_hdfs.job:将文件上传至hdfs
o2o_get_file_ftp1.job:从ftp1获取日志
o2o_get_file_fip2.job:从ftp2获取日志
依赖关系: 3依赖4和5,2依赖3,1依赖2,4和5没有依赖关系。各个文件内容如下。
o2o_2_hive.job
type=command
# 执行sh脚本,建议这样做,后期只需维护脚本就行了,azkaban定义工作流程
command=sh /job/o2o_2_hive.sh
dependencies=o2o_clean_data #依赖通过 dependencies 来指定
o2o_clean_data.job
type=command
# 执行sh脚本,建议这样做,后期只需维护脚本就行了,azkaban定义工作流程
command=sh /job/o2o_clean_data.sh
dependencies=o2o_up_2_hdfs
o2o_up_2_hdfs.job
type=command
#需要配置好hadoop命令,建议编写到shell中,可以后期维护
command=hadoop fs -put /data/*
#多个依赖用逗号隔开
dependencies=o2o_get_file_ftp1,o2o_get_file_ftp2
o2o_get_file_ftp1.job
type=command
command=wget "ftp://file1" -O /data/file1
o2o_get_file_ftp2.job
type=command
command=wget "ftp:file2" -O /data/file2
那么将这五个文件打包到一个.zip上传到azkaban的一个工程中。结果如下:
任务列表
点击execute flow.
任务依赖关系
左边 flow view展示各个job与job之间关系。
Notification(通知):可以在这里设置邮件通知。
Failure Options:job执行失败之后怎么执行和处理的设置
Concurrent:job正确执行,怎么执行。例如设置一个job同一个时刻只能执行一份。
Flow parameters:定义job工作流中参数。
2
在左下角,Schedule可以设置定时任务。
定时任务
Time设置job执行时间。定时任务设置的日期。-07:00设置的是时间的校准以哪个为时间参考。选UTC就对了。
Recurrentce下repeat every表示任务失败重复执行。数字表示重复执行的次数。后面days表示定时任务是按天,月,年执行的跨度。
右下角为执行和取消。
备注:有时邮件发送不成功。原因是设置的时候使用了qq邮箱作为smtp服务器。但是qq,smtp默认是关闭的而且设置也麻烦的一笔。所以建议使用163 or其他。在job中也可以指定任务失败或成功,邮件的派送。如下:
邮箱配置
notify.emails 通知发送方。Failure.emails任务失败接收方。success.emails.任务成功接收方。
Plugins和exlib等几个文件夹不是必须需要文件的。启动时可以发行缺少triggers插件不影响。
配置完成后如果发行网页打开报错。恭喜!未知错误,爱莫能助。如果乱码,那么浏览器问题,打不开,你看看是不是用https://打开的。
对了还一个问题,有时你改了时区,其实你不一定改成功了。你使用jps指令看看启动的java任务。Azkaban的任务成功启动。如果时区不一致,任务启动会失败。