- Azkaban簡介
官網: https://azkaban.github.io/
Azkaban是由Linkedin開源的一個批量工作流任務調度器。用於在一個工作流內以一個特定的順序運行一組工作和流程。
Azkaban定義了一種KV文件(properties)格式來建立任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工作流。
它有如下功能特點:
Web用戶界面
方便上傳工作流
方便設置任務之間的關係
調度工作流
認證/授權(權限的工作)
能夠殺死並重新啓動工作流
模塊化和可插拔的插件機制
項目工作區
工作流和任務的日誌記錄和審計 - Azkaban安裝模式
Azkaban 有三種部署方式:單服務模式、2個服務模式、分佈式多服務模式
- solo server model(單服務模式):該模式中 webServer 和 executorServer 運行在同一個進程中,進程名是AzkabanSingleServer。可以使用自帶的H2數據庫或者配置mysql數據。該模式適用於小規模的使用。此模式合適個人試用使用。它也可以用在小規模的使用案例中。
- two server model(2個服務模式):數據庫爲mysql,採用主從設置進行備份,管理服務器(webServer)和執行服務器(executorServer)在不同進程中運行,這種模式下,管理服務器和執行服務器互不影響。適用在較重的生成環境中。
- multiple-executor(分佈式多服務模式):存放元數據的數據庫爲mysql,採用主從設置進行備份,管理服務器(webServer)和執行服務器(executorServer)在不同進程中運行。多個Executor 模式爲最重的生產環境。
- Azkaban安裝(兩個服務模式安裝)
-
安裝前準備
安裝MySQL
安裝jdk1.8 -
下載,編譯
軟件下載目錄 /export/softwares/, 軟件安裝目錄 /export/servers/
cd /export/softwares/
wget https://github.com/azkaban/azkaban/archive/3.47.0.tar.gz
tar -zxvf 3.47.0.tar.gz -C ../servers/
cd /export/servers/azkaban-3.47.0/
yum -y install git
yum -y install gcc-c++
./gradlew distTar
# 編譯完成之後得到我們需要的安裝包在以下目錄下即可獲取得到
# azkaban-exec-server存放目錄
/export/servers/azkaban-3.47.0/azkaban-exec-server/build/distributions
# azkaban-web-server存放目錄
/export/servers/azkaban-3.47.0/azkaban-web-server/build/distributions
# azkaban-solo-server存放目錄
/export/servers/azkaban-3.47.0/azkaban-solo-server/build/distributions
# 數據庫文件
/export/servers/azkaban-3.47.0/azkaban-db/build/distributions
- 複製, 解壓相關軟件包
# 複製
cp /export/servers/azkaban-3.47.0/azkaban-exec-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz /export/softwares/
cp /export/servers/azkaban-3.47.0/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz /export/softwares/
cp /export/servers/azkaban-3.47.0/azkaban-solo-server/build/distributions/azkaban-exec-solo-0.1.0-SNAPSHOT.tar.gz /export/softwares/
cp /export/servers/azkaban-3.47.0/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz /export/softwares/
# 解壓
cd /export/softwares/
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz -C ../servers/
#重命名
cd /export/servers/
mv azkaban-web-server-0.1.0-SNAPSHOT/ azkaban-web-server-3.47.0
mv azkaban-exec-server-0.1.0-SNAPSHOT/ azkaban-exec-server-3.47.0
mv azkaban-solo-server-0.1.0-SNAPSHOT/ azkaban-solo-server-3.47.0
mv azkaban-db-0.1.0-SNAPSHOT/ azkaban-db-3.47.0
- 創建Azkaban元數據庫
mysql -uroot -p
CREATE DATABASE azkaban;
use azkaban;
source /export/servers/azkaban-db-3.47.0/create-all-sql-0.1.0-SNAPSHOT.sql;
- 安裝SSL配置
cd /export/servers/azkaban-web-server-3.47.0
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
-
azkaban web server安裝
配置azkaban-web-server
首先將azkaban-solo-server安裝目錄下的conf文件夾拷貝到azkaban-web-server的安裝目錄下cp -r /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT/conf/ /export/servers/azkaban-web-server-3.47.0/
修改azkaban-web-server的配置文件
cd /export/servers/azkaban-web-server-3.47.0/conf
vim azkaban.properties
#具體的配置
azkaban.name=MyAzkaban
azkaban.label=My Azkaban
default.timezone.id=Asia/Shanghai
#database.type=h2
#h2.path=./h2
#h2.create.tables=true
database.type=mysql
mysql.port=3306
mysql.host=node03
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
jetty.use.ssl=true
jetty.keystore=/export/servers/azkaban-web-server-3.47.0/keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=/export/servers/azkaban-web-server-3.47.0/keystore
jetty.trustpassword=azkaban
在conf目錄下添加log4j.properties的配置文件
vim log4j.properties
#添加log4j代碼
log4j.rootLogger=INFO, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{1}] %m%n
log4j.category.velocity=INFO
- azkaban executor server 安裝
配置azkaban-exec-server
將azkaban-web-server的conf目錄拷貝到azkaban-executor-server的安裝路徑下
cd /export/servers
cp -r /export/servers/azkaban-web-server-3.47.0/conf/ /export/servers/azkaban-exec-server-3.47.0/
添加插件 mkdir -p /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
將我們編譯後的C文件execute-as-user.c
複製到這個目錄來/export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
然後執行以下命令生成execute-as-user
yum -y install gcc-c++
cd /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
gcc execute-as-user.c -o execute-as-user
chown root execute-as-user
chmod 6050 execute-as-user
添加配置文件
cd /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
vim commonprivate.properties
# 代碼
execute.as.user=false
azkaban.native.lib=/export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
最終生成如圖
- 啓動服務
啓動azkaban-web-server
cd /export/servers/azkaban-web-server-3.47.0
bin/start-web.sh
啓動azkaban exec server
cd /export/servers/azkaban-exec-server-3.47.0
bin/start-exec.sh
訪問地址: https://ip:8443
如果出現訪問報錯, javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection
原因:瀏覽器安全證書限制。添加信任即可。
解決辦法:使用https://ip:8443訪問
即不要使用http訪問,使用https。。。