https://azkaban.readthedocs.io/en/latest/getStarted.html#
安装
https://azkaban.readthedocs.io/en/latest/getStarted.html#building-from-source
参考上面官方文档,下载编译安装即可。
在启动之前,先配个用户:
<!-- conf/azkaban-users.xml -->
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<!-- 新增 danner 用户,角色为 admin -->
<user password="123456" roles="admin" username="danner"/>
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
执行 bin/start-solo.sh
启动,会有 AzkabanSingleServer
进程,默认是在 8081
端口
上图蓝色框图内的文字和端口都可以在 conf/azkaban.properties
文件中配置
...
# 时区配置成上海
default.timezone.id=Asia/Shanghai
...
案例
https://azkaban.readthedocs.io/en/latest/useAzkaban.html
按上面文档创建一个项目
https://azkaban.readthedocs.io/en/latest/createFlows.html
按照上面的官方文档配置,上传 Flow
即可执行。下面通过几个小案例来熟悉
Hello Azkaban
创建一个文件夹,包含两个文件,层级如下
hello_azkaban
-- flow20.project // 文件名固定
-- basic.flow // 以 flow 后缀名,yaml 格式
flow20.project
: 只写 azkaban-flow-version
版本号
azkaban-flow-version: 2.0
basic.flow
: 任务的内容和依赖
nodes:
- name: jobA
type: command
config:
command: echo "hello azkaban ..."
将 hello_azkaban
文件夹打包成 zip
格式,点击 Upload
按钮上传
点击 Execute Flow
去执行,执行过程和结果被展示
点击 Log
查看
Dependency
上面的案例只是单独任务,若任务之间存在依赖该如何配置呢:flow20.project
内容不变,主要是 basic.flow
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
jobC
依赖 jobA
和 jobB
,打包上传后在 UI
上看看是如何体现
看任务的执行:jobA
和 jobB
同时执行,但jobC
是在前两个任务都执行完后才执行
MR
如果任务是 MR
该如何配置呢,很简单只是一条命令即可
nodes:
- name: MR
type: command
config:
command: /home/hadoop/app/hadoop-2.6.0-cdh5.15.1/bin/hadoop jar /home/hadoop/lib/hadoop/G7-41-dwt.jar com.danner.bigdata.hadoop.homework.ETLApp /project/hadoop/access/log/20190917 /project/hadoop/access/out/20190917 /tmp/data/ip.txt
注意:命令和 jar
要写绝对路径
Hive
Hive
也可以用命令或者 shell
搞定,但这里我换一种方式
https://azkaban.readthedocs.io/en/latest/jobTypes.html#hive-type == >
New Hive Jobtype
这里需要注意,像 hive
、spark
、pig
这种类型是需要插件支持的,所以要先编译插件
- 参考资料三编译插件,需单独编译(插件是放在
azkaban/plugins
下,默认无插件) - 配置好 环境变量 和
classpath
运行环境配置好后,跟之前一眼还是写配置
hive
-- flow20.project
-- basic.flow
-- hive.shell
# basic.flow
nodes:
- name: Hive
# hive 这个 type 要插件支持且与 azkaban/plugins/jobtypes 目录下的名称一致
type: hive
config:
hive.script: hive.shell
# hive.shell
# sql 即可;类似在 hive 终端执行
select * from danner_db.platform_stat;