前提
- linux环境
- 安装mysql
- 一个邮箱,必须有授权码的密码
- Java开发环境(JAVA环境变量必须设置 检查:java javac )
编译和解压
1.克隆项目
$ git clone https://github.com/azkaban/azkaban.git
2.进入azkaban目录
$ cd azkaban
$ git checkout 版本号
#版本号通过 https://github.com/azkaban/azkaban/releases 查看
例 :git checkout 3.38.0
3.编译
$ ./gradlew distTar
//注意这行,被提示没有权限 -bash: ./gradlew: Permission denied
最后在 stackoverflow-gradlew: Permission Denied找到了答案:
$ chmod +x gradlew
# Azkaban builds use Gradle and requires Java 8 or higher.
注意是Linux 系统 我用Centos 7 编译成功
编译成功后 压缩包在build/distributions目录里
在 /usr/src/文件夹下创建azkaban-tar文件
4.复制编译后的文件
$ cp azkaban-*/build/distributions/*.tar.gz /usr/src/azkaban-tar
一共5个:
- * azkaban-exec-server-3.38.0.tar.gz
- * azkaban-migration-3.38.0.tar.gz
- * azkaban-solo-server-3.38.0.tar.gz
- * azkaban-db-3.38.0.tar.gz
- * azkaban-web-server-3.38.0.tar.gz
5.解压压缩文件和重命名
tar -zxvf azkaban-db-3.38.0.tar.gz
tar -zxvf azkaban-exec-server-3.38.0.tar.gz
tar -zxvf azkaban-hadoop-security-plugin-3.38.0.tar.gz
tar -zxvf azkaban-solo-server-3.38.0.tar.gz
tar -zxvf azkaban-web-server-3.38.0.tar.gz
mv azkaban-db-3.38.0 azkaban-db
mv azkaban-exec-server-3.38.0 azkaban-exec-server
mv azkaban-hadoop-security-plugin-3.38.0 azkaban-hadoop-security-plugin
mv azkaban-solo-server-3.38.0 azkaban-solo-server
mv azkaban-web-server-3.38.0 azkaban-web-server
安装
1.进入mysql
$ mysql -uroot -p
2.创建数据库
mysql > create database azkaban;
3.创建用户azkaban
mysql > CREATE USER 'azkaban'@'localhost' identified by '123456';
4.授于azkaban用户权限
如果是服务器就把locathost改为服务器的地址
GRANT ALL ON azkaban.* to 'azkaban'@'localhost';
5.更改库
mysql > use azkaban;
6.导入sql :
mysql > source /usr/src/azkaban-tar/azkaban-db/create-all-sql-3.38.0.sql
7.创建SSL配置 (需要root权限)
$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA
8.在azkaban-web-server 下新建key文件夹 (需要root权限)
$ cp keystore azkaban/azkaban-web-server/key
部署 azkaban-web-server (需要root权限)
将/usr/src/azkaban-tar/azkaban-solo-server下的conf目录
拷贝到/usr/src/azkaban- tar/azkaban-web-server目录,
$ cp -r /usr/src/azkaban-tar/azkaban-solo-server/conf /usr/src/azkaban-tar/azkaban-web-server/conf
配置azkaban.properties
##################################
#Azkaban Personalization Settings
azkaban.name=BigData
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
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=azkaban
mysql.password=123456
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=key/keystore
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=key/keystore
jetty.trustpassword=123456
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=
mail.host=
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
添加在 azkaban-web-server/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
部署 azkaban-exec-server
将/usr/src/azkaban-tar/azkaban-solo-server下的conf目录
拷贝到/usr/src/azkaban-tar/azkaban-exec-server目录,
$ cp -r /usr/src/azkaban-tar/azkaban-solo-server/conf /usr/src/azkaban-tar/azkaban-exec-server/conf
配置azkaban.properties
# Azkaban Personalization Settings
default.timezone.id=Asia/Shanghai
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=localhost # 改为服务器的地址
mysql.database=azkaban
mysql.user=azkaban
mysql.password=123456
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes
azkaban.native.lib=false
添加在 azkaban-web-server/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
a) 先关闭两个服务
b) 在编译好的 azkaban-solo-server 中将 plugins/jobtypes/commonprivate.properties 连带目录直接拷贝到
azkaban-exec-server 目录中,并在 commonprivate.properties 添加一条
azkaban.native.lib=false
commonprivate.properties 中有两条记录:
execute.as.user=false
azkaban.native.lib=false
9.启动web-server和exec-server
进入azkaban-exec-server目录,执行
bin/azkaban-executor-start.sh
进入azkaban-web-server目录,执行
bin/azkaban-web-start.sh
查看进程:
$ jps
通过https://localhost:8443 (如果是服务器就把localhost改为服务器的地址)可访问到(谷歌浏览器)web-ui,可以开始创建任务, 访问是需要的用户名密码在 azkaban-web-server/conf/azkaban-users.xml 配置
停止azkaban-web-server
bin/azkaban-web-shutdown.sh
用户可以在conf/azkaban_user.xml中添加
<azkaban-users> <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" /> <user username="metrics" password="metrics" roles="metrics"/> <role name="admin" permissions="ADMIN" /> <role name="metrics" permissions="METRICS"/> </azkaban-users>
mysql的账号是 root 密码为root,mysql用户的账号为azkaban 密码为123456
登录账号为azkaban 密码为 azkaban
运行程序为
cd /usr/src/azkaban-tar/azkaban-web-server
bin/azkaban-web-start.sh
运行程序:
cd /usr/src/azkaban-tar/azkaban-exec-server
bin/azkaban-executor-start.sh
然后查看状态: jps
启动
web服务器
在azkaban web服务器目录下执行启动命令
bin/azkaban-web-start.sh
注:在web服务器根目录运行
或者启动到后台
nohup bin/azkaban-web-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &
执行服务器
在执行服务器目录下执行启动命令
nohup bin/azkaban-executor-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &
注:只能要执行服务器根目录运行
启动完成后,在浏览器(建议使用谷歌浏览器)中输入https://服务器IP地址:8443 ,即可访问azkaban服务了.在登录中输入刚才新的户用名及密码,点击 login.
配置邮件
# mail settings
mail.sender=you_emal@163.com # 邮箱账号
mail.host=smtp.163.com
mail.user=you_emal@163.com # 邮箱账号
mail.password=xxxxx # 授权密码
在job中使用
notify.emails = you_emal@163.com
failure.emails =you_emal@163.com
success.emails =you_emal@163.com
azkaban的使用
job配置选项
- 可以定义job依赖另一个flow,配置
type=flow
flow.name=fisrt_flow
- 可以设置每个job中子命令
type=command
command=echo "hello"
command.1=echo "world"
- 可以配置job失败重启次数,及间隔时间,比如,上述ftp获取日志,我可以配置重试12次,每隔5分钟一次。
type=command
command=wget "ftp://file1" -O /data/file1
retries=12
#单位毫秒
retry.backoff=300000