from https://www.cnblogs.com/tsxylhs/p/7737016.html
Azkaban简介
Azkaban的是什么
Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
Azkaban 的优点
- 提供功能清晰,简单易用的Web UI界面
- 提供job配置文件快速建立任务和任务之间的依赖关系
- 提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop
- 基于Java开发,代码结构清晰,易于二次开发
Azkaban的安装
Azkaban的安装模式
Azkaban有三种部署方式:solo server mode , cluster server mode,multiple-execoutor
- solo server mode(单机模式):该模式中webServer和executorServer运行在同一个进程中,进程名是AzkabanSingleServer。可以使用自带的H2数据库或者配置mysql数据。该模式适用于小规模的使用。
- cluster server mode(集群模式):该模式使用MySQL数据库,webServer和executorServer运行在不同进程中,该模式适用于大规模应用。
3.0以后出现
- multiple-executor模式:exec进程和web进程在不同的机器上,存放元数据的数据库为mysql
安装mysql
本地安装
解压mysql
Tar -vxf mysql*
安装mysql
MySQL-5.6.21-1.el7.x86_64.rpm-bundle.tar
MySQL-client-5.6.21-1.el7.x86_64.rpm
MySQL-devel-5.6.21-1.el7.x86_64.rpm
MySQL-embedded-5.6.21-1.el7.x86_64.rpm
MySQL-server-5.6.21-1.el7.x86_64.rpm
MySQL-shared-5.6.21-1.el7.x86_64.rpm
MySQL-shared-compat-5.6.21-1.el7.x86_64.rpm
MySQL-test-5.6.21-1.el7.x86_64.rpm
可能会报错
删除包冲突即可
yum -y remove mariadb-libs-*
在线安装
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server
安装完成后
systemctl start mysqld.service
设置mysql账号并创建azkaban数据库
mysql -uroot
mysql> set password for 'root'@'localhost' = password('123456');
mysql> CREATE DATABASE azkaban;
mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
mysql> GRANT ALL ON azkaban.* to 'azkaban'@'%' IDENTIFIED BY 'azkaban';
mysql> flush privileges;
安装jdk
Jdk版本必须为1.8以上版本,低版本报错
上传jdk-8u141-linux-x64.tar.gz 并解压
tar –xvzf jdk-*;
配置jdk环境
export JAVA_HOME=/jdk
export JRE_HOME=/jdk/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JRE_HOME/lib
Azkaban安装
本测试在linux(Centos7.2)版本 使用azkaban-3.38进行安装测试
.编译,安装过程
1. git clone https://github.com/azkaban/azkaban.git
源码,当前为3.38版本(注:需要安装git服务 yum –y install git)
- 进入azkaban 项目进行编译 ./gradlew distTar(注:使用gradle进行安装,若没有gradle会自行安装)
编译结果为
azkaban-common : 常用工具类。
azkaban-db : 对应的sql脚本
azkaban-hadoop-secutity-plugin : hadoop 有关kerberos插件
azkaban-solo-server: web和executor 一起的项目。
azkaban-web/executor-server:azkaban的 web和executor的server信息
azkaban-spi: azkaban存储接口以及exception类
创建azkaban-3.38
Mkdir azkaban-3.38
分别将
ls
cd azkaban-web-server/build/distributions/
ls
cp azkaban-web-server-3.38.0-2-gbd9e6e4.tar.gz /azkaban-3.38/
cd ../../../
ls
cd azkaban-exec-server/build/distributions/
ls
cp azkaban-exec-server-3.38.0-2-gbd9e6e4.tar.gz /azkaban-3.38/
cd ../../../
ls
cd azkaban-db/build/distributions/
ls
cp azkaban-db-3.38.0-2-gbd9e6e4.tar.gz /azkaban-3.38/
解压缩后并重新命名
tar -xvzf azkaban-db-3.38.0-2-gbd9e6e4.tar.gz
tar -xvzf azkaban-exec-server-3.38.0-2-gbd9e6e4.tar.gz
tar -xvzf azkaban-web-server-3.38.0-2-gbd9e6e4.tar.gz
删除tar压缩包
rm -fr *.tar.*
重新命名
mv azkaban-db-3.38.0-2-gbd9e6e4 azkaban-db-3.38.0-2
mv azkaban-exec-server-3.38.0-2-gbd9e6e4 azkaban-exec-server-3.38.0-2
mv azkaban-web-server-3.38.0-2-gbd9e6e4 azkaban-web-server-3.38.0-2
将 azkaban下的
cd azkaban-solo-server/build/distributions/
解压
tar -xvzf azkaban-solo-server-3.38.0-2-gbd9e6e4.tar.gz
然后复制 conf 及plugins 文件到azkaban-3.38下的exec及web下
cp -r conf /azkaban-3.38/azkaban-exec-server-3.38.0-2/
cp -r conf /azkaban-3.38/azkaban-web-server-3.38.0-2/
cp -r plugins /azkaban-3.38/azkaban-web-server-3.38.0-2/
cp -r plugins /azkaban-3.38/azkaban-exec-server-3.38.0-2/
导入azkaban sql
打开mysql使用azkaban数据库
use azkaban
source /azkaban-3.38/azkaban-db-3.38.0-2/create-all-sql-3.38.0-2-gbd9e6e4.sql
source /azkaban-3.38/azkaban-db-3.38.0-2/create.active_executing_flows.sql
source /azkaban-3.38/azkaban-db-3.38.0-2/create.execution_flows.sql
配置keystore
在azkaban-web=*/conf下
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
输入密钥库口令:
密钥库口令太短 - 至少必须为 6 个字符
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的省/市/自治区名称是什么?
[Unknown]:
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=, OU=, O=, L=, ST=, C=CN是否正确?[否]: Y
.配置 conf/azkaban.properties
修改是数据库配置
database.type=mysql
mysql.port=3306
mysql.host=192.168.3.247
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
添加mysql驱动
在/azkaban-3.38/azkaban-exec-server-3.38.0-2下新建文件夹
mkdir extlib
将lib下的mysql链接驱动复制到extlib下
同时需要修改ban-3.38/azkaban-web-server-3.38.0-2
下的azkaban.properties和建立extlib文件将mysql驱动拷入
添加log4j.properties文件
在/conf下新建log4j.properties文件
将
log4j.rootLogger=INFO,C
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.err
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
拷入同样执行器exec文件下的/conf也需要新建
启动
注意先启动执行器然后启动web服务器,需要在bin级目录执行,否则汇报找不到配置文件的错误
cd azkaban-exec-server-3.38.0-2
bin/azkaban-executor-start.sh
cd azkaban-web-server-3.38.0-2
bin/azkaban-web-start.sh
~
~
附录
问题一:
若报错ntive.lib找不到修改文件
vi /azkaban/azkaban-common/src/main/java/azkaban/jobExecutor/ProcessJob.java
将true改为false,重新启动集群
问题二:
若mysql数据库链接不上请检查mysql数据库下azkaban数据库是否可以访问,
若无法远程访问请使用root用户登录到mysql数据库
mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
mysql> GRANT ALL ON azkaban.* to 'azkaban'@'%' IDENTIFIED BY 'azkaban';
上传zip包时,需要保证全部文件在同一级,否则会报找不到文件,即在一起打包
即 zip -r xxx.zip *
azkaban 2.0 job改为flow 更加请打`强大
例子
cat *.project
azkaban-flow-version: 2.0
cat *.flow
config:
mysql.host: 192.168.32.41
mysql.port: 3306
mysql.user: test
mysql.password: test1230
nodes:
- name: Start
type: command
config:
command: echo "open"
- name: test1
type: command
config:
command: echo 'just start'
dependsOn:
- Start