Azkaban
一、Azkaban安装
安装mysql5,7.29
下载安装包
azkaban-master.zip
配置jdk环境变量
yum install -y git
创建azkaban用户
导入azkaban安装包
tar -xzvf azkaban-3.73.1.tar.gz
cd azkaban-3.73.1/
#运行自带方法 Build Azkaban
./gradlew build
显示如下界面,则表示成功。
然后卸载。请确保你现在依旧在 /home/azkaban/azkaban-3.73.1/
./gradlew clean
再依次执行:
./gradlew installDist
./gradlew test
./gradlew build -x test
或者:
./gradlew distTar
文件目录如下:
在每个目录下的build/distributions/中有对应的tar.gz包
cp azkaban-3.80.1/azkaban-*/build/distributions/*.tar.gz a_azkaban/
解压azkaban-db并登录mysql后执行
use Azkaban;
source /opt/azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql;
创建SSL配置
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的省/市/自治区名称是什么?
[Unknown]:
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN是否正确?
[否]: 是
输入 <jetty> 的密钥口令
(如果和密钥库口令相同, 按回车):
修改时区
注:先配置好服务器节点上的时区
1、先生成时区配置文件 Asia/Shanghai,用交互式命令 tzselect 即可
2、拷贝该时区文件,覆盖系统本地时区配置
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改配置文件:
1、azkaban-exec-server配置如下:
#Azkaban
default.timezone.id=Asia/Shanghai #
时区
# Azkaban JobTypes
插件配置,插件所在位置
azkaban.jobtype.plugin.dir= /opt/azkaban/azkaban-exec-server/plugins/jobtypes
#Loader for projects
executor.global.properties=/opt/azkaban/azkaban-exec-server/conf/global.properties
azkaban.project.dir=projects
#
数据库设置
database.type=mysql #
数据库类型
(
目前只支持
mysql)
mysql.port=3306 #
数据库端口号
mysql.host=192.168.88.137 #
数据库
IP
地址
mysql.database=azkaban #
数据库实例名
mysql.user=azkaban#
数据库用户名
mysql.password=azkaban#
数据库密码
mysql.numconnections=100 #
最大连接数
#
执行服务器配置
executor.maxThreads=50 #
最大线程数
executor.port=12321 #
端口号
(
如修改
,
请与
web
服务中一致
)
executor.flow.threads=30 #
线程数
2
、
azkaban-web-server
配置修改
# 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
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=192.168.88.137
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
3、配置登录用户信息
azkaban-users.xml添加如下增加用户
<user password="test" roles="metrics,admin" username="test"/>
启动Azkaban
先启动azkaban-exec-server
bin/start-exec.sh
然后启动azkaban-web-server
bin/start-web.sh
报错:
1、启动azkaban-web时,启动不成功,日志信息如下图,
解决方法为修改数据库executors表中的数据,active字段数据值由0改为1即可。
2、手动激活executor
解决办法执行如下命令
curl http://192.168.88.137:12321/executor?action=activate
3、解决azkaban3.7执行job时一直处于preparing状态问题:
1.考虑内存问题:
修改azkaban-web下的azkaban.properties配置文件
去掉MinimumFreeMemory
过滤器会检查 executor 主机空余内存是否会大于 6G,如果不足 6G,则 web-server 不会将任务交由该主机执行
即为:
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
二、Azkaban的使用
脚本命名格式为filename.job
打包为filename.zip 进行上传到azkaban,然后执行任务。
依赖脚本打包为一个zip文件进行上传。
例如:
test1.job
type=command
command=sh /home/azkaban/testflow/test1.sh
test2.job
type=command
command=sh /home/azkaban/testflow/test2.sh
date.job
type=command
command=sh /home/azkaban/testflow/date.sh
dependencies=test1,test2
hello.job
type=command
command=sh /home/azkaban/testflow/hello.sh
dependencies=date
就形成了依赖任务流,
sh脚本在exec-server服务器中,按需进行编写。
type类型有如下几类:
- command:Linux shell命令行任务
- gobblin:通用数据采集工具
- hadoopJava:运行hadoopMR任务
- java:原生java任务
- hive:支持执行hiveSQL
- pig:pig脚本任务
- spark:spark任务
- hdfsToTeradata:把数据从hdfs导入Teradata
- teradataToHdfs:把数据从Teradata导入hdfs