Linux环境下部署Azkaban

一、Azkaban概述

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

1)一个完整的数据分析系统通常都是由大量任务单元组成:Shell 脚本程序,Java 程序,MapReduce 程序、Hive 脚本等2)各任务单元之间存在时间先后及前后依赖关系3)为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;

我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:
(1)通过Hadoop先将原始数据同步到HDFS上;
(2)借助MapReduce计算框架对原始数据进行计算,生成的数据以分区表的形式存储到多张Hive表中;
(3)需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;
(4)将明细数据进行复杂的统计分析,得到结果报表信息;
(5)需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用

2、 常见工作流调度系统

1)简单的任务调度:直接使用 Linux 的 Crontab 来定义;2)复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如 Ooize、Azkaban、Airflow、DolphinScheduler 等。

3、Azkaban 与 Oozie 对比

总体来说,Ooize 相比 Azkaban 是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器 Azkaban 是很不错的候选对象。

二、Azkaban安装步骤

1、上传 压缩包包

1)将 azkaban-db-3.84.4.tar.gz,azkaban-exec-server-3.84.4.tar.gz,azkaban-web-server-3.84.4.tar.gz 上传到 hadoop100 的/usr/local/soft/ 路径下

2)新建/usr/local/soft/azkaban 目录,并将所有 tar 包解压到这个目录下

mkdir /usr/local/soft/azkaban

3)解压 azkaban-db-3.84.4.tar.gz、 azkaban-exec-server-3.84.4.tar.gz 和 azkaban-web-server-3.84.4.tar.gz 到/usr/local/soft/azkaban 目录下

cd /usr/local/soft 
tar -zxvf azkaban-db-3.84.4.tar.gz -C /usr/local/soft/azkaban/
tar -zxvf azkaban-exec-server-3.84.4.tar.gz -C /usr/local/soft/azkaban/
tar -zxvf azkaban-web-server-3.84.4.tar.gz -C /usr/local/soft/azkaban/

4) 进入到/usr/local/soft/azkaban 目录,依次修改名称

cd /usr/local/soft/azkaban 
mv azkaban-exec-server-3.84.4/ azkaban-exec
mv azkaban-web-server-3.84.4/ azkaban-web

2、 启动MySql、创建账户

MySQL版本:8.0.15,部署省略(有需要参考相关部署文档)

1) 启动 MySQL并登录

mysql -u root -proot123

2) 创建 Azkaban 数据库

create database azkaban;

3)创建 azkaban 用户并赋予权限

  • 设置密码有效长度 4 位及以上

    mysql> set global validate_password.length = 4;
  • 设置密码策略最低级别

    mysql> set global validate_password.policy=0;
  • 创建 Azkaban 用户,任何主机都可以访问 Azkaban,密码是 azkaban

    mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
  • 赋予 Azkaban 用户增删改查权限

    GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to'azkaban'@'%' WITH GRANT OPTION;
    flush PRIVILEGES; # 刷新权限

4) 创建 Azkaban 表,完成后退出 MySQL

mysql> use azkaban;
mysql> source /usr/local/soft/azkaban/azkaban-db-3.84.4/create-all-sql-3.84.4.sql;
mysql> quit;

5)更改 MySQL 包大小;防止 Azkaban 连接 MySQL 阻塞

vim /etc/my.cnf

在[mysqld]下面加一行 max_allowed_packet=1024M

[mysqld]
max_allowed_packet=1024M

重启 MySQL

systemctl restart mysqld

3、系统环境变量配置

vi /etc/profile

添加如下内容:

export AZKABAN_HOME=/usr/local/soft/azkaban/
export PATH=$PATH:$AZKABAN_HOME/azkaban-web/bin
export PATH=$PATH:$AZKABAN_HOME/azkaban-exec/bin

使得环境变量生效

source /etc/profile

4、配置 Executor Server

Azkaban Executor Server 处理工作流和作业的实际执行。

编辑 azkaban.properties

