Azkaban Flow 1.0 的使用
本文于2071天之前发表,文中内容可能已经过时。
一、简介
Azkaban主要通过界面上传配置文件来进行任务的调度。它有两个重要的概念:
- Job: 你需要执行的调度任务;
- Flow:一个获取多个Job及它们之间的依赖关系所组成的图表叫做Flow。
目前 Azkaban 3.x 同时支持 Flow 1.0 和 Flow 2.0,本文主要讲解 Flow 1.0的使用,下一篇文章会讲解Flow 2.0的使用。
二、基本任务调度
2.1 新建项目
在Azkaban主界面可以创建对应的项目:

2.2 任务配置
新建任务配置文件Hello-Azkaban.job
,内容如下。这里的任务很简单,就是输出一句'Hello Azkaban!'
:
1 | command.job |
2.3 打包上传
将Hello-Azkaban.job
打包为zip
压缩文件:

通过Web UI 界面上传:

上传成功后可以看到对应的Flows:

2.4 执行任务
点击页面上的Execute Flow
执行任务:

2.5 执行结果
点击detail
可以查看到任务的执行日志:


三、多任务调度
3.1 依赖配置
这里假设我们有五个任务(TaskA——TaskE),D 任务需要在A,B,C任务执行完成后才能执行,而 E 任务则需要在 D 任务执行完成后才能执行,这种情况下需要使用dependencies
属性定义其依赖关系。各任务配置如下:
Task-A.job :
1 | type=command |
Task-B.job :
1 | type=command |
Task-C.job :
1 | type=command |
Task-D.job :
1 | type=command |
Task-E.job :
1 | type=command |
3.2 压缩上传
压缩后进行上传,这里需要注意的是一个Project只能接收一个压缩包,这里我还沿用上面的Project,默认后面的压缩包会覆盖前面的压缩包:

3.3 依赖关系
多个任务存在依赖时,默认采用最后一个任务的文件名作为Flow的名称,其依赖关系如图:

3.4 执行结果

从这个案例可以看出,Flow1.0无法通过一个job文件来完成多个任务的配置,但是Flow 2.0 就很好的解决了这个问题。
四、调度HDFS作业
步骤与上面的步骤一致,这里以查看HDFS上的文件列表为例。命令建议采用完整路径,配置文件如下:
1 | type=command |
执行结果:

五、调度MR作业
MR作业配置:
1 | type=command |
执行结果:

六、调度Hive作业
作业配置:
1 | type=command |
其中test.sql
内容如下,创建一张雇员表,然后查看其结构:
1 | CREATE DATABASE IF NOT EXISTS hive; |
打包的时候将job
文件与sql
文件一并进行打包:

执行结果如下:

七、在线修改作业配置
在测试时,我们可能需要频繁修改配置,如果每次修改都要重新打包上传,这会比较麻烦。所以Azkaban支持配置的在线修改,点击需要修改的Flow,就可以进入详情页面:

在详情页面点击Eidt
按钮可以进入编辑页面:

在编辑页面可以新增配置或者修改配置:

附:可能出现的问题
如果出现以下异常,多半是因为执行主机内存不足,Azkaban要求执行主机的可用内存必须大于3G才能执行任务:
1 | Cannot request memory (Xms 0 kb, Xmx 0 kb) from system for job |

如果你的执行主机没办法增大内存,那么可以通过修改plugins/jobtypes/
目录下的commonprivate.properties
文件来关闭内存检查,配置如下:
1 | memCheck.enabled=false |