Azkaban是一個批量工做流任務調度器,使用Java語言開發。用於在一個工做流內以一個特定的順序運行一組工做和流程。Azkaban使用job配置文件創建任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工做流。java
目錄node
1、Azkaban優勢mysql
2、Azkaban安裝模式git
3、Azkaban安裝github
1. 準備web
2. 下載源碼sql
3. 編譯源碼數據庫
4. 配置數據庫服務器
5. 配置web-serverapp
6. 配置exec-server
4、Azkaban啓動
提供功能清晰,簡單易用的Web UI界面
提供job配置文件快速創建任務和任務之間的依賴關係
提供模塊化和可插拔的插件機制,原生支持command、Java、Hive、Pig、Hadoop
基於Java開發,代碼結構清晰,易於二次開發
Azkaban 有三種部署方式:單服務模式、2個服務模式、分佈式多服務模式
solo server model(單服務模式):該模式中 webServer 和 executorServer 運行在同一個進程中,進程名是AzkabanSingleServer。可使用自帶的H2數據庫或者配置mysql數據。該模式適用於小規模的使用。此模式合適我的試用使用。它也能夠用在小規模的使用案例中。
two server model(2個服務模式):數據庫爲MySQL,採用主從設置進行備份,管理服務器(webServer)和執行服務器(executorServer)在不一樣進程中運行,這種模式下,管理服務器和執行服務器互不影響。適用在較重的生成環境中。
multiple-executor(分佈式多服務模式):存放元數據的數據庫爲MySQL,採用主從設置進行備份,管理服務器(webServer)和執行服務器(executorServer)在不一樣進程中運行。多個 Executor 模式爲最重的生產環境。
接下來安裝two server model
Ubuntu版本:16.04
JDK版本:1.8
MySQL版本:5.7.25
Azkaban版本:3.70.0
下載穩定的release版本,這裏選擇的是3.70.0版本
# wget https://github.com/azkaban/azkaban/archive/3.70.0.tar.gz
# tar xvzf azkaban-3.70.0.tar.gz # cd azkaban-3.70.0 # ./gradlew build installDist -x test
編譯過程會下載依賴包,時間可能會比較長。編譯完成後會在對應的路徑下生成可運行的文件,以下:
solo server model(單服務模式): azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
two server model(2個服務模式)和multiple-executor(分佈式多服務模式): azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz 和 azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
Azkaban SQL: azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz
因爲此次安裝的two server model,將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解壓到指定的目錄azkaban
# mkdir ~/azkaban # cd ~/azkaban # tar xvzf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz # tar xvzf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz # tar xvzf azkaban-db-0.1.0-SNAPSHOT.tar.gz # mv azkaban-web-server-0.1.0-SNAPSHOT azkaban-web-server # mv azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec-server # mv azkaban-db-0.1.0-SNAPSHOT azkaban-db
# ls azkaban-db -l total 112 -rw-rw-r-- 1 root root 106 Mar 26 13:33 create.active_executing_flows.sql -rw-rw-r-- 1 root root 265 Mar 26 13:33 create.active_sla.sql -rw-r--r-- 1 root root 12087 Apr 10 09:47 create-all-sql-0.1.0-SNAPSHOT.sql -rw-rw-r-- 1 root root 487 Mar 26 13:33 create.execution_dependencies.sql -rw-rw-r-- 1 root root 956 Mar 26 13:33 create.execution_flows.sql -rw-rw-r-- 1 root root 516 Mar 26 13:33 create.execution_jobs.sql -rw-rw-r-- 1 root root 780 Mar 26 13:33 create.execution_logs.sql -rw-rw-r-- 1 root root 262 Mar 26 13:33 create.executor_events.sql -rw-rw-r-- 1 root root 323 Mar 26 13:33 create.executors.sql -rw-rw-r-- 1 root root 242 Mar 26 13:33 create.project_events.sql -rw-rw-r-- 1 root root 257 Mar 26 13:33 create.project_files.sql -rw-rw-r-- 1 root root 351 Mar 26 13:33 create.project_flow_files.sql -rw-rw-r-- 1 root root 320 Mar 26 13:33 create.project_flows.sql -rw-rw-r-- 1 root root 331 Mar 26 13:33 create.project_permissions.sql -rw-rw-r-- 1 root root 333 Mar 26 13:33 create.project_properties.sql -rw-rw-r-- 1 root root 482 Mar 26 13:33 create.projects.sql -rw-rw-r-- 1 root root 420 Mar 26 13:33 create.project_versions.sql -rw-rw-r-- 1 root root 200 Mar 26 13:33 create.properties.sql -rw-rw-r-- 1 root root 5235 Mar 26 13:33 create.quartz-tables-all.sql -rw-rw-r-- 1 root root 221 Mar 26 13:33 create.triggers.sql -rw-rw-r-- 1 root root 15 Mar 26 13:33 database.properties -rw-rw-r-- 1 root root 206 Mar 26 13:33 upgrade.3.20.0.to.3.22.0.sql -rw-rw-r-- 1 root root 607 Mar 26 13:33 upgrade.3.43.0.to.3.44.0.sql -rw-rw-r-- 1 root root 379 Mar 26 13:33 upgrade.3.68.0.to.3.69.0.sql -rw-rw-r-- 1 root root 558 Mar 26 13:33 upgrade.3.69.0.to.3.70.0.sql
以root用戶登陸MySQL數據庫,並執行SQL
# 建用戶 建庫 受權 刷新權限 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; # 建立Azkaban表 mysql> source /root/azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql
# vi azkaban-web-server/conf/azkaban.properties # 修改時區 default.timezone.id=Asia/Shanghai # Azkaban mysql settings by default. Users should configure their own username and password. # 數據庫類型 database.type=mysql # 數據庫端口 mysql.port=3306 # 數據庫地址 mysql.host=localhost # 數據庫名稱 mysql.database=azkaban # 數據庫用戶 mysql.user=azkaban # 數據庫密碼 mysql.password=azkaban mysql.numconnections=100 #Multiple Executor azkaban.use.multiple.executors=true
其餘配置保持默認。
# vi azkaban-exec-server/conf/azkaban.properties # 修改時區 default.timezone.id=Asia/Shanghai # Azkaban mysql settings by default. Users should configure their own username and password. # 數據庫類型 database.type=mysql # 數據庫端口 mysql.port=3306 # 數據庫地址 mysql.host=localhost # 數據庫名稱 mysql.database=azkaban # 數據庫用戶 mysql.user=azkaban # 數據庫密碼 mysql.password=azkaban mysql.numconnections=100
其餘配置保持默認。
先啓動executorServer:
# cd azkaban-exec-server # ./bin/start-exec.sh
再啓動webServer:
# cd azkaban-web-server # ./bin/start-web.sh
**Note:**啓動executorServer時會將executorServer的host,port同步到mysql的executors表中
啓動webServer時會出現以下錯誤,是由於自動同步到executors表中的executor默認是未激活,須要在數據庫中update:
2019/04/10 11:11:06.044 +0800 INFO [ExecutorManager] [Azkaban] Initializing executors from database. 2019/04/10 11:11:06.045 +0800 ERROR [ExecutorManager] [Azkaban] No active executors found 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] Exception in thread "main" 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] azkaban.executor.ExecutorManagerException: No active executors found 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] at azkaban.executor.ActiveExecutors.setupExecutors(ActiveExecutors.java:52) 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] at azkaban.executor.ExecutorManager.setupExecutors(ExecutorManager.java:231) 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] at azkaban.executor.ExecutorManager.initialize(ExecutorManager.java:155) 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] at azkaban.executor.ExecutorManager.start(ExecutorManager.java:169) 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] at azkaban.webapp.AzkabanWebServer.launch(AzkabanWebServer.java:235) 2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] at azkaban.webapp.AzkabanWebServer.main(AzkabanWebServer.java:228)
mysql> update executors set active=1 where id=2;
update以後就能夠正常啓動web-server了。
想要啓動分佈式多服務模式也很簡單,多服務模式是多個executorServer分佈在 不一樣服務器上,只須要將/root/azkaban/azkaban-exec-server拷貝到不一樣機器上便可組成分佈式。
啓動成功,訪問http://node01:8081/