1.环境准备
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
yum -y install wget httpd-tools vim
yum install -y git
1.就把gcc当成c语言编译器, g++当成c++语言编译器用就是了.(知乎)
2.wget是一个从网络上自动下载文件的自由工具, 可以在用户退出系统的之后在继续后台执行, 直到下载任务完成.(百度百科)
3.下载azkaban包
git clone https://github.com/azkaban/azkaban.git
或
直接官网下载最新包
https://github.com/azkaban/azkaban/releases
4.查看gcc版本信息
gcc --version
5.自行安装好mysql
https://blog.csdn.net/qq_25073261/article/details/104054320
2.安装
前言:编译失败的可于本文末尾下载已编译好的包,跳过编译步骤,进行第五步
1.将azkaban-3.90.0.tar.gz解压到/data目录下,并进入azkaban目录
tar -zxvf azkaban-3.90.0.tar.gz -C /data
2.优化编译速度
查看azkaban-3.90.0/gradle/wrapper/gradle-wrapper.properties文件:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
可以看到依赖的gradle为4.6版本,从https://gradle.org/releases/下载对应版本的gradle的zip包,放到/data/azkaban-3.90.0/gradle/wrapper目录下。
然后修改gradle-wrapper.properties文件的最后一行,改为:
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
distributionUrl=gradle-4.6-all.zip
3.编译
cd /data/azkaban-3.90.0
##编译命令任选其一
./gradlew build
./gradlew build installDist
./gradlew build installDist -x test
./gradlew distTar
##编译失败,需要清理后,再次编译
./gradlew clean
博主最终是用./gradlew build 编译成功的
注:编译过程中需要注意以下问题:
因为编译的过程需要下载大量的 Jar 包,下载速度根据网络情况而定,通常都不会很快,如果网络不好,耗费半个小时,一个小时都是很正常的;
编译过程中如果出现网络问题而导致 JAR 无法下载,编译可能会被强行终止,这时候重复执行编译命令即可,gradle 会把已经下载的 JAR 缓存到本地,所以不用担心会重复下载 JAR 包。
4.历经千辛(断断续续编译近2天),终成正果
5.安装配置
a.分别复制下面方框内4个文件夹里编译后的.tar.gz文件到 /data/azkaban,并解压
mkdir -p /data/azkaban
cd /data/azkaban-3.90.0
cp azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz /data/azkaban
cp azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz /data/azkaban
cp azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz /data/azkaban
cp azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz /data/azkaban
tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz -C /data/azkaban/
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C /data/azkaban/
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C /data/azkaban/
tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C /data/azkaban/
解压后目录
b.mysql配置
进入mysql所在的节点,用root用户登录mysql
mysql> create database azkaban;
Query OK, 1 row affected (0.00 sec)
mysql> use azkaban;
Database changed
再回到azkaban坐在节点并进入到azkaban-db-0.1.0-SNAPSHOT里面,获取create-all-sql-0.1.0-SNAPSHOT.sql,并发送在mysql所在节点/data/soft/目录下,复制完整路径在mysql里面source,会在azkaban数据库当中自动创建所需要的所有的表
mysql> source /data/soft/create-all-sql-0.1.0-SNAPSHOT.sql
然后再创建azkaban用户
CREATE USER ’ azkaban’@’%’ IDENTIFIED BY ‘azkaban’;
创建完成以后给azkaban用户赋权
grant all privileges on azkaban.* to azkaban@localhost identified by ‘azkaban’;
flush privileges;
然后就可以用azkaban进行登录mysql数据库了
c.配置azkaban-web-server-0.1.0-SNAPSHOT
cd /data/azkaban/azkaban-web-server-0.1.0-SNAPSHOT
执行以下命令
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
口令密码123456,须记住,后面会用到
前5个可不用输入直接回车,第6个国家/地区输入CN,第7个输入Y
秘钥口令建议与秘钥库口令保持一致
详见下图
d.拷贝 azkaban-solo-server下的文件到 azkaban-exec-server中
cd /data/azkaban/azkaban-solo-server-0.1.0-SNAPSHOT
cp -a ./conf/ ./plugins/ …/azkaban-exec-server-0.1.0-SNAPSHOT
选择覆盖
然后进入到/data/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT/conf/配置azkaban.properties
cd /data/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT/conf/
vim azkaban.properties 改动点如下
# 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=America/Los_Angeles
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/data/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/conf/azkaban-users.xml
# Loader for projects
executor.global.properties=/data/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT/conf/global.properties
azkaban.project.dir=projects
database.type=h2
h2.path=./h2
h2.create.tables=true
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081
// add
jetty.ssl.port=8443
jetty.keystore=keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=keystore
jetty.trustpassword=azkaban
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=
mail.host=
# User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
# enduser -> myazkabanhost:443 -> proxy -> localhost:8081
# when this parameters set then these parameters are used to generate email links.
# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
# azkaban.webserver.external_hostname=myazkabanhost.com
# azkaban.webserver.external_ssl_port=443
# azkaban.webserver.external_port=8081
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=/data/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT/plugins/jobtypes
# Number of executions to be displayed
azkaban.display.execution_page_size=16
azkaban.use.multiple.executors=true
// add
database.type=mysql
mysql.port=3306
mysql.host=10.98.59.196
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
# Azkaban Ramp Feature Configuration
#Ramp Feature Related
azkaban.ramp.enabled=true
azkaban.ramp.status.polling.enabled=true
azkaban.ramp.status.polling.interval.min=30
azkaban.ramp.status.push.interval.threshold=15
azkaban.ramp.status.pull.interval.threshold=100
继续在conf目录下编辑log4j.properties,注释掉已经有的,并在下面增加一行
vim log4j.properties
#log4j.rootLogger=INFO, Console
#log4j.logger.azkaban=INFO, server
#log4j.appender.server=org.apache.log4j.RollingFileAppender
#log4j.appender.server.layout=org.apache.log4j.PatternLayout
#log4j.appender.server.File=logs/azkaban-execserver.log
#log4j.appender.server.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{1}] [Azkaban] %m%n
#log4j.appender.server.MaxFileSize=102400MB
#log4j.appender.server.MaxBackupIndex=2
#log4j.appender.Console=org.apache.log4j.ConsoleAppender
#log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#log4j.appender.Console.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{1}] [Azkaban] %m%n
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
e.在azkaban-exec-server目录下创建文件夹:
cd /data/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT
mkdir extlib
将lib目录下的mysql驱动复制到extlib目录下
cp lib/mysql-connector-java-5.1.28.jar extlib/
再将配置好的文件拷贝到azkaban-web-server目录下(选择覆盖)
cp -a conf/ extlib/ …/azkaban-web-server-0.1.0-SNAPSHOT
分别进入到azkaban-exec-server和azkaban-web-server执行bin/start-exec.sh和bin/start-web.sh
cd /data/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT
bin/start-exec.sh
cd /data/azkaban/azkaban-web-server-0.1.0-SNAPSHOT
bin/start-web.sh
再去azkaban使用的mysql数据库中的executors表中查看是否存在active = 1的executor,如果没有,更新即可。
mysql -uazkaban -pazkaban
show databases;
use azkaban;
show tables;
select *from executors;
若active = 0,则下一步,否则直接页面登录
当active=0时,
update executors set active=1 where id = 1;
然后再查看
select *from executors;
f.先jps -l查看进程,停掉azkaban的进程
然后再次执行以上启动azkaban的命令分别进入到azkaban-exec-server和azkaban-web-server执行bin/start-exec.sh和bin/start-web.sh
jps -l
kill -9 25612
cd /data/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT
bin/start-exec.sh
cd /data/azkaban/azkaban-web-server-0.1.0-SNAPSHOT
bin/start-web.sh
g.启动成功后,页面登录
http://10.98.59.198:8081/
用户名/密码 为之前在mysql配置的 zakaban/zakaban
3.使用
详细使用见 标题三 Azkaban实战 https://blog.csdn.net/qq_25073261/article/details/105844352
测试调度是否成功,简单demo
a.在azkaban安装节点创建测试脚本
#/bin/bash
echo `date` >> /data/datax/job_new/test.txt
echo `date`
b.在服务器外编辑job文件
创建test.job文件,内容如下,并打包成zip
# test.job
type=command
command=sh /data/datax/job_new/test.sh
c.在浏览器登录azkaban界面,并创建test工程
d.设置定时调度1分钟执行1次
e.过段时间,查看执行结果
点进其中一个,查看具体详情,这里点的执行id为21的
f.服务器上验证结果(test.txt是否写入了)
g.验证成功,收工
附录
可配合datax相关脚本进行数据同步
datax同步数据到elasticsearch、mongodb、hdfs(hive)示例
https://blog.csdn.net/qq_25073261/article/details/105220976
编译及编译后的相关包
1.gradle-4.6-all组件.zip 下载后需解压一次获得gradle-4.6-all.zip压缩包(该包不需要再解压了)
https://download.csdn.net/download/qq_25073261/12655756
2.azkaban3.90已编译后的tar.gz包azkaban3.90_tar_gz.zip
https://download.csdn.net/download/qq_25073261/12655820
3.azkaban3.90已编译后的zip包azkaban3.90.zip
https://download.csdn.net/download/qq_25073261/12655819