build

首先下载源码包
包路径:https://github.com/azkaban/azkaban/releases
接着编译源码
执行安装命令:

  1. ./gradlew build installDist -x test #跳过测试

爆出异常1:提示不能执行git命令
image.png
解决异常:安装git
yum install -y git

配置mysql

//创建azkaban数据库
mysql> CREATE DATABASE azkaban;
//创建azkaban用户
mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY '123456';
# give the user INSERT, SELECT, UPDATE, DELETE permission on all tables in the Azkaban db.
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;

[mysqld]
...
#调大max_allowed_packet
max_allowed_packet=1024M

重启mysql

$ sudo /sbin/service mysqld restart

给azkaban建表

mysql> source /opt/module/azkaban-3.56.0/azkaban-db/build/sql/create-all-sql-0.1.0-SNAPSHOT.sql

安装executor server

azkaban有两种安装模式:solo server 和 multi executor server,multi executor server适合生产环境
executor server 程序包路径:./azkaban-exec-server/build/install/azkaban-exec-server

修改azkaban.properties

mysql.port=3306
mysql.host=hadoop105
mysql.database=azkaban
mysql.user=azkaban
mysql.password=123456

启动

./bin/start-exec.sh
curl -G "hadoop105:$(<./executor.port)/executor?action=activate" && echo

安装web server

程序包:./azkaban-exec-server/build/install/azkaban-web-server
修改azkaban.properties

mysql.port=3306
mysql.host=hadoop105
mysql.database=azkaban
mysql.user=azkaban
mysql.password=123456

#配置邮箱smtp,qq邮箱好像不行
mail.sender=132123@163.com
mail.host=smtp.163.com
mail.user=13123@163.com
mail.password=123456

#配置作业告警邮箱
job.failure.email=23424234@163.com
job.success.email=2424@163.com

#修改时区
default.timezone.id=Asia/Shanghai

其他的参数:如邮件、ssl等先不动。
到此安装完毕,可以创建项目进行执行了。

创建项目

创建myflow.project文件,该文件指定flow版本

azkaban-flow-version: 2.0

创建my.flow文件

nodes:
  - name: jobA
    type: command
    config:
      command: echo "This is an echoed text."

上传项目
image.png
点击”Execute Flow”,接着执行项目.

问题1:点击执行项目后,作业停留在”prepareing execution”,不执行,也没有任何报错日志。
排除过程:先查看executor server 和web server的logs,找不到任何报错日志。自己就推测了一下,没有执行,可能是executor没有到执行请求,于是去mysql查找azkaban的executors表,发现出现了两个激活的executor。
image.png
而自己只有一个executor,多出来的一个是由于非法关机,导致上一次的executor没有正常退出,使得web在发任务的时候发错了executor,导致任务不执行。
解决:删掉无效的executor记录。