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