1. Flow 2.0 基础
使用Azkaban Flow 2.0 来创建任务流,Flow 1.0 将被废弃
- 创建一个名为
flow20.project
的文本文件,添加如下内容用以说明这是一个Azkaban Flow 2.0的项目:
azkaban-flow-version: 2.0
- 创建一个名为
basic.flow
的文本文件,其中定义了一个project中所有需要运行的job,使用name
和type
来定义一个job,大部分job都会需要config
这个配置,详细的内容在下文中说明,这里只是一个简单的示例:
nodes:
- name: jobA
type: command
config:
command: echo "This is an echoed text."
- 选择上面创建好的两个文件,然后将其压缩为一个名为
Archive.zip
的zip文件,注意,是把两个文件压缩为一个文件,Linux中的操作如下:
[hadoop@beh07 tmp]$ mkdir zip-test
[hadoop@beh07 tmp]$ mv flow20.project basic.flow zip-test/
[hadoop@beh07 tmp]$ cd zip-test/
# 将目录下的所有文件打成一个zip包
[hadoop@beh07 zip-test]$ zip -r Archive.zip .
# 错误操作
# 这是把zip-test这个目录打成一个zip包
[hadoop@beh07 tmp]$ zip -r Archive.zip zip-test
2. Job Dependencies
使用dependsOn
标签配置Job之间的依赖,以下示例中,在jobA和jobB成功运行之后,jobC将开始运行。
nodes:
- name: jobC
type: noop
# jobC depends on jobA and jobB
dependsOn:
- jobA
- jobB
- name: jobA
type: command
config:
command: echo "This is an echoed text."
- name: jobB
type: command
config:
command: pwd
3. Job Config
Azkaban支持很多类型的Job,在type
标签中指定即可,在config
标签下使用key: value
形式可以加入更多的配置。以下配置中,设置了要执行的pig脚本的位置,这个脚本需要和flow20.project
以及basic.flow
这两个文件一起打成zip包并上传到Project。
nodes:
- name: pigJob
type: pig
config:
pig.script: sql/pig/script.pig
4. Flow Config
Flow级别的配置也使用config
标签,但是它与node
标签同级。Flow级别的配置将会作用于所有的Job。
---
config:
user.to.proxy: foo
failure.emails: noreply@foo.com
nodes:
- name: jobA
type: command
config:
command: echo "This is an echoed text."
5. 多级Flow
你可以在Flow中添加其他子Flow,而不仅是添加Job。
nodes:
- name: embedded_flow
type: flow
config:
prop: value
nodes:
- name: jobB
type: noop
dependsOn:
- jobA
- name: jobA
type: command
config:
command: pwd