其他分享
首页 > 其他分享> > 大数据高级开发工程师——工作流调度器Azkaban(1)

大数据高级开发工程师——工作流调度器Azkaban(1)

作者:互联网

文章目录

工作流调度器Azkaban

Azkaban介绍

在这里插入图片描述

为什么需要工作流调度系统

工作流调度实现方式

Azkaban简介

Azkaban架构

Azkaban基本架构

在这里插入图片描述

Azkaban 由三部分构成:

Azkaban架构的三种运行模式

1. solo server mode(单机模式)

2. two server mode

3. multiple executor mode

Azkaban安装部署

编译 azkaban

1. 下载源码包

注意:1、使用Gradle编译azkaban源码;2、需要使用jdk1.8或更高的版本来进行编译

在这里插入图片描述

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

2. 修改build.gradle

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/'}

在这里插入图片描述

3. 开始编译

./gradlew build installDist -x test
# 开始下载,控制台会打印如下类似的日志
Downloading https://services.gradle.org/distributions/gradle-4.6-all.zip
..........

4. 获得安装包

编译成功后获得安装包和文件:

安装包说明
azkaban-web-server-0.1.0-SNAPSHOT.tar.gzAzkaban Web服务安装包
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gzAzkaban 执行服务安装包
azkaban-solo-server-0.1.0-SNAPSHOT.tar.gzAzkaban 单机安装包
create-all-sql-0.1.0-SNAPSHOT.sql编译之后的sql脚本
execute-as-user.cC程序文件脚本

multiple executor模式安装

前提:某节点已经安装mysql,这里我们以node03已经安装mysql为例。若没有特殊说明,所有操作都是使用hadoop普通用户操作。

1. 数据库准备

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

3. 解压软件安装包

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

4. 安装SSL安全认证

cd azkaban-web-server-4.0.0/
keytool -keystore keystore -alias jetty -genkeypair -keyalg RSA

在这里插入图片描述

# 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 指定使用某算法生成秘钥对

4. 安装azkaban web server

# 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
  <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"/>  

在这里插入图片描述

AttributesValuesRequired?
username登录用户名 The login username.必须有
password密码 The login password.必须有
rolesrole角色,如果是多个角色的话,中间逗号分隔
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非必须
AttributesValuesRequired?
name组名 The group name必须有
rolesrole角色,如果是多个角色的话,中间逗号分隔
Comma delimited list of roles that this user has.
非必须
AttributesValuesRequired?
namerole角色名称 The role name必须有
permissions权限,如果是多个权限的话,中间逗号分隔
Comma delimited list global permissions for the role
必须有
PermissionsValues
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

5. 安装azkaban executor server

# 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
...
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

在这里插入图片描述

# 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
# 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)
cd /bigdata/install/azkaban-4.0.0/azkaban-exec-server-4.0.0
mkdir executions
sudo chown :myazkaban executions/

6. 启动服务

# 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

在这里插入图片描述

在这里插入图片描述

7. 修改linux的时区问题

$ date +"%Z %z"
CST +0800
# 拷贝该时区文件,覆盖系统本地时区配置
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

标签:web,4.0,工程师,exec,调度,azkaban,server,Azkaban
来源: https://blog.csdn.net/yangwei234/article/details/122291505