vim /usr/local/soft/azkaban/azkaban-exec/conf/azkaban.properties

修改如下属性

#...
default.timezone.id=Asia/Shanghai
#...
azkaban.webserver.url=http://hadoop100:8091
#...
database.type=mysql
mysql.port=3306
mysql.host=hadoop100
mysql.database=azkaban?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
executor.port=12321  #最后一行新增内容

完整内容如下:

# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081
# Where the Azkaban web server is located
azkaban.webserver.url=http://hadoop100:8091
# mail settings
mail.sender=
mail.host=
# User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
# enduser -> myazkabanhost:443 -> proxy -> localhost:8081
# when this parameters set then these parameters are used to generate email links.
# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
# azkaban.webserver.external_hostname=myazkabanhost.com
# azkaban.webserver.external_ssl_port=443
# azkaban.webserver.external_port=8081
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=hadoop100
mysql.database=azkaban?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
executor.port=12321
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30

更换/usr/local/soft/azkaban/azkaban-exec/lib目录下的连接MySQL驱动包为

删除原有mysql-connector-java-5.1.28.jar,添加mysql-connector-java-8.0.15.jar

在MySQL命令窗口中切换到mysql数据库,执行如下内容:

show variables like '%time_zone%';
select now();  #查询当前时间
set global time_zone = '+8:00';
set time_zone = '+8:00';
flush privileges;
select now();  #查询当前时间

进入到/ usr/local/soft/azkaban/azkaban-exec 路径启动executorserver

cd /usr/local/soft/azkaban/azkaban-exec
bin/start-exec.sh
jps

关闭

shutdown-exec.sh

 

下面激活 executor

curl -G "hadoop100:12321/executor?action=activate" && echo

如果出现如下提示,则表示激活成功

{"status":"success"}

注:以上必须激活,如果使用过程中更新配置文件内容,也需要激活一下

5、配置 Web Server

Azkaban Web Server 处理项目管理,身份验证,计划和执行触发。1)编辑hadoop100中 azkaban.properties

vim /usr/local/soft/azkaban/azkaban-web/conf/azkaban.properties

修改如下属性

...
default.timezone.id=Asia/Shanghai
...
jetty.port=8091 #默认8081,防止冲突改成8091
...
database.type=mysql
mysql.port=3306
mysql.host=hadoop100
mysql.database=azkaban?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
...
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus

完整文件

# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8091
# Azkaban Executor settings
# mail settings
mail.sender=
mail.host=
# User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
# enduser -> myazkabanhost:443 -> proxy -> localhost:8081
# when this parameters set then these parameters are used to generate email links.
# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
# azkaban.webserver.external_hostname=myazkabanhost.com
# azkaban.webserver.external_ssl_port=443
# azkaban.webserver.external_port=8081
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=hadoop100
mysql.database=azkaban?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
#Multiple Executor
azkaban.use.multiple.executors=true
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1

说明:

StaticRemainingFlowSize:正在排队的任务数;
CpuStatus:CPU 占用情况
MinimumFreeMemory :内存占用情况 。 测试环境, 必须将 MinimumFreeMemory 删除掉, 否则它会认为集群资源不够,不执行。

更换/usr/local/soft/azkaban/azkaban-web/lib目录下的连接MySQL驱动包为mysql-connector-java-8.0.15.jar,删除原有mysql-connector-java-5.1.28.jar

修改 azkaban-users.xml 文件,添加 soft863用户

vim /usr/local/soft/azkaban/azkaban-web/conf/azkaban-users.xml
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin"
username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<user password="soft863" roles="admin" username="soft863"/>
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>

必须进入到 hadoop100的/usr/local/soft/azkaban/azkaban-web 路径,启动 web server

cd /usr/local/soft/azkaban/azkaban-web
bin/start-web.sh

关闭

shutdown-web.sh

三、访问网页

 访问 http://hadoop100:8091,并用 soft863用户登陆

  • 29
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数智侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值