准备安装包
azkaban-db-3.84.4.tar.gz
azkaban-exec-server-3.84.4.tar.gz
azkaban-web-server-3.84.4.tar.gz
上传至服务器
$ scp azkaban-* admin@hadoop102:/opt/software
admin@hadoop102's password:
azkaban-db-3.84.4.tar.gz 100% 6433 2.0MB/s 00:00
azkaban-exec-server-3.84.4.tar.gz 100% 15MB 18.4MB/s 00:00
azkaban-web-server-3.84.4.tar.gz 100% 19MB 18.6MB/s 00:01
安装 azkaban-db
解压:到 -C(指定目录)
$ tar -zxvf azkaban-db-3.84.4.tar.gz -C /opt/module/
重命名:
$ mv azkaban-db-3.84.4/ azkaban-db
进入到 azkaban-db 中
$ cd azkaban-db
里面存有很多sql脚本。
azkaban-db]$ ll
总用量 156
-rw-rw-r--. 1 admin admin 106 4月 18 2020 create.active_executing_flows.sql
-rw-rw-r--. 1 admin admin 265 4月 18 2020 create.active_sla.sql
-rw-rw-r--. 1 admin admin 14298 4月 18 2020 create-all-sql-3.84.4.sql
-rw-rw-r--. 1 admin admin 487 4月 18 2020 create.execution_dependencies.sql
-rw-rw-r--. 1 admin admin 956 4月 18 2020 create.execution_flows.sql
-rw-rw-r--. 1 admin admin 516 4月 18 2020 create.execution_jobs.sql
...
我们目前能用到的就只有 create-all-sql-3.84.4.sql
-rw-rw-r--. 1 admin admin 14298 4月 18 2020 create-all-sql-3.84.4.sql
登录到mysql数据库
最好在该目录中进入到数据库,方便执行脚本
azkaban-db]$ mysql -uroot -p
Enter password:
创建数据库
指定好编码集,防止出现乱码。
mysql> CREATE DATABASE `azkaban` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
库名可以不用叫 azkaban
,随意,但是不建议去改,就取这个即可。
初始化数据库:
- 切库
mysql> use azkaban;
Database changed
- 执行:初始化数据库
mysql> source create-all-sql-3.84.4.sql;
- 查看
mysql> show tables;
+-----------------------------+
| Tables_in_azkaban |
+-----------------------------+
| QRTZ_BLOB_TRIGGERS |
| QRTZ_CALENDARS |
| QRTZ_CRON_TRIGGERS |
| QRTZ_FIRED_TRIGGERS |
| QRTZ_JOB_DETAILS |
| QRTZ_LOCKS |
| QRTZ_PAUSED_TRIGGER_GRPS |
| QRTZ_SCHEDULER_STATE |
| QRTZ_SIMPLE_TRIGGERS |
| QRTZ_SIMPROP_TRIGGERS |
| QRTZ_TRIGGERS |
| active_executing_flows |
| active_sla |
| execution_dependencies |
| execution_flows |
| execution_jobs |
| execution_logs |
| executor_events |
| executors |
| project_events |
| project_files |
| project_flow_files |
| project_flows |
| project_permissions |
| project_properties |
| project_versions |
| projects |
| properties |
| ramp |
| ramp_dependency |
| ramp_exceptional_flow_items |
| ramp_exceptional_job_items |
| ramp_items |
| triggers |
| validated_dependencies |
+-----------------------------+
35 rows in set (0.00 sec)
安装 azkaban-exec
解压
$ tar -zxvf azkaban-exec-server-3.84.4.tar.gz -C /opt/module/
重命名
$ mv azkaban-exec-server-3.84.4/ azkaban-exec
切入
$ cd azkaban-exec/
$ ll
drwxr-xr-x. 3 admin admin 67 4月 18 2020 bin
drwxr-xr-x. 2 admin admin 81 4月 18 2020 conf
drwxr-xr-x. 2 admin admin 4096 4月 18 2020 lib
drwxr-xr-x. 3 admin admin 22 4月 18 2020 plugins
bin:执行命令
conf:配置命令
lib:依赖包
plugins:用于第三方开发的插件
配置
- 切入 conf
$ cd conf/
-rwxr-xr-x. 1 admin admin 1797 4月 18 2020 azkaban.properties
-rwxr-xr-x. 1 admin admin 0 4月 18 2020 global.properties
-rwxr-xr-x. 1 admin admin 645 4月 18 2020 log4j.properties
- vim azkaban.properties
# 指定时区
default.timezone.id=Asia/Shanghai
#设置web服务器地址,azkaban-web-server-3.84.4.tar.gz 安装在哪台服务器,就设置该服务器地址
azkaban.webserver.url=http://hadoop102:8081
设置mysql
database.type=mysql
mysql.port=3306
mysql.host=mysql服务器
# 指定azkaban数据库,和上面创建的一致
mysql.database=azkaban
mysql.user=mysql账号
mysql.password=mysql密码
mysql.numconnections=100
最后添加
executor.metric.reports=true
executor.metric.milisecinterval.default=60000
# 用于激活executor时指定的端口
executor.port=12321
azkaban-web,azkaban-db 只能有一个,azkaban-exec可以配置多个。我目前有三台服务器,分别是:
hadoop102,hadoop103,hadoop104
目前已经配置好了 hadoop102,按照以上配置,hadoop103,hadoop104也配置上azkaban-exec
,步骤如上。
启动
所有服务器上的azkaban-exec
安装完成之后,接下来就是启动服务器
注意:启动服务器需要在 安装目录
中运行(如下)
azkaban-exec]$ bin/start-exec.sh
默认是以后台的方式运行,所以看不到启动信息。
使用jps
查看azkaban-exec
是否启动
azkaban-exec]$ jps
10517 AzkabanExecutorServer
若出现了AzkabanExecutorServer
则表示服务启动成功。
注意:目前只启动了
hadoop102
,hadoop103及hadoop104也需要以如此的方式启动
疑问:为了只能azkaban-exec
目录下启动?
azkaban-exec
是我们解压安装重名后的安装目录。在该目录中的conf目录中,很多配置都是采用的相对路径配置
如:
user.manager.xml.file=conf/azkaban-users.xml
azkaban.jobtype.plugin.dir=plugins/jobtypes
启动时会依赖当前启动的路径去找相关的配置,若找不到则会报错,若不想在安装目录中启动,则需要配置成绝对路径
。这样可能会比较麻烦,若配置不对,启动依旧会报错。
除了使用jps
查看是否启动完成外,还可以登录mysql
进行查看。
mysql> select * from executors;
+----+-----------+-------+--------+
| id | host | port | active |
+----+-----------+-------+--------+
| 1 | hadoop102 | 12321 | 0 |
| 2 | hadoop103 | 12321 | 0 |
| 3 | hadoop104 | 12321 | 0 |
+----+-----------+-------+--------+
3 rows in set (0.00 sec)
active
: 表示激活状态,未激活为 0
(下面会说)。
激活azkaban-exec
虽然启动azkaban
已经启动,此时还不能进行使用,需要先进行激活。
需要(注意:每次启动服务都需要激活)
hadoop102:12321/executor?action=activate
方式一:采用浏览器方式激活;
![](https://img.haomeiwen.com/i17367901/2aa01018a40e6f24.png)
激活成功,返回响应消息
{"status":"success"}
查看激活状态;hadoop102 已经激活了。
mysql> select * from executors;
+----+-----------+-------+--------+
| id | host | port | active |
+----+-----------+-------+--------+
| 1 | hadoop102 | 12321 | 1 |
| 2 | hadoop103 | 12321 | 0 |
| 3 | hadoop104 | 12321 | 0 |
+----+-----------+-------+--------+
方式二:使用curl
的方式进行激活(推荐
)
curl -G "hadoop103:12321/executor?action=activate" && echo
-G :表示 get 请求
&& echo :输出响应到终端
[admin@hadoop102 azkaban-exec]$ curl -G "hadoop103:12321/executor?action=activate" && echo
{"status":"success"}
再次查看激活状态
mysql> select * from executors;
+----+-----------+-------+--------+
| id | host | port | active |
+----+-----------+-------+--------+
| 1 | hadoop102 | 12321 | 1 |
| 2 | hadoop103 | 12321 | 1 |
| 3 | hadoop104 | 12321 | 0 |
+----+-----------+-------+--------+
最后再激活
hadoop104
服务器即可
mysql> select * from executors;
+----+-----------+-------+--------+
| id | host | port | active |
+----+-----------+-------+--------+
| 1 | hadoop102 | 12321 | 1 |
| 2 | hadoop103 | 12321 | 1 |
| 3 | hadoop104 | 12321 | 1 |
+----+-----------+-------+--------+
最终三台服务器都应该被激活,这样就可以使用azkaban
了。
安装azkaban-web
解压
software]$ tar -zxvf azkaban-web-server-3.84.4.tar.gz -C /opt/module/
重命名
module]$ mv azkaban-web-server-3.84.4/ azkaban-web
切入
module]$ cd azkaban-web/
drwxr-xr-x. 3 admin admin 65 4月 18 2020 bin
drwxr-xr-x. 2 admin admin 106 4月 18 2020 conf
drwxr-xr-x. 2 admin admin 4096 4月 18 2020 lib
drwxr-xr-x. 6 admin admin 73 4月 18 2020 web
修改配置
azkaban-web]$ vim conf/azkaban.properties
更改配置如下:
# 修改时区
default.timezone.id=Asia/Shanghai
# 绑定数据库
mysql.database=azkaban
mysql.user=mysql账号
mysql.password=mysql密码
mysql.numconnections=100
# azkaban 任务分配选择器
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
azkaban.executorselector.filters
当有多个Executor同时启动的时候,需要从中选择一个Executor去执行任务,这里设置一组过滤器的种类,不满足要求的Executor就不会被分配任务
azkaban.executorselector.filters= 可以配置三个值
azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
StaticRemainingFlowSize
:
MinimumFreeMemory
:
CpuStatus
:
配置角色
azkaban-web]$ vim conf/azkaban-users.xml
默认配置
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
添加一个admin
用户
<user groups="group001" password="123321" roles="admin,metrics" username="admin"/>
groups
:绑定组,多个用户可以为一个组;好处,A用户提交的流程
B用户可以执行。
password
:指定该用户的密码
roles
:绑定角色,多个角色使用,
分隔。
username
:用户名称
启动
azkaban-web]$ sh bin/start-web.sh
需要在安装目录下启动,理由和上面的一样。
查看启动进程
azkaban-web]$ jps
11375 AzkabanWebServer
azkaban-web 只需要一台服务器配置即可,这里配置在hadoop102上。
浏览器查看
url:http://hadoop102:8081/
azkaban-web
账号密码,就是在azkaban-users.xml
中配置的。
启停脚本
上面启动方式比较还是有点麻烦。
- 到
azkaban-exec
按照目录中启动executor
服务 - 激活
executor
服务 - 启动
azkaban-web
建议写成脚本的形式。这样更加方便
创建一个 azkaban.sh
shell 文件。
vim azkaban.sh
脚本如下:
#!/bin/bash
# 参数校验,只能输入一个参数
if [ $# -ne 1 ];then
echo '参数只支持start、stop'
exit
fi
# 启动
function start_server(){
for host in hadoop102 hadoop103 hadoop104
do
# 启动 azkaban-exec
ssh $host "cd /opt/module/azkaban-exec; sh bin/start-exec.sh"
done
# 等待5秒中,在进行激活,否则出现 Failed connect to host:12321; 拒绝连接
sleep 5s
for host in hadoop102 hadoop103 hadoop104
do
# 激活 azkaban-exec
curl -G $host:12321/executor?action=activate && echo
done
# 启动 azkaban-exec
cd /opt/module/azkaban-web
sh bin/start-web.sh
}
# 停止
function stop_server(){
for host in hadoop102 hadoop103 hadoop104
do
# 停止 azkaban-exec
ssh $host "sh /opt/module/azkaban-exec/bin/shutdown-exec.sh"
done
# 停止 azkaban-web
sh /opt/module/azkaban-web/bin/shutdown-web.sh
}
# 参数匹配
case $1 in
"start")
start_server
;;
"stop")
stop_server
;;
*)
echo '参数只支持start、stop'
exit
;;
esac
启动
[admin@hadoop102 bin]$ sh azkaban.sh start
{"status":"success"}
{"status":"success"}
{"status":"success"}
关闭
[admin@hadoop102 bin]$ sh azkaban.sh stop
Killing executor. [pid: 13966], attempt: 1
shutdown succeeded
Killing executor. [pid: 10263], attempt: 1
shutdown succeeded
Killing executor. [pid: 6712], attempt: 1
shutdown succeeded
Killing web-server. [pid: 14039], attempt: 1
shutdown succeeded
最后
正式开启 azkaban 之旅
网友评论