安装步骤
准备文件
azkaban-web-server-2.5.0.tar.gz
azkaban-executor-server-2.5.0.tar.gz
azkaban-sql-script-2.5.0.tar.gz
其中,azkaban-web-server-2.5.0.tar.gz是服务器,azkaban-executor-server-2.5.0.tar.gz是执行服务器,azkaban-sql-script-2.5.0.tar.gz是执行的sql脚本。
创建数据库(类似hive数据库,只能是mysql)
create database azkaban;
创建用户
create user 'azkaban'@'%' identified by '123456';
授权给azkaban用户
GRANT SELECT,INSERT,DELETE,UPDATE ON azkaban.*TO'azkaban'@'%'
WITH GRANT OPTION;
解压azkaban-sql文件,将里面的create-all-sql-0.1.0-SNAPSHOT.sql文件取出,放到一个目录下面,在mysql中source该文件,创建需要的表
修改最大packet大小
vi /etc/my.cnf
max_allowed_packet=1024M
修改配置文件
azkaban-exec
[root@hadoop12 conf]# vi ./azkaban.properties
default.timezone.id=Asia/Shanghai
azkaban.webserver.url=http://192.168.56.12:8081
database.type=mysql
mysql.port=3306
mysql.host=192.168.153.131
mysql.database=azkaban
mysql.user=azkaban
mysql.password=123456
executor.port=12321
azkaban-web
[root@hadoop12 azkaban-web]# vi ./conf/azkaban.properties
default.timezone.id=Asia/Shanghai
mysql.port=3306
mysql.host=192.168.56.12
mysql.database=azkaban
mysql.user=azkaban
mysql.password=Azkaban123456..
#,MinimumFreeMemory 要求最低内存为6G
49 azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
[root@hadoop12 azkaban-web] vi ./conf/azkaban-users.xml
//添加web的用户
<user password="123456" roles="admin" username="kgc"/>
启动
azkaban-exec
[root@hadoop12 azkaban-exec]# ./bin/start-exec.sh
[root@hadoop12 azkaban-exec]# jps
20407 AzkabanExecutorServer
[root@hadoop12 azkaban-exec]# curl -G "192.168.56.12:12321/executor?action=activate" && echo
{"status":"success"}
azkaban-web
[root@hadoop12 azkaban-web]# ./bin/start-web.sh
[root@hadoop12 azkaban-web]# jps
2494 AzkabanWebServer
用浏览器访问http://192.168.56.12:8081,用添加的用户名和密码登录
使用
1.编写project和flow文件
azkaban.project
azkaban-flow-version: 2.0
one.flow
nodes:
- name: jobOne
type: command
config:
command: echo "hello world"
2.将以上两文件压缩为zip格式的文件
3.用浏览器登录azkaban点击create project创建工程
4,进入工程,上传之前压缩的zip包
5,点击execute执行
出现上图表示执行成功
flow文件展示
two.flow
nodes :
- name: jobA
type: command
config:
command: echo "jobA"
- name: jobB
type: command
config:
command: sh jobB.sh
- name: jobC
type: command
dependsOn:
- jobA
- jobB
config:
command: echo "jobC"
表示jobC依赖于jobA和jobB,等它们执行完再执行jobC
three.flow
nodes:
- name: joberror
type: command
config:
command: sh jobB.sh
retries: 3
retry.backoff: 5000
表示jobB如果执行出错,重新执行三次 ,每次间隔5秒
four.flow
nodes:
- name: jobA
type: command
config:
command: sh jobA.sh
- name: jobB
type: command
dependsOn:
- jobA
config:
command: sh jobB.sh
condition: ${jobA:wk} == 1
表示当jobA的wk为1时执行jobB,否则不执行
five.flow
nodes:
- name: jobA
type: command
config:
command: sh jobA.sh
- name: jobB
type: command
config:
command: sh jobB.sh
- name: jobC
type: command
dependsOn:
- jobA
- jobB
config:
command: sh jobC.sh
condition: one_success
表示jobC依赖于jobA和jobB,等该两个任务有其中一个执行成功,在执行jobC,否则不执行
支持的预定义宏
预定义宏 | 含义 |
---|---|
all_success | 默认值,所有父job全部成功 |
all_done | 所有父job全部完成 |
all_failed | 所有父job全部失败 |
one_success | 至少有一个父job成功 |
one_failed | 至少有一个父job失败 |
每个预定义宏的相应作业状态:
预定义宏 | 作业状态 |
---|---|
all_done | FAILED, KILLED, SUCCEEDED, SKIPPED, FAILED_SUCCEEDED, CANCELLED |
all_success / one_success | SUCCEEDED, SKIPPED, FAILED_SUCCEEDED |
all_failed / one_failed | FAILED, KILLED, CANCELLED |
azjava.flow
nodes:
- name: akJava
type: javaprocess
config:
Xms: 100M
Xmx: 200M
java.class: cn.kgc.kb11.TestJavaProcess kgc kbll
执行java代码,需将相应jar包一起打包压缩