准备环节:(如已安装,均可略过)
A-基础命令安装
由于测试机选择的是centOS7的最小安装,好多Linux的命令是没有的,所以选择先通过yum安装这些命令
1-yum -y install wget 2-yum -y install cmake 3-yum -y install readline-devel zlib-devel openssl-dev 4-yum install -y gcc 5-yum install -y gcc-c++ 6-yum install -y bison.x86_64 7-yum -y install unzip 8-yum -y install git
B-JDK1.8的安装(azkaban强依赖jdk1.8)
Azkaban依赖JDK1.8,所以首先需要安装JDK1.8
1-创建一个文件夹存储azkaban和jdk(这个自定义)
mkdir /software cd /software
2-通过wget下载jdk安装包(直接复制下面的内容回车等待下载完成即可)
wget --no-cookies --no-check-certificate --header "Cookie:gpw_e24=http%3A%2F%2Fwww.oracle.com%2F;oraclelicense=accept-securebackup-cookie""http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
3-解压jdk安装包
tar -zxvfjdk-8u141-linux-x64.tar.gz
文件jdk1.8.0_141为解压后的jdk文件
4-配置jdk环境变量
vim /etc/profile 添加下面的内容到文件末尾
export JAVA_HOME=/software/jdk1.8.0_141 #jdk安装文件的绝对路径 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/rt.jar
如果PATH中没有导入$JAVA_HOME,在PATH的结尾加入:$JAVA_HOME/bin即可,冒号不要丢
5-验证jdk
执行source /etc/profile重新加载环境变量 命令行输入: java -version
显示版本号为1.8.0_141即可.
编译azkaban
1-下载azkaban源码包
cd /software wget https://github.com/azkaban/azkaban/archive/master.zip
2-解压刚刚下载的zip安装包
unzip master.zip 得到文件azkaban-master cd /software/azkaban-master/gradle/wrapper
运行wget命令下载gradle-4.1-all.zip
wget https://services.gradle.org/distributions/gradle-4.1-all.zip
vim /software/azkaban-master/gradle/wrapper/gradle-wrapper.properties
修改最后一项,只保留安装包名称
3-安装npm(不安装可能会报错):
curl --silent --locationhttps://rpm.nodesource.com/setup_5.x | bash - yuminstall -y nodejs
4-编译
cd /software/azkaban-master [执行下面命令开始编译,7-10分钟] ./gradlew clean ./gradlewbuild installDist -x test
DB的安装.(如本机已安装则直接到第三步)
第一步:添加 MariaDB yum 仓库
首先在CentOS操作系统中/etc/yum.repos.d/目录下添加 MariaDB 的YUM配置文件MariaDB.repo文件
vi /etc/yum.repos.d/MariaDB.repo
在该文件中添加以下内容保存:
[mariadb] name = MariaDB baseurl =http://yum.mariadb.org/10.2/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
第二步:安装 MariaDB
通过yum命令轻松安装 MariaDB。 yum install MariaDB-server MariaDB-client -y
MariaDB 安装完毕后,立即启动数据库服务守护进程。 systemctl start mariadb
设置 MariaDB 在操作系统重启后自动启动服务。 systemctl enable mariadb
第三步: 创建azkaban库 (很关键)
输入mysql(直接回车)进入mariadb mysql> CREATE DATABASE azkaban;
创建azkaban用户 mysql> CREATE USER'azkaban'@'%'IDENTIFIED BY 'azkaban';
给azkaban用户授权 mysql> GRANT SELECT,INSERT,UPDATE,DELETE ONazkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
加载azkaban的建表文件 mysql> use azkaban mysql> source/software/azkaban-master/azkaban-db/build/sql/create-all-sql-0.1.0-SNAPSHOT.sql
在azkaban库中添加executors的ip/域名和端口 mysql> insert into executors(host,port)values("ip或者hostname",12321); mysql> insert into executors(host,port)values("ip或者hostname",12321);
设置所有node的状态为1 mysql> update executos set active=1;
安装azkaban
1-拷贝出编译好的安装包
mkdir /software/azkaban cd /software/azkaban
cp/software/azkaban-master/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz /softwear/azkaban
cp/software/azkaban-master/azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz /softwear/azkaban
cp/software/azkaban-master/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz/softwear/azkaban
2-解压
tar -zxvfazkaban-web-server-0.1.0-SNAPSHOT.tar.gz tar -zxvfazkaban-solo-server-0.1.0-SNAPSHOT.tar.gz tar -zxvfazkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
3-删除安装包后得到三个文件
rm -rf *.tar.gz
4-复制solo-server目录下的conf和plugins文件到web-server和executor-server
cp -r /software/azkaban/azkaban-solo-server-0.1.0-SNAPSHOT/conf/software/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/ cp -r /software/azkaban/azkaban-solo-server-0.1.0-SNAPSHOT/plugins/software/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/ cp -r /software/azkaban/azkaban-solo-server-0.1.0-SNAPSHOT/plugins/software/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT/ cp -r /software/azkaban/azkaban-solo-server-0.1.0-SNAPSHOT/conf/software/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT/
5-创建文件夹
mkdir /software/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT/extlib mkdir /software/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/extlib
6-下载mysql-connector 到两个extlib目录下
cd /software wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz tar -zxvf mysql-connector-java-5.1.46.tar.gz
cd mysql-connector-java-5.1.46 cp mysql-connector-java-5.1.46.jar/software/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/extlib/ cp mysql-connector-java-5.1.46.jar/software/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT/extlib/
7-配置azkaban-web-server的jetty ssl
cd /software/azkaban/azkaban-web-server-0.1.0-SNAPSHOT [a-配置jetty ssl]
输入命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA [输入过程如下图,里面所有的密码都是azkaban] 执行完毕后会生成一个keystore文件,要保证该文件在/software/azkaban/azkaban-web-server-0.1.0-SNAPSHOT下
[b-修改conf/azkaban.properties配置文件]
cd /software/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/conf mv azkaban.properties azkaban.properties.bak touch azkaban.properties
vim azkaban.properties
[复制下面的内容保存]
#cat 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=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.maxThreads=25 jetty.ssl.port=8443 jetty.port=8081 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= mail.password= 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=plugins/jobtypes database.type=mysql mysql.port=3306 mysql.host=172.16.21.23 mysql.database=azkaban mysql.user=root mysql.password=123456 mysql.numconnections=100 #multiple settings azkaban.use.multiple.executors=true azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1 azkaban.executorselector.comparator.Memory=1 azkaban.executorselector.comparator.LastDispatched=1 azkaban.executorselector.comparator.CpuUsage=1
[c-上传log4j文件]
(也可直接拷贝\software\azkaban-master\azkaban-solo-server\src\main\resources\log4j.properties)
在conf的同级目录下创建logs文件夹.
mkdir logs
在conf目录中创建log4j.properties文件
cd conf touch log4j.properties vim log4j.properties
[输入下面内容保存退出]
log4j.rootLogger=DEBUG,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
[d-启动azkaban]
cd /software/azkaban/azkaban-web-server-0.1.0-SNAPSHOT bin/start-web.sh
启动后,jps查看进程
8-配置executor-server
[a-配置azkaban.properties] cd/software/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT mvconf/azkaban.properties conf/azkaban.properties.bak touchconf/azkaban.properties vimconf/azkaban.properties
[输入下面的内容保存退出]
# catazkaban.properties # AzkabanPersonalization Settings default.timezone.id=Asia/Shanghai # Loader forprojects executor.global.properties=conf/global.properties azkaban.project.dir=projects # Azkaban pluginsettings azkaban.jobtype.plugin.dir=plugins/jobtypes
#DB settings database.type=mysql mysql.port=3306 mysql.host=172.16.21.23 mysql.database=azkaban mysql.user=root mysql.password=123456 mysql.numconnections=100
# AzkabanExecutor settings executor.maxThreads=50 executor.port=12321 executor.flow.threads=30 azkaban.use.multiple.executors=true azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1 azkaban.executorselector.comparator.Memory=1 azkaban.executorselector.comparator.LastDispatched=1 azkaban.executorselector.comparator.CpuUsage=1
[b-上传log4j.properties文件]
(也可直接拷贝\software\azkaban-master\azkaban-solo-server\src\main\resources\log4j.properties)
在conf的同级目录下创建logs文件夹. mkdir logs
在conf目录中创建log4j.properties文件 cd conf touch log4j.properties vim log4j.properties
[输入下面内容保存退出] log4j.rootLogger=DEBUG,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
[c-启动executor]
bin/start-exec.sh
启动后,jps查看进程
[d-多executor]
登录另一个节点172.16.21.24 创建对应目录 mkdir -p / cd /software/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT
通过scp将配置好的executor整个目录拷贝即可
scp -r root:172.16.21.23:/software/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT .
bin/start-exec.sh #启动executor
到此,搭建完成.搭建完成后遇到的问题在网上基本都可以找到解决办法,这里不再赘述.
唯一需要说明的是,如果DB安装的是mysql,可能出现azkaban executor在数据库中不能更改自身active为1的情况,导致启动时报错:找不到可用的executor.
这里给出两个解决办法:
1-每次运行bin/start-exec.sh之后手动设置executor的active值为1.
或者在启动脚本的最后增加shell语句设置其active值为1
2-使用mariaDB(我的就是这么解决的)
参考文档:
https://blog.csdn.net/lotusctxcm/article/details/70779296?utm_source=itdadao&utm_medium=referral