美文网首页
azkaban(一):入门

azkaban(一):入门

作者: 万事万物 | 来源:发表于2021-07-24 08:25 被阅读0次

准备安装包

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,随意,但是不建议去改,就取这个即可。
初始化数据库

  1. 切库
mysql> use azkaban;
Database changed
  1. 执行:初始化数据库
mysql> source create-all-sql-3.84.4.sql;
  1. 查看
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:用于第三方开发的插件
配置

  1. 切入 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
  1. 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
方式一:采用浏览器方式激活;


浏览器激活

激活成功,返回响应消息

{"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中配置的。


启停脚本

上面启动方式比较还是有点麻烦。

  1. azkaban-exec 按照目录中启动 executor 服务
  2. 激活 executor 服务
  3. 启动 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 之旅

相关文章

网友评论

      本文标题:azkaban(一):入门

      本文链接:https://www.haomeiwen.com/subject/xsaumltx.html