Azkaban 3.73.1 集群搭建(Multiple Executor)


目錄

一、簡介

Azkaban是LinkedIn開源的任務調度框架,采用java編寫

Azkaban功能和特點:

  1. 任務的依賴處理
  2. 任務監控,失敗告警
  3. 任務流的可視化
  4. 任務權限管理

Azkaban具有輕量可插拔、友好的WebUI、SLA告警、完善的權限控制、易於二次開發等優點,也得到了廣泛應用,主要由三部分組成

  • 關系數據庫(目前僅支持mysql),用於存儲作業/作業流的執行狀態信息
  • AzkabanWebServer,web管理服務器,主要負責權限驗證、項目管理、作業流下發等工作
  • AzkabanExecutorServer,執行服務器,主要負責作業流/作業的具體執行以及搜集執行日志等工作

作業流執行過程:Webserver會根據搜集起來的Executor的狀態選擇一個合適的任務運行節點,並將任務推送給該節點,管理並運行該工作流的所有job

二、前置准備

1. 服務分布

Multiple Executor模式,各機器組件分配如下:

機器 組件
azkaban1 azkaban-exec-server、mysql-server
azkaban2 azkaban-exec-server
azkaban3 azkaban-exec-server、azkaban-web-server

2. 安裝 jdk

此處使用的是jdk1.8,查看安裝詳情

3. 配置 mysql

此處使用的是mysql5.7,安裝步驟略

# 創建並使用數據庫
CREATE DATABASE azkaban;
use azkaban;

# 創建用戶並授權
CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban'; 
GRANT ALL ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

# 導入建表語句
source azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql;

三、集群部署

1. 下載源碼 & 解壓

# 下載
wget https://github.com/azkaban/azkaban/archive/3.73.1.tar.gz
# 重命名
mv 3.73.1.tar.gz azkaban-3.73.1.tar.gz
# 解壓
tar xvf azkaban-3.73.1.tar.gz

2. 安裝所需依賴

yum install -y gcc-c++ git

3. 執行編譯

cd azkaban-3.73.1/
# 編譯 第一次運行時,此過程時間會比較長
# -x test 表示跳過測試
./gradlew build installDist -x test

看到如下,表示成功

4. 編譯后的主要目錄:

目錄 說明
azkaban-common 常用工具類
azkaban-db 對應的sql腳本
azkaban-exec-server azkaban的executor-server單獨模塊
azkaban-hadoop-secutity-plugin hadoop有關kerberos插件
azkaban-solo-server web和executor運行在同一進程的項目
azkaban-spi azkaban存儲接口以及exception類
azkaban-web-server azkaban的web-server單獨模塊

5. 拷貝我們所需的文件並解壓

# 所需位置新建azkaban目錄
mkdir azkaban

# copy
cp azkaban-3.73.1/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz azkaban/
cp azkaban-3.73.1/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz azkaban/
cp azkaban-3.73.1/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz azkaban/
cd azkaban/

# 解壓
tar xvf azkaban-db-0.1.0-SNAPSHOT.tar.gz
tar xvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
tar xvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz

# 軟鏈
ln -s azkaban-db-0.1.0-SNAPSHOT azkaban-db
ln -s azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec
ln -s azkaban-web-server-0.1.0-SNAPSHOT azkaban-web

四、集群配置

1. 配置 WebServer

1.1 配置 jetty SSL

cd azkaban-web

# 生成keystore
# 注意開始和結束的時候輸入的密碼,其他按提示輸入即可
keytool -keystore keystore -alias jetty -genkey -keyalg RSA

1.2 修改conf/azkaban.properties

# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
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
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
#jetty.use.ssl=false
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=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
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=azkaban1
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
#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

1.3 配置conf/azkaban-users.xml

我這里新增加了一條admin,具有所有權限

<user username="admin" password="admin" roles="admin,metrics"/>

1.4 啟動 WebServer

注意:執行命令時的目錄,否則會找不到某些文件

cd azkaban-web

# 啟動
bin/start-web.sh

可以看到如下信息,因為當前還沒有 Executors呢

2. 配置 ExecutorsServer

所有的ExecutorsServer服務器均按如下配置即可

2.1 修改conf/azkaban.properties

# Azkaban Personalization Settings
default.timezone.id=Asia/Shanghai
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081
azkaban.jobtype.plugin.dir=plugins/jobtypes
database.type=mysql
mysql.port=3306
mysql.host=azkaban1
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30
executor.connector.stats=true
executor.port=12321

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

2.2 啟動

注意:執行命令時的目錄,否則會找不到某些文件

cd azkaban-exec

# 啟動
bin/start-exec.sh

2.3 重新啟動WebServer

如果還是看到如下信息:

解決方式:登錄azkaban使用的mysql數據庫,查看executors表中是否存在active=1的executor,如果沒有,修改active字段,而后再次啟動即可

修改:

update executors set active = 1 where id = 1;

參考

  1. 官方:https://azkaban.github.io/azkaban/docs/latest/#configuration
  2. https://blog.csdn.net/huohuotu/article/details/77487007
  3. https://blog.csdn.net/hxiaowang/article/details/87809772
  4. https://blog.csdn.net/liu16659/article/details/81367312


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM