分佈式計算(四)Azkaban安裝

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啓動

1、Azkaban優勢

提供功能清晰,簡單易用的Web UI界面

提供job配置文件快速創建任務和任務之間的依賴關係

提供模塊化和可插拔的插件機制,原生支持command、Java、Hive、Pig、Hadoop

基於Java開發,代碼結構清晰,易於二次開發

2、Azkaban安裝模式

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

3、Azkaban安裝

1. 準備

Ubuntu版本:16.04

JDK版本:1.8

MySQL版本:5.7.25

Azkaban版本:3.70.0

2. 下載源碼

下載穩定的release版本,這裏選擇的是3.70.0版本

# wget https://github.com/azkaban/azkaban/archive/3.70.0.tar.gz

3. 編譯源碼

# 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

4. 配置數據庫

以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

5. 配置web-server

# 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

其餘配置保持默認。

6. 配置exec-server

# 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

其餘配置保持默認。

4、Azkaban啓動

先啓動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/

相關文章
相關標籤/搜索