Azkaban集群部署


一、部署模式

  • solo-server模式  (使用內置h2存儲元數據);
  • two-server模式 (1個webServer,1個execServer在同一服務器上,使用mysql存儲元數據);

  • multiple-executor模式   (1個webServer,多個execServer分布在不同服務上,使用mysql存儲元數據);

本文選擇第三種模式,即一台機器安裝webServer服務,多台機器安裝execServer.這種模式是使用最廣泛的。

二、部署准備

(1)服務器三台

192.168.0.10 --azkaban-web-server
192.168.0.11 --azkaban-exec-server

配置ip對應關系:

znzd001: 192.168.0.10

znzd002: 192.168.0.11

(2)搭建MySQL

默認有一個mysql服務器,首先創建azkaban庫,azkaban用戶密碼,並賦予遠程連接。

1 mysql> CREATE DATABASE azkaban;
2 mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
3 mysql> CREATE USER 'azkaban'@'localhost' IDENTIFIED BY 'azkaban';
4 mysql> grant all privileges on azkaban.* to 'azkaban'@'%' identified by 'azkaban';
5 mysql> grant all privileges on azkaban.* to 'azkaban'@'localhost' identified by 'azkaban';
6 mysql> flush privileges;

(3)下載最新azkaban源文件(azkaban-3.47.0.tar.gz),上傳到192.168.0.10:/opt/下

三、開始部署

(1)解壓縮文件azkaban-3.47.0.tar.gz

(2)進入目錄執行下面代碼編譯源文件

./gradlew distTar

(3)將下面4個文件解壓縮,文件如下:

/opt/azkaban-3.47.0/azkaban-web-server/build/distributions/azkaban-web-server-3.47.0-SNAPSHOT.tar.gz
/opt/azkaban-3.47.0/azkaban-web-server/build/distributions/azkaban-exec-server-3.47.0-SNAPSHOT.tar.gz
/opt/azkaban-3.47.0/azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
/opt/azkaban-3.47.0/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz

(4)導入建表語句

mysql -uroot -proot123
> SOURCE /opt/azkaban-3.47.0/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql;

(5)構建Azkaban-web-server

Azkaban-web-server目錄下分別新建目錄:conf、plugins、extlib。

將azkaban-solo-server-0.1.0-SNAPSHOT的conf、plugins兩個目錄下的文件拷貝到Azkaban-web-server目錄下。

mv /opt/azkaban-3.47.0/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT /opt/Azkaban-web-server
cp -r /opt/azkaban-3.47.0/azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT/conf /opt/Azkaban-web-server/conf
cp -r /opt/azkaban-3.47.0/azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT/plugins /opt/Azkaban-web-server/plugins

(6)修改 /opt/Azkaban-web-server/conf/azkaban.properties 文件

# Azkaban Personalization Settings
azkaban.name=nyhadoop
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

database.type=mysql
mysql.port=3306
mysql.host=10.46.67.33
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100

# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.ssl.port=8443
jetty.use.ssl=true
jetty.port=8081
jetty.keystore=keystore
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=keystore
jetty.trustpassword=123456
jetty.maxThreads=25
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=
mail.host=
# User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
# enduser -> myazkabanhost:443 -> proxy -> localhost:8081
# when this parameters set then these parameters are used to generate email links. 
# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
# azkaban.webserver.external_hostname=myazkabanhost.com
# azkaban.webserver.external_ssl_port=443
# azkaban.webserver.external_port=8081
job.failure.email=
job.success.email=
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
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

(7)配置jetty ssl

要記住設置的密碼,這里密碼統一設置為123456

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

Enter keystore password: 輸入密碼 Re
-enter new password: 再次輸入密碼 What is your first and last name? [Unknown]: 直接回車 What is the name of your organizational unit? [Unknown]: 直接回車 What is the name of your organization? [Unknown]: 直接回車 What is the name of your City or Locality? [Unknown]: 直接回車 What is the name of your State or Province? [Unknown]: 直接回車 What is the two-letter country code for this unit? [Unknown]: 直接回車 Is CN=YY, OU=YY, O=YY, L=shanghai, ST=shanghai, C=CN correct? [no]: y

(8)將生成的keystore文件 移動到/opt/Azkaban-web-server/目錄下

(9)構建Azkaban-exec-server(192.168.0.11和192.168.0.12都有)

scp /opt/azkaban-3.47.0/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz 192.168.0.11:/opt/
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
mv azkaban-exec-server-0.1.0-SNAPSHOT Azkaban-exec-server

192.168.0.11和192.168.0.12的opt目錄下各上傳一份azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz。

(10)Azkaban-exec-server

Azkaban-exec-server目錄下分別新建目錄:conf、plugins、extlib。

將azkaban-solo-server-0.1.0-SNAPSHOT的conf、plugins兩個目錄下的文件拷貝到Azkaban-exec-server目錄下,參考(5)。

編譯conf/azkaban.properties文件

# Azkaban Personalization Settings
default.timezone.id=Asia/Shanghai
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects

database.type=mysql
mysql.port=3306
mysql.host=10.46.67.33
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100

# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes

(11)分別在/opt/Azkaban-web-server/conf和/opt/Azkaban-exec-server/conf目錄下創建log4j.properties文件

log4j.rootLogger=DEBUG,C
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.err
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

(12)分別修改在/opt/Azkaban-web-server/和/opt/Azkaban-exec-server/目錄下plugins/jobtypes/commonprivate.properties文件

azkaban.native.lib=false
execute.as.user=false

四、Azkaban運行

(1)先啟動執行器:分別在192.168.0.11和192.168.0.12的 /opt/Azkaban-exec-server目錄下執行,啟動日志寫到了logs目錄。

 ./bin/start-exec.sh

(2)再啟動azkaban服務器

192.168.1.10下 /opt/Azkaban-web-server目錄下執行

./bin/start-web.sh

(3)瀏覽器地址 https://192.168.1.10:8443查看服務界面,訪問密碼在azkaban-users.xml 里,可自行配置。

五、激活執行器

將MySQL中azkaban數據庫中的executors激活,active若為0,要更新為1,表示激活執行器。

 

補充:

jetty.use.ssl=true,設置為true,訪問鏈接要加https。

六、執行任務

(1)創建任務腳本

在192.168.1.11(znzd002)的home/mntc目錄下創建腳本文件test.sh,內容如下:

#!/bin/bash
echo 'Hello World'

(2)創建azkaban的任務文件test.job,並打包為test.zip。

azkaban集群模式下要指定任務執行器,腳本在那個機器上就配置該機器的azkaban執行器ID, 查表executors,這里znzd002對應的執行器ID是10。

type=command
command=sh /home/dmbigdata/mntc/test.sh
#配置執行器id
useExecutor=10
retries=3
retry.backoff=30000

(3)上傳test.zip后,Job內容明細如下:

 (4)執行test.job,Run Job

(5)指定用哪個azkaban執行器,要在Flow中設置userExecutor參數,參數值指表executors中的執行器的ID。

(6)Schedule設置任務執行時間,比如每天2點執行一次

(7)查看認為日志

(8)日志明細

日志中打印了內容,任務執行成功!

 

原文鏈接:https://www.cnblogs.com/bujunpeng/p/9093124.html


免責聲明!

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



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