Azkaban是一个批量工做流任务调度器,使用Java语言开发。用于在一个工做流内以一个特定的顺序运行一组工做和流程。Azkaban使用job配置文件创建任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工做流。java
目录node
1、Azkaban优势mysql
2、Azkaban安装模式git
3、Azkaban安装github
1. 准备web
2. 下载源码sql
3. 编译源码数据库
4. 配置数据库服务器
5. 配置web-serverapp
6. 配置exec-server
4、Azkaban启动
提供功能清晰,简单易用的Web UI界面
提供job配置文件快速创建任务和任务之间的依赖关系
提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop
基于Java开发,代码结构清晰,易于二次开发
Azkaban 有三种部署方式:单服务模式、2个服务模式、分布式多服务模式
solo server model(单服务模式):该模式中 webServer 和 executorServer 运行在同一个进程中,进程名是AzkabanSingleServer。可使用自带的H2数据库或者配置mysql数据。该模式适用于小规模的使用。此模式合适我的试用使用。它也能够用在小规模的使用案例中。
two server model(2个服务模式):数据库为MySQL,采用主从设置进行备份,管理服务器(webServer)和执行服务器(executorServer)在不一样进程中运行,这种模式下,管理服务器和执行服务器互不影响。适用在较重的生成环境中。
multiple-executor(分布式多服务模式):存放元数据的数据库为MySQL,采用主从设置进行备份,管理服务器(webServer)和执行服务器(executorServer)在不一样进程中运行。多个 Executor 模式为最重的生产环境。
接下来安装two server model
Ubuntu版本:16.04
JDK版本:1.8
MySQL版本:5.7.25
Azkaban版本:3.70.0
下载稳定的release版本,这里选择的是3.70.0版本
# wget https://github.com/azkaban/azkaban/archive/3.70.0.tar.gz
# tar xvzf azkaban-3.70.0.tar.gz # cd azkaban-3.70.0 # ./gradlew build installDist -x test
编译过程会下载依赖包,时间可能会比较长。编译完成后会在对应的路径下生成可运行的文件,以下:
solo server model(单服务模式): azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
two server model(2个服务模式)和multiple-executor(分布式多服务模式): azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz 和 azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
Azkaban SQL: azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz
因为此次安装的two server model,将azkaban-db-0.1.0-SNAPSHOT.tar.gz、azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz和azkaban-web-server-0.1.0-SNAPSHOT.tar.gz解压到指定的目录azkaban
# mkdir ~/azkaban # cd ~/azkaban # tar xvzf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz # tar xvzf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz # tar xvzf azkaban-db-0.1.0-SNAPSHOT.tar.gz # mv azkaban-web-server-0.1.0-SNAPSHOT azkaban-web-server # mv azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec-server # mv azkaban-db-0.1.0-SNAPSHOT azkaban-db
# ls azkaban-db -l total 112 -rw-rw-r-- 1 root root 106 Mar 26 13:33 create.active_executing_flows.sql -rw-rw-r-- 1 root root 265 Mar 26 13:33 create.active_sla.sql -rw-r--r-- 1 root root 12087 Apr 10 09:47 create-all-sql-0.1.0-SNAPSHOT.sql -rw-rw-r-- 1 root root 487 Mar 26 13:33 create.execution_dependencies.sql -rw-rw-r-- 1 root root 956 Mar 26 13:33 create.execution_flows.sql -rw-rw-r-- 1 root root 516 Mar 26 13:33 create.execution_jobs.sql -rw-rw-r-- 1 root root 780 Mar 26 13:33 create.execution_logs.sql -rw-rw-r-- 1 root root 262 Mar 26 13:33 create.executor_events.sql -rw-rw-r-- 1 root root 323 Mar 26 13:33 create.executors.sql -rw-rw-r-- 1 root root 242 Mar 26 13:33 create.project_events.sql -rw-rw-r-- 1 root root 257 Mar 26 13:33 create.project_files.sql -rw-rw-r-- 1 root root 351 Mar 26 13:33 create.project_flow_files.sql -rw-rw-r-- 1 root root 320 Mar 26 13:33 create.project_flows.sql -rw-rw-r-- 1 root root 331 Mar 26 13:33 create.project_permissions.sql -rw-rw-r-- 1 root root 333 Mar 26 13:33 create.project_properties.sql -rw-rw-r-- 1 root root 482 Mar 26 13:33 create.projects.sql -rw-rw-r-- 1 root root 420 Mar 26 13:33 create.project_versions.sql -rw-rw-r-- 1 root root 200 Mar 26 13:33 create.properties.sql -rw-rw-r-- 1 root root 5235 Mar 26 13:33 create.quartz-tables-all.sql -rw-rw-r-- 1 root root 221 Mar 26 13:33 create.triggers.sql -rw-rw-r-- 1 root root 15 Mar 26 13:33 database.properties -rw-rw-r-- 1 root root 206 Mar 26 13:33 upgrade.3.20.0.to.3.22.0.sql -rw-rw-r-- 1 root root 607 Mar 26 13:33 upgrade.3.43.0.to.3.44.0.sql -rw-rw-r-- 1 root root 379 Mar 26 13:33 upgrade.3.68.0.to.3.69.0.sql -rw-rw-r-- 1 root root 558 Mar 26 13:33 upgrade.3.69.0.to.3.70.0.sql
以root用户登陆MySQL数据库,并执行SQL
# 建用户 建库 受权 刷新权限 mysql> CREATE DATABASE azkaban; mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban'; mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES; # 建立Azkaban表 mysql> source /root/azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql
# vi azkaban-web-server/conf/azkaban.properties # 修改时区 default.timezone.id=Asia/Shanghai # Azkaban mysql settings by default. Users should configure their own username and password. # 数据库类型 database.type=mysql # 数据库端口 mysql.port=3306 # 数据库地址 mysql.host=localhost # 数据库名称 mysql.database=azkaban # 数据库用户 mysql.user=azkaban # 数据库密码 mysql.password=azkaban mysql.numconnections=100 #Multiple Executor azkaban.use.multiple.executors=true
其余配置保持默认。
# vi azkaban-exec-server/conf/azkaban.properties # 修改时区 default.timezone.id=Asia/Shanghai # Azkaban mysql settings by default. Users should configure their own username and password. # 数据库类型 database.type=mysql # 数据库端口 mysql.port=3306 # 数据库地址 mysql.host=localhost # 数据库名称 mysql.database=azkaban # 数据库用户 mysql.user=azkaban # 数据库密码 mysql.password=azkaban mysql.numconnections=100
其余配置保持默认。
先启动executorServer:
# cd azkaban-exec-server # ./bin/start-exec.sh
再启动webServer:
# cd azkaban-web-server # ./bin/start-web.sh
**Note:**启动executorServer时会将executorServer的host,port同步到mysql的executors表中
启动webServer时会出现以下错误,是由于自动同步到executors表中的executor默认是未激活,须要在数据库中update:
2019/04/10 11:11:06.044 +0800 INFO [ExecutorManager] [Azkaban] Initializing executors from database. 2019/04/10 11:11:06.045 +0800 ERROR [ExecutorManager] [Azkaban] No active executors found 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] Exception in thread "main" 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] azkaban.executor.ExecutorManagerException: No active executors found 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] at azkaban.executor.ActiveExecutors.setupExecutors(ActiveExecutors.java:52) 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] at azkaban.executor.ExecutorManager.setupExecutors(ExecutorManager.java:231) 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] at azkaban.executor.ExecutorManager.initialize(ExecutorManager.java:155) 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] at azkaban.executor.ExecutorManager.start(ExecutorManager.java:169) 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] at azkaban.webapp.AzkabanWebServer.launch(AzkabanWebServer.java:235) 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] at azkaban.webapp.AzkabanWebServer.main(AzkabanWebServer.java:228)
mysql> update executors set active=1 where id=2;
update以后就能够正常启动web-server了。
想要启动分布式多服务模式也很简单,多服务模式是多个executorServer分布在 不一样服务器上,只须要将/root/azkaban/azkaban-exec-server拷贝到不一样机器上便可组成分布式。
启动成功,访问http://node01:8081/