Azkaban3.x安裝部署
三種模式
- solo-server模式:exec進程和web進程為同一個進程,存放元數據的數據庫為
H2 - two-server模式:與之前的單機版本類似,exec進程和web進程分開,存放元數據的數據庫為
mysql - multiple-executor模式:exec進程和web進程在不同的機器上,存放元數據的數據庫為
mysql
一、solo模式安裝
1.克隆項目:git clone https://github.com/azkaban/azkaban.git
2.編譯:./gradlew build installDist
3.啟動:cd azkaban-solo-server/build/install/azkaban-solo-server; bin/azkaban-solo-start.sh
4.在8081端口查看
5.停止:bin/azkaban-solo-shutdown.sh
二、two-server模式
1 下載。git clone https://github.com/azkaban/azkaban.git
得到文件夾azkaban/,當前版本為3.39.0
2 編譯。
在azkaban目錄下執行 :./gradlew distTar
編譯結果為:
azkaban-common : 常用工具類。
azkaban-db : 對應的sql腳本
azkaban-hadoop-secutity-plugin : hadoop 有關kerberos插件
azkaban-solo-server: web和executor 一起的項目。
azkaban-web/executor-server:azkaban的 web和executor的server信息
azkaban-spi: azkaban存儲接口以及exception類
創建文件夾:mkdir azkaban-3.39
3 拷貝
cp azkaban-exec-server/build/distributions/azkaban-exec-server-3.39.0-17-g7b7833a.tar.gz /opt/modules/azkaban3.39.0/
cp azkaban-web-server/build/distributions/azkaban-web-server-3.39.0-17-g7b7833a.tar.gz /opt/modules/azkaban3.39.0/
cp azkaban-db-3.39.0/build/distributions/azkaban-db-3.39.0-2-gbd9e6e4.tar.gz /azkaban-3.39/
4.解壓縮后並重新命名
5.安裝mysql
這里直接使用root用戶
安裝mysql服務器:yum install mysql-server
啟動mysql: systemctl start mysqld.service
打開mysql:mysql -uroot -p123456
創建數據庫>CREATE DATABASE azkaban
use azkaban
source /azkaban-3.39/azkaban-db-3.39.0-2/create-all-sql-3.39.0-2-gbd9e6e4.sql
6.創建SSL配置
在azkaban-web=*/conf下
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
輸入密鑰庫口令:
密鑰庫口令太短 - 至少必須為 6 個字符
輸入密鑰庫口令:
再次輸入新口令:
您的名字與姓氏是什么?
[Unknown]:
您的組織單位名稱是什么?
[Unknown]:
您的組織名稱是什么?
[Unknown]:
您所在的城市或區域名稱是什么?
[Unknown]:
您所在的省/市/自治區名稱是什么?
[Unknown]:
該單位的雙字母國家/地區代碼是什么?
[Unknown]: CN
CN=, OU=, O=, L=, ST=, C=CN是否正確?[否]: Y
7.將azkaban-solo-server-3.39.0下的conf,plugins,sql拷貝到azkaban-exec-server-3.39.0
1>配置 conf/azkaban.properties
修改數據庫配置
database.type=mysql
mysql.port=3306
mysql.host=192.168.3.247
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100
2>添加log4j.properties文件
在/conf下新建log4j.properties文件
將
log4j.rootLogger=INFO,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
拷入,同樣執行器exec文件下的/conf也需要新建
3>添加mysql驅動
在/azkaban-3.39/azkaban-exec-server-3.39.0-2下新建文件夾 :mkdir extlib
將lib下的mysql鏈接驅動復制到extlib下
同時需要修改ban-3.39/azkaban-web-server-3.39.0-2下的azkaban.properties,建立extlib文件將mysql驅動拷入
8.啟動
注意先啟動執行器然后啟動web服務器,需要在bin級目錄執行,否則匯報找不到配置文件的錯誤cd azkaban-exec-server-3.39.0-2
bin/azkaban-executor-start.sh
cd azkaban-web-server-3.39.0-2
bin/azkaban-web-start.sh(后台啟動:nohup bin/azkaban-web-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &)
常見錯誤:
1.執行任務時Missing required property 'azkaban.native.lib'
解決方案:azkaban-3.37.0/azkaban-common/src/main/java/azkaban/jobExecutor/ProcessJob.java里
然后重啟
2.若mysql數據庫鏈接不上請檢查mysql數據庫下azkaban數據庫是否可以訪問,
若無法遠程訪問請使用root用戶登錄到mysql數據庫
mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
mysql> GRANT ALL ON azkaban.* to 'azkaban'@'%' IDENTIFIED BY 'azkaban';
配置文件azkaban.properties內容說明:
| #Azkaban Personalization Settings azkaban.name=Test #服務器UI名稱,用於服務器上方顯示的名字 azkaban.label=My Local Azkaban #描述 azkaban.color=#FF3601 #UI顏色 azkaban.default.servlet.path=/index web.resource.dir=web/ #默認根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 # global配置文件所在位置 azkaban.project.dir=projects
database.type=mysql #數據庫類型 mysql.port=3306 #端口號 mysql.host=localhost #數據庫連接IP mysql.database=azkaban #數據庫實例名 mysql.user=root #數據庫用戶名 mysql.password=root #數據庫密碼 mysql.numconnections=100 # Velocity dev mode velocity.dev.mode=false # Jetty服務器屬性. jetty.maxThreads=25 #最大線程數 jetty.ssl.port=8443 #Jetty SSL端口 jetty.port=8081 #Jetty端口 jetty.keystore=keystore #SSL文件名 jetty.password=123456 #SSL文件密碼 jetty.keypassword=123456 #Jetty主密碼 與 keystore文件相同 jetty.truststore=keystore #SSL文件名 jetty.trustpassword=123456 # SSL文件密碼
# 執行服務器屬性 executor.port=12321 #執行服務器端口
# 郵件設置 mail.sender=xxxxxxxx@163.com #發送郵箱 mail.host=smtp.163.com #發送郵箱smtp地址 mail.user=xxxxxxxx #發送郵件時顯示的名稱 mail.password=********** #郵箱密碼 job.failure.email=xxxxxxxx@163.com #任務失敗時發送郵件的地址 job.success.email=xxxxxxxx@163.com #任務成功時發送郵件的地址 lockdown.create.projects=false cache.directory=cache #緩存目錄
|
用戶配置(可選)
進入azkaban web服務器conf目錄,修改azkaban-users.xml
vi azkaban-users.xml 增加 管理員用戶
| <azkaban-users> <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" /> <user username="metrics" password="metrics" roles="metrics"/> <user username="admin" password="admin" roles="admin,metrics" /> <role name="admin" permissions="ADMIN" /> <role name="metrics" permissions="METRICS"/> </azkaban-users> |
Azkaban實戰
Azkaba內置的任務類型支持command、java、python
Command類型單一job示例
1、創建job描述文件
vi command.job
| #command.job type=command command=echo 'hello' |
2、將job資源文件打包成zip文件
zip command.job
3、通過azkaban的web管理平台創建project並上傳job壓縮包
首先創建project

