首页有四个菜单
- projects:最重要的部分,创建一个工程,所有flows将在工程中运行。
- scheduling:显示定时任务
- executing:显示当前运行的任务
- history:显示历史运行任务
创建工程:
主要介绍projects部分 首先创建一个工程,填写名称和描述,比如o2olog。
o2olog工程
Flows:工作流程,有多个job组成 Permissions:权限管理 Project Logs:工程日志
创建之前我们先了解下之间的关系,一个工程包含一个或多个flows,一个flow包含多个job。job是你想在azkaban中运行的一个进程,可以是简单的linux命令,可是java程序,也可以是复杂的shell脚本,当然,如果你安装相关插件,也可以运行插件。一个job可以依赖于另一个job,这种多个job和它们的依赖组成的图表叫做flow。
flows创建
flow是一系列job的集合,一个模块的逻辑表示。下面举例一个将日志文件落入hive表中的简单功能
定义5个作业:
- o2o_2_hive:将清洗完的数据入hive库
- o2o_clean_data:调用mr清洗hdfs数据
- o2o_up_2_hdfs:将文件上传至hdfs
- o2o_get_file_ftp1:从ftp1获取日志
- o2o_get_file_fip2:从ftp2获取日志
依赖关系: 3依赖4和5,2依赖3,1依赖2,4和5没有依赖关系。
- 创建flow20.project文件,填入:
azkaban-flow-version: 2.0
- 新建o2olog.flow,用以定义作业流和作业
nodes:定义工作流的开始
name:工作流或作业的名字
type:flow代表作业流,command代表作业
config:定义作业的配置
command:定义作业实际执行的命令
dependsOn:定义作业流或作业的依赖
建议将命令都写入脚本中,command中调用该脚本,并且将脚本和上面新建的两个工作流配置文件打入一个zip包中,配置文件中调用的脚本路径相对于zip包中路径。(方便后期维护处理),将zip包上传至azkaban ps:为了测试流程,我将上述command都改为echo +相应命令
上传:
点击o2o_2_hive进入流程,azkaban流程名称以最后一个没有依赖的job定义的。
其他job配置选项
- 可以设置每个job中子命令
type: command
config:
command=echo "hello"
command.1=echo "world"
- 可以配置job失败重启次数,及间隔时间,比如,上述ftp获取日志,我可以配置重试12次,每隔5分钟一次。
type: command
config:
command=wget "ftp://file1" -O /data/file1
retries=12
单位毫秒 retry.backoff=300000
执行flow
右上方是配置执行当前流程或者执行定时流程。
Flow view:流程视图。可以禁用,启用某些job
Notification:定义任务成功或者失败是否发送邮件 Failure Options:定义一个job失败,剩下的job怎么执行 Concurrent:并行任务执行设置 Flow Parametters:参数设置。
1、执行一次 设置好上述参数,点击execute。
绿色代表成功,蓝色是运行,红色是失败。可以查看job运行时间,依赖和日志,点击details可以查看各个job运行情况。
2、定时执行
可以通过设置执行计划,具体设置和linux下crontab类似。上图中设置了每天0点执行该计划,可以看到接下来10次的执行时间点,也可以通过首页菜单栏中的Scheduling中查看计划
3、执行失败时的处理
job执行时难免会报错
可以通过log先查看大致错误
有时通过这里的日志并不能确定具体问题,这时得登录服务器,通过脚本的输出日志查看具体问题
在排查错误后,修改脚本重新上传至项目中,找到上次失败的执行任务
找到任务id,点进去再次执行
可以看到,上次执行成功的任务会自动跳过,直接执行失败的任务