azkaban 3.70.0安裝踩坑

最近的azakaban源碼包長的和網上的教程很不一樣,很鬱悶。。。要自己踩坑了

系統:centos

mysql:8.0.15

azkaban:3.70.0

1 下載並解壓

https://github.com/azkaban/azkaban/releases根據需要挑一個版本下載並解壓。

或者用命令直接把代碼拉下來:git clone https://github.com/azkaban/azkaban.git

2 編譯。

【編譯大概需要10min,且需要提前安裝git如果沒有的話,git安裝命令:

Ubuntu:sudo apt-get install git

centos:sudo yum install git】

進入azkaban目錄下,執行

> ./gradlew build  #Build Azkaban

這一步報錯說test失敗,
org.jasypt.exceptions.EncryptionOperationNotPossibleException: Encryption raised an exception. A possible cause is you are using strong encryption algorithms and you have not installed the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files in this Java Virtual Machine

需要安裝jce的強算法插件,
https://www.oracle.com/technetwork/cn/java/javase/downloads/jce8-download-2133166-zhs.html下載jce,
此鏈接適用jre8,解壓下載好的文件,
放置到本機java安裝目錄下的:/*/jdk1.8.0_*/jre/lib/security/

> ./gradlew clean  #Clean the build

> ./gradlew installDist

3 創建azkaban元數據庫。

登錄mysql;

mysql> CREATE DATABASE azkaban;

mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';

mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;

mysql> flush privileges;

mysql> exit;

 

#默認的配置數據包大小有點太小,建議修改。

#在/etc/my.cnf文件添加

[mysqld]

...

max_allowed_packet=1024M

#重啓mysql

> /sbin/service mysqld restart

#再次登錄mysql

mysql> source /home/zouyajie/azkaban-master/azkaban-db/build/sql/create-all-sql-0.1.0-

SNAPSHOT.sql

[#該文件的目錄及版本名稱不固定]

如果mysql和*.sql文件沒有在同一臺機器上,那麼需要先把該sql文件發送到安裝mysql的機器上。在sql文件路徑下進入mysql,執行上述source命令。

 

 

4 拷貝。

cp -r azkaban-web-server/* /home/azkaban/webserver

cp -r azkaban-exec-server/* /home/azkaban/executor/

5 配置azkaban-web-server

此目錄如下 bin conf extlib lib plugins web 目錄(如該目錄下沒有相應的文件夾,則直接在 azkaban-solo-server 目錄下拷貝就行)。

把mysql-jdbc*.jar包放到webserver和executor的extlib下,此包可以在lib目錄下找到。

6 生成ssl的keystore

##使用如下命令創建一個SSL密鑰

keytool -keystore keystore -alias jetty -genkey -keyalg RSA

 

生成的 keystore SSL密鑰文件放在azkaban-web-server-3.32.2/bin目錄下即可。一旦keystore SSL密鑰文件創建,需要在azkaban.properties中配置ssl相關的配置。

 

下面一份azkaban-web-server的azkaban.propertiesp完整配置示例

可以參考solo模式的配置文件

azkaban-solo-server/build/distributions/azkaban-solo-server-3.32.2/conf/azkaban.properties作爲模板

根據本機情況修改
 

# Azkaban Personalization Settings
azkaban.name=mtime                                          #服務器UI名稱,用於服務器上方顯示的名字
azkaban.label=mtime                                           #描述
azkaban.color=#FF3601                                        #UI顏色
azkaban.default.servlet.path=/index
web.resource.dir=web/                                        #默認根web目錄
default.timezone.id=Asia/Shanghai                  #默認時區,已改爲亞洲/上海 默認爲美國

# UserManager config
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

# Velocity dev mode
velocity.dev.mode=false

# Azkaban Jetty server properties.
#jetty.use.ssl=false
jetty.use.ssl=true
jetty.ssl.port=8993                                                #Jetty SSL端口
jetty.maxThreads=25                                                     #最大線程數
jetty.port=8081                                                      #Jetty端口

# Azkaban Executor settings
executor.host=localhost
executor.port=12321

# mail settings 可以不設置
[email protected]
mail.host=mail.mtime.com
[email protected]
mail.password=111112232
mail.tls=true

[email protected]
[email protected]

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

#  KeyStore for SSL
jetty.keystore=keystore                                                   #SSL文件名
jetty.password=azkaban                                                    #SSL文件密碼
jetty.keypassword=azkaban                         # Jetty主密碼 與 keystore文件相同
jetty.truststore=keystore                                   #SSL文件名
jetty.trustpassword=azkaban                               # SSL文件密碼

# Setting up the DB
database.type=mysql                                                      #數據庫類型
mysql.port=3306                                                                      
mysql.host=localhost
mysql.database=azkaban
mysql.user=azkaban
mysql.password= azkaban
mysql.numconnections=100

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

修改executor的配置

default.timezone.id=Asia/Shanghai                   #時區
# Azkaban JobTypes 插件配置
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.20.200                        #數據庫IP地址
mysql.database=azkaban                           #數據庫實例名
mysql.user=root                                  #數據庫用戶名
mysql.password=root                              #數據庫密碼
mysql.numconnections=100                         #最大連接數
# 執行服務器配置
executor.maxThreads=50                           #最大線程數
executor.port=12321                            #端口號(如修改,請與web服務中一致)
executor.flow.threads=30                        #線程數

 

先啓動executor,再啓動webserver;可能因爲配置原因,啓動不會打印log,要手動查看是否啓動正確。

啓動出現過的問題:

如果出現連接MySQL 有問題,而且報錯裏有caused by:java.lang.NullPointerException

是因爲我用的mysql是8.*版本的,然而azkaban自帶的mysql的jdbc包是mysql-connector-java-5*.jar,不支持,需要刪掉原來的jdbc重新下載,用mysql-connector-java-8*.jar。jdbc在webserver和exe-server的lib目錄下

首次啓動時,可能會出現“can't find active executor”,則運行以下命令:

[或者關掉重啓;或者往mysql表裏插入一條記錄insert into executors (host,port,active) values ('exec-ip',12321,0);]

curl http://${executorHost}:${executorPort}/executor?action=activate

 

若正常啓動後webserver日誌文件提示:

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

原因:瀏覽器安全證書限制,把http改爲https並在瀏覽器信任該網站。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章