一、环境准备
版本说明:
jdk:1.8.0_151
ant: 1.10.2
mysql:5.1
node:8.5.0
安装JDK
官网下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载jdk-8u151-linux-x64.tar.gz并复制到 /usr/lib目录下重命名为java
解压
tar -zxvf jdk-8u151-linux-x64.tar.gz
配置环境变量
vim /etc/profile
添加如下内容
#set java enviroenment
export JAVA_HOME=/usr/lib/java
export PATH=$JAVA_HOME/bin:$PATH
使环境变量生效
. /etc/profile
验证jdk
[root@shirukai ~]# java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
安装ANT
下载
wget http://mirrors.tuna.tsinghua.edu.cn/apache//ant/binaries/apache-ant-1.10.2-bin.tar.gz
解压
tar -zxvf apache-ant-1.10.2-bin.tar.gz
配置环境变量
export ANT_HOME=/usr/local/apache-ant-1.10.2
export PATH=$PATH:$ANT_HOME/bin
安装mysql
从mysql官网下载 yum repo配置文件
wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
安装yum repo 文件
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
这时,mysql的yum源已经安装好了。
清理缓存并更新yum源
yum clean all
yum makecache
安装mysql
yum install mysql-community-server
启动mysql
service mysqld start
查看初始密码
grep 'temporary password' /var/log/mysqld.log
使用初始密码登录
mysql -u root -p //回车,然后输入上一步查到的初始密码
更改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
修改密码强度限制:https://www.cnblogs.com/ivictor/p/5142809.html
2.配置
创建一个名为azkaban的数据库
mysql> create database azkaban;
设置mysql的信息包大小,默认的太小,改大一点(允许上传较大压缩包)
修改/etc/my.cnf配置文件
vi /etc/my.cnf
[mysqld]
...
max_allowed_packet=1024M
重启mysql
service mysqld restart
安装node
下载
wget https://nodejs.org/dist/v8.5.0/node-v8.5.0-linux-x64.tar.gz /usr/lib/node-v8.5.0-linux-x64.tar.gz
解压
tar zxvf node-v8.5.0-linux-x64.tar.gz
配置环境变量
export NODE_HOME="/usr/lib/node-v8.5.0-linux-x64"
export PATH=$PATH:$NODE_HOME/bin
使修改后的文件生效
source /etc/profile 或者 . /etc/profile
查看安装情况
node -v
npm -v
二、源码编译
服务源码编译
参考博客:https://blog.csdn.net/zk673820543/article/details/76984947
1.准备
在/usr目录下创建一个azkaban目录,并在zakaban下分别创建目录azkaban-app 、azkaban-package、 azkaban-source:安装目录、安装包目录、源码目录
mkdir -p azkaban/azkaban-apps azkaban/azkaban-package azkaban/azkaban-source
2.下载服务源码
地址: https://github.com/azkaban/azkaban/archive/3.43.0.tar.gz
进入azkaban-source 然后wget源码
cd azkaban/azkaban-source
wget https://github.com/azkaban/azkaban/archive/3.43.0.tar.gz
3.build
下载后先解压
tar -zxvf azkaban-3.43.0.tar.gz
然后编译并打包为tar包
cd azkaban-3.43.0
./gradlew distTar
因为需要下载一些依赖,所以编译的过程有些慢
编译完成
4.将编译好的文件复制到安装包目录下
cp /usr/azkaban/azkaban-source/azkaban-3.43.0/azkaban-*/build/distributions/*.tar.gz /usr/azkaban/azkaban-package/
插件源码编译
参考博客:https://cloud.tencent.com/developer/article/1079139
1.下载插件源码
git clone https://github.com/azkaban/azkaban-plugins.git
2.安装编译所需的dustjs-linkedin
npm install -g less dustjs-linkedin
3.编译
cd azkaban-plugins-master
ant
编译完成:
将编译后的文件复制到azkaban-package/plugins下
cp -r * ../../../azkaban-package/plugins/
4.编译出错问题汇总
没有安装java加密扩展导致的错误:
解决:
下载jdk1.8版本的jce扩展jar包:http://ov1a6etyz.bkt.clouddn.com/201804131315_772.rar
将下载后jar包复制到/usr/lib/java/jre/lib/security目录下面
三、安装服务和插件
安装服务
1.准备
将编译好的服务安装包解压
cd /usr/azkaban/azkaban-package/server
这里我们分别解压azkaban-db-0.1.0-SNAPSHOT.tar.gz、azkaban-web-server-0.1.0-SNAPSHOT.tar.gz、azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz、azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz
tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
复制解压后安装包到安装目录/usr/azkaban/azkaban-apps
[root@quickstart server]# mv azkaban-db-0.1.0-SNAPSHOT ../../azkaban-apps/
[root@quickstart server]# mv azkaban-exec-server-0.1.0-SNAPSHOT ../../azkaban-apps/
[root@quickstart server]# mv azkaban-solo-server-0.1.0-SNAPSHOT ../../azkaban-apps/
[root@quickstart server]# mv azkaban-web-server-0.1.0-SNAPSHOT ../../azkaban-apps/
1.Azkaban Web Server配置
导入SQL
进入mysql
mysql -uroot -pcloudera
导入sql
use azkaban;
source /usr/azkaban/azkaban-apps/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql;
生成keystore
进入/usr/azkaban/azkaban-apps/azkaban-web-server-0.1.0-SNAPSHOT目录
执行下面命令生成秘钥:
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
这里我们填写的密码为:azkaban
配置conf/azkaban.properties
如果在azkaban-web-server-0.1.0-SNAPSHOT下没有conf目录,可以从azkaban-solo-server-0.1.0-SNAPSHOT下把conf目录拷贝过来。
cp -r /usr/azkaban/azkaban-apps/azkaban-solo-server-0.1.0-SNAPSHOT/conf/ /usr/azkaban/azkaban-apps/azkaban-web-server-0.1.0-SNAPSHOT/
修改配置
设置数据库
17 database.type=mysql
18 mysql.port=3306
19 mysql.host=localhost
20 mysql.database=azkaban
21 mysql.user=root
22 mysql.password=cloudera
23 mysql.numconnections=100
获取SSL的KeyStore
Azkaban使用SSL套接字连接器,这意味着密钥库必须可用。您可以按照此链接提供的步骤创建一个。
一旦创建了密钥库文件,Azkaban必须被赋予它的位置和密码。其中azkaban.properties
,应覆盖以下属性。
jetty.port=8666 #修改端口号为8666
jetty.keystore=keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=keystore
jetty.trustpassword=azkaban
配置用户管理
用户管理的配置在/usr/azkaban/azkaban-apps/azkaban-web-server-0.1.0-SNAPSHOT/conf/azkaban-user.xml这个配置文件里。
内容如下,按需修改:
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
~
运行web-server
bin/azkaban-web-start.sh
报错1:log4j的配置文件没有找到
在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
重新启动,访问ip:8666地址:
2. Azkaban Executor Server配置
进入/usr/azkaban/azkaban-apps/azkaban-exec-server-0.1.0-SNAPSHOT目录,创建extlib目录
mkdir extlib
从hadoop目录将一下jar包复制到该目录下
或者下载:http://ov1a6etyz.bkt.clouddn.com/201804131431_320.zip
配置/usr/azkaban/azkaban-apps/azkaban-exec-server-0.1.0-SNAPSHOT/conf/azkaban.properties
如果没有conf目录,从web-server将该目录拷贝过来。
修改内容如下:
default.timezone.id=Asia/Shanghai
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
default.timezone.id=Asia/Shanghai
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
default.timezone.id=Asia/Shanghai
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
#database.type=h2
#h2.path=./h2
#h2.create.tables=true
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=cloudera
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
# 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=plugins/jobtypes
azkaban.webserver.url=http://192.168.162.128:8666
启动服务:
[root@quickstart azkaban-exec-server-0.1.0-SNAPSHOT]# bin/azkaban-executor-start.sh
安装插件
HDFS查看器插件
HDFS查看器插件应安装在AzkabanWebServer插件目录中,该目录在AzkabanWebServer的配置文件中指定
1.复制插件到webserver目录下:
cp /usr/azkaban/azkaban-package/plugins/hdfsviewer/packages/azkaban-hdfs-viewer-\$\{git.tag\}.tar.gz /usr/azkaban/azkaban-apps/azkaban-web-server-0.1.0-SNAPSHOT/
2.在websever目录下创建plugins/viewer目录,并将复制过去的tar包解压,重命名为hdfs,复制到viewer下
mkdir -p plugins/viewer
tar -zxvf azkaban-hdfs-viewer-\$\{git.tag\}.tar.gz
3.修改配置文件
viewer.plugins=hdfs
4.将 Azkaban Executor Server 目录下的extlib目录复制到webserver目录下,否则启动的时候回报缺少jar包的错误,如下图所示:
5.启动web服务:
Job Type 插件
Azkaban有一套有限的内置作业类型来运行本地unix命令和简单的java程序。在大多数情况下,您需要安装额外的作业类型插件,例如hadoopJava,Pig,Hive,VoldemortBuildAndPush等。一些常见的插件包含在azkaban-jobtype存档中。
1.在/usr/azkaban/azkaban-apps/azkaban-exec-server-0.1.0-SNAPSHOT创建plugins目录
mkdir plugins
2.将编译好的job type插件复制到plugins目录下
cp -r /usr/azkaban/azkaban-package/plugins/jobtype/packages/azkaban-jobtype-\$\{git.tag\}.tar.gz /usr/azkaban/azkaban-apps/azkaban-exec-server-0.1.0-SNAPSHOT/plugins/
3.解压tar并重命名为jobtypes
tar -zxvf azkaban-jobtype-\$\{git.tag\}.tar.gz
mv azkaban-jobtype-\$\{git.tag\}/ jobtypes
4.配置插件
/usr/azkaban/azkaban-apps/azkaban-exec-server-0.1.0-SNAPSHOT/plugins/jobtypes下修改commonprivate.properties
添加一下配置:
## hadoop security manager setting common to all hadoop jobs
hadoop.security.manager.class=azkaban.security.HadoopSecurityManager_H_1_0
## hadoop security related settings
# proxy.keytab.location=
# proxy.user=
# azkaban.should.proxy=true
# obtain.binary.token=true
# obtain.namenode.token=true
# obtain.jobtracker.token=true
# global classpath items for all jobs. e.g. hadoop-core jar, hadoop conf
jobtype.global.classpath=/usr/lib/hadoop/client-0.20/*:/usr/lib/hadoop-yarn/*
# global jvm args for all jobs. e.g. java.io.temp.dir, java.library.path
#jobtype.global.jvm.args=
# hadoop
hadoop.classpath=
hadoop.home=/usr/lib/hadoop
pig.home=/usr/lib/pig
hive.home=/usr/lib/hive
spark.home=/usr/lib/spark
# configs for jobtype security settings
execute.as.user=false
azkaban.native.lib=
四 、 相关拓展
关于权限管理
https://azkaban.readthedocs.io/en/latest/userManager.html
看官网说明是要在配置文件里指定一个类,然后修改xml文件,用来配置用户权限,如果想要自定义用户权限的话,可以拓展修改azkaban.user.XmlUserManager类。