Linux搭建Azkaban3.X

Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
由多个组件组成,其中最基础有三部分,分别为db、web-server、exec-server。

准备

安装JDK

将文件拷贝到任意目录,解压;在/usr目录下创建java目录,然后将jdk文件夹移动到java目录
tar -zxvf jdk-8u144-linux-x64.tar.gz
mkdir /usr/java
mv jdk1.8.0_144/ /usr/java

配置环境变量:修改/etc/profile,在末尾添加java信息

export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
export PATH=${JAVA_HOME}/bin:$PATH

重新加载profile,查看Java安装情况

[root@kafka1 test]# source /etc/profile
[root@kafka1 test]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

一.下载

Azkaban3.84.21,点击进入下载azkaban-3.84.21.tar.gz

Azkban3.0支持使用表达式定义触发时间。
例如每月最后一天晚上9点表达式:00 21 L * *
59   23   L    *    * 
*    *    *    *    *    *
-    -    -    -    -    -
|    |    |    |    |    |
|    |    |    |    |    + year [optional]
|    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
|    |    |    +---------- month (1 - 12)
|    |    +--------------- day of month (1 - 31)
|    +-------------------- hour (0 - 23)
+------------------------- min (0 - 59)

二.编译

1.将azkaban-3.84.21.tar.gz解压到/data目录下,并进入该目录

tar -zxvf azkaban-3.84.21.tar.gz -C /data

2.在本机编译,编译时需要联网下载相关jar,为了优化速度,可以提前单独下载。

查看配置文件/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包,放到azkaban-3.84.21/gradle/wrapper目录下。

修改配置文件(注释掉原有的,添加新的):
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
distributionUrl=gradle-4.6-all.zip

3.开始编译
有时可能网络原因,编译过程中报错,解决办法:多执行几次./gradlew build,直到所需的jar包下载完成,编译成功。

./gradlew build
编译成功,生成3个有用的文件,用于安装。
azkaban-db-0.1.0-SNAPSHOT.tar.gz
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
azkaban-web-server-0.1.0-SNAPSHOT.tar.gz

三.安装

3.1 将安装文件上传到服务器,解压、重命名

[root@dn2 azkaban]# mv azkaban-db-0.1.0-SNAPSHOT/ azkaban-db
[root@dn2 azkaban]# mv azkaban-exec-server-0.1.0-SNAPSHOT/ azkaban-exec
[root@dn2 azkaban]# mv azkaban-web-server-0.1.0-SNAPSHOT/ azkaban-web
[root@dn2 azkaban]# ll
total 4
drwxr-xr-x 2 root root 4096 Jul 10 05:22 azkaban-db
drwxr-xr-x 6 root root   75 Jul 10 05:22 azkaban-exec
drwxr-xr-x 6 root root   71 Jul 10 05:22 azkaban-web

3.2 进入目录azkaban-db,登录mysql,创建azkaban数据库,创建登录用户test

[root@dn2 azkaban-db]# mysql -u root -p
MariaDB [(none)]> create database azkaban;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use azkaban;
Database changed
MariaDB [azkaban]> CREATE USER 'test'@'%' IDENTIFIED BY 'test';
Query OK, 0 rows affected (0.04 sec)

MariaDB [azkaban]> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'zhenzhen'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

MariaDB [azkaban]> 

3.3执行建表语句

使用新建用户test登录数据库,在数据库azkaban中执行create-all-sql-0.1.0-SNAPSHOT.sql
MariaDB [azkaban]> source create-all-sql-0.1.0-SNAPSHOT.sql
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0
Query OK, 0 rows affected (0.00 sec)

3.4azkaban-web,为服务器jetty生成keystore

在azkaban-web服务目录下创建web/key/文件夹,进入,然后执行:
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
一路回车,密码输入123456(在后续配置文件中会使用),最后确定y即可。

[root@dn2 key]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
Enter keystore password:  [root@dn2 key]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
Enter keystore password:  
Re-enter new password: 
What is your first and last name?
  [Unknown]:  
What is the name of your organizational unit?
  [Unknown]:  
What is the name of your organization?
  [Unknown]:  
What is the name of your City or Locality?
  [Unknown]:  
What is the name of your State or Province?
  [Unknown]:  
What is the two-letter country code for this unit?
  [Unknown]:  
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
  [no]:  y

Enter key password for 
	(RETURN if same as keystore password):  
Re-enter new password: 

keystore生成
[root@dn2 key]# ll
total 4
-rw-r--r-- 1 root root 2243 Sep 10 16:32 keystore

3.5 azkaban-web,修改配置文件/conf/azkaban.properties

#Azkaban Personalization Settings
azkaban.name=自定义
azkaban.label=IC(Intelligent Connection)
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=192.168.x.x
mysql.database=azkaban
mysql.user=test
mysql.password=xxxx
mysql.numconnections=100

# Velocity dev mode
velocity.dev.mode=false

# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.use.ssl=false
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=web/key/keystore
jetty.password=123456
jetty.keypassword=zhenzhen
jetty.truststore=web/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

#Multiple Executor
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

3.6 azkaban-exce,修改azkaban.properties和azkaban-web相同
3.7 启动

使用普通用户,在azkaban的根目录下执行,不能到bin目录下执行,否则报错找不到配置文件路径等。
先启动exce
bin/start-exec.sh
bin/shutdown-exec.sh
再启动web
bin/start-web.sh
bin/shutdown-web.sh

3.8 常见错误

1. ERROR [StdOutErrRedirect] [main] [Azkaban] java.lang.IllegalArgumentException: azkaban.use.multiple.executors must be true. Single executor mode is not supported any more.
设置
azkaban.use.multiple.executors=true

2. azkaban.executor.ExecutorManagerException: No active executors found
没有找到活动的executors,需在MySQL数据库里设置端口为12321的executors表的active为1
update azkaban.executors set active=1;

以上!

你可能感兴趣的:(linux,hadoop)