Azkaban概述及其安装部署

Azkaban是一个由LinkedIn推出的批量工作流任务调度器,提供简单易用的WebUI和任务依赖配置。文章介绍了工作流的背景、调度方式以及Azkaban与其他调度工具的对比。详细阐述了Azkaban的solo-server和two-server两种部署模式,包括配置、启动验证和Web页面的使用。此外,还提供了Azkaban的安装部署步骤,涉及MySQL数据库的配置和权限初始化。
摘要由CSDN通过智能技术生成

一、工作流

  1. 工作流产生背景

    工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流解决的主要问题是:为了实现某个业务目标,利用计算机软件在多个参与者之间按某种预定规则自动传递文档、信息或者任务。

    一个完整的数据分析系统通常都是由多个前后依赖的模块组合构成的:数据采集、数据预处理、数据分析、数据展示等。各个模块单元之间存在时间先后依赖关系,且存在着周期性重复。

    为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。

  2. 工作流调度实现方式

    简单的任务调度:直接使用linux的crontab来定义,但是缺点也是比较明显,无法设置依赖。

    复杂的任务调度:自主开发调度平台,使用开源调度系统,比如azkaban、Apache Oozie、Cascading、Hamake等。

    其中知名度比较高的是Apache Oozie,但是其配置工作流的过程是编写大量的XML配置,而且代码复杂度比较高,不易于二次开发。

  3. 工作流调度工具之间对比
    在这里插入图片描述

二、Azkaban概述

  1. Azkaban介绍
    Azkaban是由linkedin(领英)公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

  2. Azkaban功能特点

  • 提供功能清晰,简单易用的Web UI界面
  • 提供job配置文件快速建立任务和任务之间的依赖关系
  • 提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop
  • 基于Java开发,代码结构清晰,易于二次开发
  1. Azkaban三种部署模式
  • solo server mode
    该模式中webServer和executorServer运行在同一个进程中,进程名是AzkabanSingleServer。使用自带的H2数据库。这种模式包含Azkaban的所有特性,但一般用来学习和测试。

  • two-server mode
    该模式使用MySQL数据库, Web Server和Executor Server运行在不同的进程中。

  • multiple-executor mode
    该模式使用MySQL数据库, Web Server和Executor Server运行在不同的机器中。且有多个Executor Server。该模式适用于大规模应用。

三、Azkaban安装部署

solo-server模式部署

1.节点规划
在这里插入图片描述
2.解压配置

创建存放软件包目录:
mkdir /export/servers/azkaban

解压:
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz –C /export/servers/
修改azkaban.properties:
vim conf/azkaban.properties
default.timezone.id=Asia/Shanghai #修改时区

修改commonprivate.properties:
添加:memCheck.enabled=false  #azkaban默认需要3G的内存,剩余内存不足则会报异常

3.启动验证

cd azkaban-solo-server-0.1.0-SNAPSHOT/
bin/start-solo.sh
注:启动/关闭必须进到azkaban-solo-server-0.1.0-SNAPSHOT/目录下。

在这里插入图片描述
AzkabanSingleServer(对于Azkaban solo‐server模式,Exec Server和Web Server在同一个进程中)

4.登录web页面

访问:http://node01:8081/
默认用户名密码:azkaban

5.验证
创建文件:

创建两个文件one.job  two.job,内容如下,打包成zip包:
cat one.job 
    type=command
    command=echo "this is job one"
cat two.job 
    type=command
    dependencies=one
    command=echo "this is job two"

测试:
http://node-1:8081/index登录=>Create Project=>Upload zip包 =>execute flow执行一步步操作即可。

结果:
在这里插入图片描述
在这里插入图片描述

two-server模式部署(以mysql和azkaban都装在node01节点为例)

1.节点规划
在这里插入图片描述

2.web-server服务器配置

  • 上传压缩包到/export/soft中
将azkaban-sql-script-2.5.0.tar.gz
  azkaban-web-server-2.5.0.tar.gz
  azkaban-executor-server-2.5.0.tar.gz
上传到soft中
  • 在node01上:
进入/export/soft目录:
cd /export/soft

创建/export/servers/azkaban_two_server目录:
mkdir /export/servers/azkaban_two_server

解压文件:
tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C ../servers/azkaban_two_server
tar -zxvf azkaban-web-server-2.5.0.tar.gz -C ../servers/azkaban_two_server
tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C ../servers/azkaban_two_server
  • 生成ssl证书:
    keytool -keystore keystore -alias jetty -genkey -keyalg RSA
    运行此命令后,会提示输入当前生成keystore的密码及相应信息,输入的密码请记住(所有密码统一以123456输入)。
    完成上述工作后,将在当前目录生成keystore证书文件,将keystore拷贝到 azkaban web服务器根目录中:
cp keystore /export/servers/azkaban_two_server/azkaban-web-2.5.0/
  • 配置conf/azkaban.properties
#Azkaban Personalization Settings
#服务器 UI 名称,用于服务器上方显示的名字
azkaban.name=CZXY
#描述
azkaban.label=MyAzkaban
#UI颜色
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
#默认 web server 存放 web 文件的目录
web.resource.dir=/export/servers/azkaban_two_server/azkaban-web-2.5.0/web
default.timezone.id=Asia/Shanghai

#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/export/servers/azkaban_two_server/azkaban-web-2.5.0/conf/azkaban-users.xml

#Loader for projects
executor.global.properties=/export/servers/azkaban_two_server/azkaban-executor-2.5.0/conf/global.properties
azkaban.project.dir=projects

#数据库类型
database.type=mysql
#端口号
mysql.port=3306
#连接IP
mysql.host=node01
mysql.database=azkaban_two_server
mysql.user=root
mysql.password=123456
#最大连接数
mysql.numconnections=100

# Velocity dev mode
velocity.dev.mode=false

# Azkaban Jetty server properties.
#jetty服务器属性
#最大线程数
jetty.maxThreads=25
#jetty SSL端口
jetty.ssl.port=8443
#Jetty 端口
jetty.port=8081
#SSL 文件名(绝对路径)
jetty.keystore=/export/servers/azkaban_two_server/azkaban-web-2.5.0/keystore
#SSL 文件密码
jetty.password=123456
#Jetty 主密码与 keystore 文件相同
jetty.keypassword=123456
#SSL 文件名(绝对路径)
jetty.truststore=/export/servers/azkaban_two_server/azkaban-web-2.5.0/keystore
#SSL 文件密码
jetty.trustpassword=123456

# Azkaban Executor settings
executor.port=12321

# mail settings
mail.sender=qq2475855601@163.com
mail.host=smtp.163.com
mail.user=qq2475855601@163.com
mail.password=zh2475855601
lockdown.create.projects=false

cache.directory=cache

3.mysql配置初始化(在安装mysql软件的节点上执行)

Mysql上创建对应的库、增加权限、创建表:
#创建数据库
CREATE DATABASE azkaban_two_server; 
#使用该数据库
use azkaban_two_server;
#加载初始化sql创建表
Source /export/servers/azkaban_two_server/azkaban-2.5.0/create-all-sql-2.5.0.sql; 

4.exec-server服务器配置

  • 配置conf/azkaban.properties
#Azkaban
default.timezone.id=Asia/Shanghai

# Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=plugins/jobtypes

#Loader for projects
executor.global.properties=/export/servers/azkaban_two_server/azkaban-executor-2.5.0/conf/global.properties
azkaban.project.dir=projects

database.type=mysql
mysql.port=3306
mysql.host=node01
mysql.database=azkaban_two_server
mysql.user=root
mysql.password=123456
mysql.numconnections=100

# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
#线程数
executor.flow.threads=30

5.启动服务

启动executor服务器:
cd /export/servers/azkaban-two-server/executor
bin/azkaban-executor-start.sh

启动web服务器:
cd /export/servers/azkaban-two-server/server
bin/azkaban-web-start.sh

注意:先执行executor,再执行web,避免Web Server会因为找不到执行器启动失败。

6.验证
在浏览器输入:https://node01:8443,即可访问azkaban服务了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大数据老人家i

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

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

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

打赏作者

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

抵扣说明:

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

余额充值