Azkaban环境搭建与常见问题解决
1.环境说明
本次安装在centos7上,已存在的环境包括jdk,Hadoop,hive,sqoop。在此基础上安装azkaban,如果只是简单的安装与实例运行,不涉及Hadoop或hive相关的内容可以直接安装,并不影响使用。JDK与MySQL需要提前安装
2.安装包下载解压
azkaban-web-server-2.5.0.tar.gz
azkaban-executor-server-2.5.0.tar.gz
azkaban-sql-script-2.5.0.tar.gz
以上三个压缩包分别为服务器、执行服务器、sql脚本。上传至虚拟机中解压。如:tar zxvf azkaban-web-server-2.5.0.tar.gz -C /root,“-C”是指将文件解压到指定目录
3.mysql脚本导入
安装步骤可参考https://blog.csdn.net/weixin_43993673/article/details/100163001
https://blog.csdn.net/weixin_43993673/article/details/100511728
登录MySQL后创建azkaban数据库,执行azkaban-sql-script-2.5.0下的create-all-sql-2.5.0.sql脚本
mysql -u root -p
create database azkaban;
use azkaban;
source azkaban-sql-script/ create-all-sql-2.5.0.sql
azkaban-sql-script解压出来的文件名为azkaban-2.5.0,实际目录根据自己的来
4.关闭防火墙
firewall操作:
#service firewalld status; #查看防火墙状态
(disabled 表明 已经禁止开启启动 enable 表示开机自启,inactive 表示防火墙关闭状态 activated(running)表示为开启状态)
#service firewalld start; 或者 #systemctl start firewalld.service;#开启防火墙
#service firewalld stop; 或者 #systemctl stop firewalld.service;#关闭防火墙
#service firewalld restart; 或者 #systemctl restart firewalld.service; #重启防火墙
#systemctl disable firewalld.service#禁止防火墙开启自启
#systemctl enable firewalld#设置防火墙开机启动
#yum remove firewalld#卸载firewall
这里需要关闭防火墙并禁止开机自启
5.JDK安装
这里安装jdk8,对应的安装包可以去官网下载(linux版本)
解压安装包
tar zxvf jdk-8u65-linux-x64.tar.gz
配置环境变量,编辑/etc/profile
vi /etc/profile
在文件最下方添加下面配置
export JAVA_HOME=/root/apps/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
可使用jps或java -version验证
6.ssl配置
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
完成后会在当前目录生成keystore证书文件,将文件拷贝到azkaban web服务器根目录的bin目录下。例如:cp keystore /root/azkaban-web-2.5.0
7.时区修改
将服务器时区修改为上海,使用tzselect 命令。
tzselect
分别输入5、9、1、1
拷贝时区文件
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
如当前时区为shanghai则出现如图所示信息
8.修改azkaban-web-server
cd /root/azkaban-web-2.5.0/conf/
修改azkaban.properties文件
vi azkaban.properties
#Azkaban Personalization Settings
azkaban.name=Test #服务器UI名称,用于服务器上方显示的名字
azkaban.label=My Local Azkaban #描述
azkaban.color=#FF3601 #UI颜色
azkaban.default.servlet.path=/index
web.resource.dir=web/ #默认根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 # global配置文件所在位置
azkaban.project.dir=projects
database.type=mysql #数据库类型
mysql.port=3306 #端口号
mysql.host=localhost
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
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 SSL端口
jetty.port=8081 #Jetty端口
jetty.keystore=keystore #SSL文件名
jetty.password=123456 #SSL文件密码
jetty.keypassword=123456 #Jetty主密码 与 keystore文件相同
jetty.truststore=keystore #SSL文件名
jetty.trustpassword=123456 # SSL文件密码
# Azkaban Executor settings
executor.port=12321 #执行服务器端口
# mail settings
mail.sender= #发送邮箱
mail.host= #发送邮箱smtp地址
job.failure.email= #任务失败时发送邮件的地址
job.success.email= #任务成功时发送邮件的地址
lockdown.create.projects=false
cache.directory=cache #缓存目录
9.修改azkaban-executor-server
cd /root/azkaban-executor-2.5.0/conf/
vi azkaban.properties
#Azkaban
default.timezone.id=Asia/Shanghai #时区
# Azkaban JobTypes Plugins 插件配置
azkaban.jobtype.plugin.dir=plugins/jobtypes #jobtype 插件所在位置
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
#数据库设置
database.type=mysql #数据库类型(目前只支持mysql)
mysql.port=3306 #数据库端口号
mysql.host=192.168.8.129 #数据库IP地址
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
mysql.password=123456 #数据库密码
mysql.numconnections=100 #最大连接数
# Azkaban Executor settings 执行服务器配置
executor.maxThreads=50 #最大线程数
executor.port=12321 #端口号(如修改,请与web服务中一致)
executor.flow.threads=30 #线程数
10.azkaban-web-server
cd /root/azkaban-web-2.5.0/conf/
vi azkaban-users.xml
增加管理员用户
-users>
"azkaban" password="azkaban" roles="admin" groups="azkaban" />
"metrics" password="metrics" roles="metrics"/>
"admin" password="admin" roles="admin,metrics" />
"admin" permissions="ADMIN" />
"metrics" permissions="METRICS"/>
</azkaban-users>
11.启动
Web服务器
在azkaban web服务器目录下执行启动命令
bin/azkaban-web-start.sh
注:在web服务器根目录运行
或者启动到后台
nohup bin/azkaban-web-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &
执行服务器
在执行服务器目录下执行启动命令
bin/azkaban-executor-start.sh
注:只能在执行服务器根目录运行
12.错误
① 启动web服务时出现如下错误
2019/10/11 15:04:41.904 +0800 INFO [AzkabanWebServer] [Azkaban] Loading trigger based scheduler
2019/10/11 15:04:41.921 +0800 INFO [AzkabanWebServer] [Azkaban] Loading plug-in checker and action types
2019/10/11 15:04:41.921 +0800 ERROR [AzkabanWebServer] [Azkaban] plugin path plugins/triggers doesn't exist!
2019/10/11 15:04:41.921 +0800 INFO [AzkabanWebServer] [Azkaban] Setting timezone to Asia/Shanghai
可能是配置文件中时区配置出错,检查配置文件中配置参数前后是否有空格(这里实际在使用时暂时没有影响),可以在web服务器plugins目录下手动创建triggers目录
在浏览器访问时后台出现如下错误
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:710)
at sun.security.ssl.InputRecord.read(InputRecord.java:527)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:708)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
2019/10/11 15:05:02.564 +0800 WARN [log] [Azkaban] EXCEPTION
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:710)
at sun.security.ssl.InputRecord.read(InputRecord.java:527)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:708)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
2019/10/11 15:05:07.584 +0800 WARN [log] [Azkaban] EXCEPTION
SSL权限认证的错误,在访问时使用https://ip:8443。同理,如果使用https报错,那么改为http,用户名:admin,密码:admin