CentOS中安裝Azkaban 2.5
必備軟件
yum install git -y
單機安裝步驟
git clone https://github.com/azkaban/azkaban.git cd azkaban; ./gradlew build installDist cd azkaban-solo-server/build/install/azkaban-solo-server; bin/start-solo.sh # open http://localhost:8081/ bin/shutdown-solo.sh # 當然,這個也需要你的網絡環境比較好,如果是公司網絡限制比較多的話,可能出現無法編譯的情況,比如無法訪問gradle的plugin站點等。
多執行器模式安裝
文件下載
方法1:下載azkaban代碼,編譯。
git clone https://github.com/azkaban/azkaban.git
or
git clone https://gitee.com/mirrors/azkaban.git
cd azkaban; ./gradlew build installDist
cd azkaban-db; ../gradlew build installDist
# 當然,這個也需要你的網絡環境比較好,如果是公司網絡限制比較多的話,可能出現無法編譯的情況,比如無法訪問gradle的plugin站點等。
方法2:直接下載別人編譯好的版本進行安裝
https://pan.baidu.com/s/1tq8FLME2zHR539sTAZUw2A | zkl9
這個共享包裏是基於2.5.0的版本,下載下來三個文件:
azkaban-executor-2.5.0.zip
azkaban-web-2.5.0.zip
azkaban-sql-script-2.5.0.tar.gz
登陸mysql, 設置編碼為utf8, 為Azkaban創建數據庫, 並授權, 導入腳本
azkaban官方建議使用mysql作為後端的數據存儲db,使用如下命令創建azkaban的數據庫:
mysql -uroot -p123456; mysql> CREATE DATABASE azkaban; CREATE USER 'azkaban'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON *.* TO 'azkaban'@'192.168.56.3' IDENTIFIED BY '123456'; flush privileges; source /usr/local/azkaban/azkaban-sql/create-all-sql-2.5.0.sql;
創建SSL配置
keytool -keystore keystore -alias jetty -genkey -keyalg RSA # (記住密碼)
cp keystore /usr/local/azkaban/azkaban-web #將當前目錄生成 keystore證書文件拷貝到web服務器根目錄中
tzselect #使用交互式命令設置時區(Asia/Shanghai, 選北京就是上海)
輸入密鑰庫口令:
密鑰庫口令太短 - 至少必須為 6 個字符
輸入密鑰庫口令:
再次輸入新口令:
您的名字與姓氏是什麽?
[Unknown]: cao
您的組織單位名稱是什麽?
[Unknown]: parllay
您的組織名稱是什麽?
[Unknown]: fenghuotai
您所在的城市或區域名稱是什麽?
[Unknown]: beijing
您所在的省/市/自治區名稱是什麽?
[Unknown]: beijing
該單位的雙字母國家/地區代碼是什麽?
[Unknown]: CN
CN=cao, OU=parllay, O=fenghuotai, L=beijing, ST=beijing, C=CN是否正確?[否]: Y
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #拷貝該時區文件,覆蓋系統本地時區配置
zkaban web服務器配置及用戶配置, 進入web服務器安裝目錄conf
web服務器配置如下:
vim 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
database.type=mysql
mysql.port=3306
mysql.host=192.168.33.205
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
jetty.password=111111
jetty.keypassword=111111
jetty.truststore=keystore
jetty.trustpassword=111111
# Azkaban Executor settings
executor.port=12321
# mail settings
# 發送郵箱
mail.sender=
#發送郵箱smtp地址
mail.host=
# 任務失敗時發送郵件的地址
job.failure.email=
# 任務成功時發送郵件的地址
job.success.email=
lockdown.create.projects=false
cache.directory=cache
用戶配置如下:
vim azkaban-users.xml
<azkaban-users>
<user username="azkaban" password="azkaban" roles="admin" groups="azkaban"/>
<user username="metrics" password="metrics" roles="metrics"/>
<!-- 設置登錄 https://192.168.56.3:8443的賬號和密碼 -->
<user username="admin" password="admin" roles="admin,metrics"/>
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
azkaban executor服務器配置, 進入執行服務器安裝目錄conf
vim azkaban.properties
#Azkaban
default.timezone.id=Asia/Shanghai
# Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=plugins/jobtypes
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=192.168.33.205
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
啟動各個服務器
azkaban web服務器的啟動與關閉, 註意: 只能在web服務器根目錄運行
bin/azkaban-web-start.sh
bin/azkaban-web-shutdown.sh
# 如果是正式環境可以采用nohup的方式手動啟動
azkaban executor服務器的啟動與關閉, 註意: 只能在執行服務器根目錄運行
bin/azkaban-executor-start.sh
bin/azkaban-executor-shutdown.sh
# 如果是正式環境可以采用nohup的方式手動啟動
登錄Web用戶界面, 進行操作
網址示例: https://192.168.56.3:8443
Azkaban實戰
Azkaba內置的任務類型支持 command、java, 我們可以安裝python、datax、sqoop等工具,進行擴展。
簡單示例, 操作步驟:
創建 job描述文件
command類型單一job示例
vim command.job
# command.job
type=command
command=echo 'hello'
command類型多job工作流flow示例
vim foo.job
# foo.job
type=command
command=echo foo
# bar.job
type=command
dependencies=foo
command=echo bar
HDFS操作任務示例
vim fs.job
# fs.job
type=command
command=hadoop fs -mkdir /azkaban
MapReduce任務示例
vim mrwc.job
# mrwc.job
type=command
# 也可以將jar包放在mrwc.job的同級目錄下, 與其一起壓縮為zip文件
command=hadoop jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /input/a.txt /input/output
HIVE腳本任務示例
vim hivef.job
vim test.sql
# hivef.job
type=command
command=hive -f 'test.sql'
create database test_db;
將所有 job資源文件打包壓縮成 zip文件, 登錄 azkaban的 web管理平臺, 上傳, 執行
啟動azkaban遇到問題解決
啟動exec-server異常
異常:java.io.FileNotFoundException:
conf/global.properties
(沒有那個文件或目錄)
解決方法:vim azkaban.properties
修改 executor.global.properties
為絕對路徑
啟動exec-web異常
異常:
java.lang.RuntimeException:java.lang.reflect.InvocationTargetException
解決方法:vim azkaban.properties
修改 user.manager.xml.file
為絕對路徑
參考資料
- https://blog.csdn.net/qq_38474729/article/details/82655641
CentOS中安裝Azkaban 2.5