上傳zip包

4、啟動執行該job

Command類型多job工作流flow
1、創建有依賴關系的多個job描述
第一個job:foo.job
| # foo.job type=command command=echo foo |
第二個job:bar.job依賴foo.job
| # bar.job type=command dependencies=foo command=echo bar |
2、將所有job資源文件打到一個zip包中

3、在azkaban的web管理界面創建工程並上傳zip包
4、啟動工作流flow
HDFS操作任務
1、創建job描述文件
| # fs.job type=command command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop fs -mkdir /azaz |
2、將job資源文件打包成zip文件

3、通過azkaban的web管理平台創建project並上傳job壓縮包
4、啟動執行該job
MAPREDUCE任務
Mr任務依然可以使用command的job類型來執行
1、創建job描述文件,及mr程序jar包(示例中直接使用hadoop自帶的examplejar)
| # mrwc.job type=command command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop jar hadoop-mapreduce-examples-2.6.1.jar wordcount /wordcount/input /wordcount/azout |
2、將所有job資源文件打到一個zip包中

3、在azkaban的web管理界面創建工程並上傳zip包
4、啟動job
HIVE腳本任務
l 創建job描述文件和hive腳本
Hive腳本: test.sql
| use default; drop table aztest; create table aztest(id int,name string) row format delimited fields terminated by ','; load data inpath '/aztest/hiveinput' into table aztest; create table azres as select * from aztest; insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest; |
Job描述文件:hivef.job
| # hivef.job type=command command=/home/hadoop/apps/hive/bin/hive -f 'test.sql' |
2、將所有job資源文件打到一個zip包中
3、在azkaban的web管理界面創建工程並上傳zip包
4、啟動job
