Azkaban 由三部分构成:
注意:1、使用
Gradle
编译azkaban源码;2、需要使用jdk1.8或更高的版本来进行编译
https://github.com/azkaban/azkaban/releases/tag/4.0.0
,下载 azkaban 源码包wget https://github.com/azkaban/azkaban/archive/refs/tags/4.0.0.tar.gz
# 解压缩
tar -zxvf azkaban-4.0.0.tar.gz -C /Volumes/F/MyGitHub/azkaban
cd azkaban-4.0.0
vim build.gradle
# 添加maven仓库url
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
maven{ url 'http://maven.oschina.net/content/groups/public/'}
./gradlew build installDist -x test
# 开始下载,控制台会打印如下类似的日志
Downloading https://services.gradle.org/distributions/gradle-4.6-all.zip
..........
编译成功后获得安装包和文件:
安装包 | 说明 |
---|---|
azkaban-web-server-0.1.0-SNAPSHOT.tar.gz | Azkaban Web服务安装包 |
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz | Azkaban 执行服务安装包 |
azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz | Azkaban 单机安装包 |
create-all-sql-0.1.0-SNAPSHOT.sql | 编译之后的sql脚本 |
execute-as-user.c | C程序文件脚本 |
前提:某节点已经安装mysql,这里我们以node03已经安装mysql为例。若没有特殊说明,所有操作都是使用
hadoop
普通用户操作。
mysql -uroot -p123456
-- 设置密码的验证强度等级
set global validate_password_policy=LOW;
set global validate_password_length=6;
-- 创建数据库azkaban,用于存储使用azkaban框架过程中产生的数据
CREATE DATABASE azkaban;
CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' identified by 'azkaban' WITH GRANT OPTION;
flush privileges;
use azkaban;
source /bigdata/soft/create-all-sql-0.1.0-SNAPSHOT.sql;
exit;
sudo vim /etc/my.cnf
# 在文件末尾增加如下内容,然后保存、退出
max_allowed_packet=1024M
sudo /sbin/service mysqld restart
# 输出如下日志
Redirecting to /bin/systemctl restart mysqld.service
mkdir -p /bigdata/install/azkaban-4.0.0
# 解压缩
tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C /bigdata/install/azkaban-4.0.0/
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C /bigdata/install/azkaban-4.0.0/
cd /bigdata/install/azkaban-4.0.0/
# 重命名
mv azkaban-web-server-0.1.0-SNAPSHOT/ azkaban-web-server-4.0.0
mv azkaban-exec-server-0.1.0-SNAPSHOT/ azkaban-exec-server-4.0.0
cd azkaban-web-server-4.0.0/
keytool -keystore keystore -alias jetty -genkeypair -keyalg RSA
keystore
# keytool中有很多的cmd及option;查看keytool用法
[hadoop@node03 azkaban-web-server-4.0.0]$ man keytool
# 提示:搜索关键字,如-genkeypair
OPTION DEFAULTS
The following examples show the defaults for various option values.
-alias "mykey"
-keystore <the file named .keystore in the user's home directory>
-genkeypair 生成一个秘钥对(公钥、私钥)
-keyalg RSA 指定使用某算法生成秘钥对
cd /bigdata/install/azkaban-4.0.0/azkaban-web-server-4.0.0
修改 azkaban-web-server 的配置文件,vim conf/azkaban.properties
,修改内容如下# Azkaban Personalization Settings
azkaban.name=Azkaban
azkaban.label=My Azkaban
...
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
# azkaban内置的UserManager用户管理器,当启动web server时,`XmlUserManager`会读取配置文件`azkaban.properties`,然后解析`azkaban-users.xml`
user.manager.class=azkaban.user.XmlUserManager
# 此xml文件中用来配置azkaban的用户、组、角色
user.manager.xml.file=conf/azkaban-users.xml
...
# Azkaban Jetty server properties.
jetty.use.ssl=true
...
# 新增内容
jetty.ssl.port=8443
jetty.keystore=/bigdata/install/azkaban-4.0.0/azkaban-web-server-4.0.0/keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=/bigdata/install/azkaban-4.0.0/azkaban-web-server-4.0.0/keystore
jetty.trustpassword=azkaban
...
mysql.host=node03
...
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
vim conf/azkaban-users.xml
,修改如下 <user password="abc123" roles="myread" username="abcread"/>
<user password="abc123" roles="mywrite" username="abcwrite"/>
<user password="abc123" roles="admin" username="abcadmin"/>
<user password="abc123" roles="myread, mywrite" username="abcrwe" groups="groupx"/>
<group name="groupx" roles="myexe"/>
<role name="myread" permissions="READ"/>
<role name="mywrite" permissions="WRITE"/>
<role name="myexe" permissions="EXECUTE"/>
此文件格式解析,可以参考官网文档
user 格式
Attributes | Values | Required? |
---|---|---|
username | 登录用户名 The login username. | 必须有 |
password | 密码 The login password. | 必须有 |
roles | role角色,如果是多个角色的话,中间逗号分隔 Comma delimited list of roles that this user has. |
非必须 |
groups | 用户所属组,如果是多个组,中间逗号分隔 Comma delimited list of groups that the users belongs to. |
非必须 |
proxy | 代理 Comma delimited list of proxy users that this users can give to a project | 非必须 |
Attributes | Values | Required? |
---|---|---|
name | 组名 The group name | 必须有 |
roles | role角色,如果是多个角色的话,中间逗号分隔 Comma delimited list of roles that this user has. |
非必须 |
Attributes | Values | Required? |
---|---|---|
name | role角色名称 The role name | 必须有 |
permissions | 权限,如果是多个权限的话,中间逗号分隔 Comma delimited list global permissions for the role |
必须有 |
Permissions | Values |
---|---|
ADMIN | 管理员权限,拥有azkaban中所有的权限 Grants all access to everything in Azkaban. |
READ | 对每个project有只读权限 Gives users read only access to every project and their logs |
WRITE | 允许用户上传文件、修改job的properties、删除project Allows users to upload files, change job properties or remove any project |
EXECUTE | 允许用户执行任何flow Allows users to trigger the execution of any flow |
SCHEDULE | 允许用户给任意flow添加或移除指定的调度 Users can add or remove schedules for any flows |
CREATEPROJECTS | 如果创建project功能被锁死,有此权限的用户拥有创建project的权限 Allows users to create new projects if project creation is locked down |
cd /bigdata/install/azkaban-4.0.0/azkaban-exec-server-4.0.0
修改azkaban-exec-server的配置文件,vim conf/azkaban.properties
,修改内容如下# Azkaban Personalization Settings
azkaban.name=Azkaban
azkaban.label=My Azkaban
...
default.timezone.id=Asia/Shanghai
...
jetty.use.ssl=true
......
# 新增内容 添加如下5行内容
jetty.keystore=/bigdata/install/azkaban-4.0.0/azkaban-web-server-4.0.0/keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=/bigdata/install/azkaban-4.0.0/azkaban-web-server-4.0.0/keystore
jetty.trustpassword=azkaban
...
# Where the Azkaban web server is located
azkaban.webserver.url=https://node03:8443
...
mysql.host=node03
...
execute-as-user.c
拷贝到/bigdata/install/azkaban-4.0.0/azkaban-exec-server-4.0.0/plugins/jobtypes
cp /bigdata/soft/execute-as-user.c /bigdata/install/azkaban-4.0.0/azkaban-exec-server-4.0.0/plugins/jobtypes
cd /bigdata/install/azkaban-4.0.0/azkaban-exec-server-4.0.0/plugins/jobtypes
sudo yum -y install gcc-c++
gcc execute-as-user.c -o execute-as-user
sudo chown root execute-as-user
sudo chmod 6050 execute-as-user
vim commonprivate.properties
,增加或修改如下内容# true: 表示azkaban的登录用户,同时作为linux服务器系统的用户
execute.as.user=true
azkaban.native.lib=/bigdata/install/azkaban-4.0.0/azkaban-exec-server-4.0.0/plugins/jobtypes
# 表示,这些azkaban用户(linux系统用户)都属于`myazkaban`用户组
azkaban.group.name=myazkaban
memCheck.enabled=false
cd /bigdata/install/azkaban-4.0.0
scp -r azkaban-exec-server-4.0.0/ hadoop@node01:$PWD
scp -r azkaban-exec-server-4.0.0/ hadoop@node02:$PWD
# node01、node02上分别执行
cd /bigdata/install/azkaban-4.0.0/azkaban-exec-server-4.0.0/plugins/jobtypes
sudo chown root execute-as-user
sudo chmod 6050 execute-as-user
abcrwe
、用户组 myazkaban
,并且用户 abcrwe
属于用户组myazkaban
abcrwe
添加附属组 hadoop
中abcrwe
用户为例(如果使用其他用户,按照此方式创建即可)具体命令如下# node01、node02、node03都执行如下命令
sudo groupadd myazkaban
[sudo] hadoop 的密码:
sudo useradd -g myazkaban abcrwe
sudo passwd abcrwe
新的 密码:123456
重新输入新的密码:
# 将 abcrwe 添加附加用户组
sudo usermod -a -G hadoop abcrwe
# 查看用户 abcrwe
sudo id abcrwe
uid=1002(abcrwe) gid=1002(myazkaban) 组=1002(myazkaban),1001(hadoop)
/bigdata/install/azkaban-4.0.0/azkaban-exec-server-4.0.0
目录创建目录 executions
,为了解决权限问题,3台节点都需要做如下操作cd /bigdata/install/azkaban-4.0.0/azkaban-exec-server-4.0.0
mkdir executions
sudo chown :myazkaban executions/
# node01
cd /bigdata/install/azkaban-4.0.0/azkaban-exec-server-4.0.0
bin/start-exec.sh
# 关闭exec server: `bin/shutdown-exec.sh`
jps
14014 AzkabanExecutorServer
# node01
cd /bigdata/install/azkaban-4.0.0/azkaban-exec-server-4.0.0
curl -G "node01:$(<./executor.port)/executor?action=activate" && echo
# 输出
{"status":"success"}
# node02
bin/start-exec.sh
jps
curl -G "node02:$(<./executor.port)/executor?action=activate" && echo
# node03
bin/start-exec.sh
jps
curl -G "node03:$(<./executor.port)/executor?action=activate" && echo
mysql> select * from executors;
+----+--------+-------+--------+
| id | host | port | active |
+----+--------+-------+--------+
| 1 | node01 | 44066 | 1 |
| 2 | node02 | 40791 | 1 |
| 3 | node03 | 41330 | 1 |
+----+--------+-------+--------+
3 rows in set (0.00 sec)
# node03
cd /bigdata/install/azkaban-4.0.0/azkaban-web-server-4.0.0
bin/start-web.sh
# 关闭web server命令:`bin/shutdown-web.sh`
jps
8142 AzkabanWebServer
之前在安装虚拟机时,已经设置时区为“亚洲/上海”所以不用担心时区问题,不需要修改时区
注:先配置好服务器节点上的时区
但是如果你的时区不是“亚洲/上海”,那么需要修改成此时区
确认时区 :CST +0800
表示时区是东八区(“亚洲/上海”)
$ date +"%Z %z"
CST +0800
# 拷贝该时区文件,覆盖系统本地时区配置
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime