Azkaban3.x集群部署(multiple executor mode)

Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。 它有三个重要组件:

关系数据库(目前仅支持mysql)

web管理服务器-AzkabanWebServer

执行服务器-AzkabanExecutorServer

Azkaban3.x集群部署(multiple executor mode)

Azkaban使用MySQL来存储它的状态信息,Azkaban Executor Server和Azkaban Web Server均使用到了MySQL数据库。

AzkabanExecutorServer在如下几个方面使用到了数据库:

获取project的信息

执行工作流

存储工作流运行日志

如果一个工作流在不同的执行器上运行,它将从DB中获取状态。

AzkabanWebServer在如下几个方面使用到了数据库:

Project管理

跟踪工作流执行进度

访问历史工作流的运行信息

定时执行工作流任务

记录所有sla规则

AzkabanWebServer
AzkabanWebserver是整个Azkaban工作流系统的主要管理者,它负责project管理、用户登录认证、定时执行工作流、跟踪工作流执 行进度等一系列任务。同时,它还提供Web服务操作的接口,利用该接口,用户可以使用curl或其他ajax的方式,来执行azkaban的相关操作。操作包括:用户登录、创建project、上传workflow、执行workflow、查询workflow的执行进度、杀掉workflow等一系列操作,且这些操作的返回结果均是json的格式。

AzkabanExecutorServer
之所以将AzkabanWebServer和AzkabanExecutorServer分开,主要是因为在某个任务流失败后,可以更方便的将重新执行。而且也更有利于Azkaban系统的升级。

编译安装

1、下载源码

从github上下载azkaban官方源码,目前最新release为3.30.1

git clone git@github.com:azkaban/azkaban.git

2、编译

进入到下载的azkaban目录中进行编译:

# Build Azkaban ./gradlew build(这一步需要等待的时间略久,需要提前安装git、gcc等软件,否则会报错) # Clean the build ./gradlew clean # Build and install distributions ./gradlew installDist # Run tests ./gradlew test # Build without running tests ./gradlew build -x test

相关目录介绍如下:

azkaban-common : 常用工具类 azkaban-db : 对应的sql脚本 azkaban-Hadoop-secutity-plugin : hadoop有关kerberos插件 azkaban-solo-server: web和executor运行在同一进程的项目 azkaban-web-server:azkaban的web-server单独模块 azkaban-executor-server: azkaban的executor-server单独模块 azkaban-spi: azkaban存储接口以及exception类

将编译好的文件拷贝出来:

# mkdir Azkaban_3.30 # cp azkaban-master/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz azkaban_3.30/ # cp azkaban-master/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz azkaban_3.30/ # cp azkaban-master/azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz azkaban_3.30/ # cp azkaban-master/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz azkaban_3.30/

解压:

# cd azkaban_3.30 # tar xvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz # tar xvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz # tar xvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz # tar xvf azkaban-db-0.1.0-SNAPSHOT.tar.gz

配置mysql数据库

1、安装mysql数据库

这里省略安装步骤,使用版本的为5.7

2、创建数据库

创建一个azkaban的数据库:

mysql -uroot -p > CREATE DATABASE azkaban;

授权:

> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'password'; > GRANT ALL ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION; > flush privileges; > FLUSH PRIVILEGES; > EXIT

3、导入建表语句

mysql -uazkaban -p > SOURCE azkaban_3.30/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql;

配置Azkaban

这里将安装三个exec-server和一个web-server,相关组件分配如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d94d3c14af6537b06651d0a1e1cbe489.html