Azkaban介紹
什么是azkaban?
1、工作流的作業調度系統
2、通過k、v指令寫法描述工作流節點
3、可以通過web界面去管理工作流
Azkaban安裝部署
2.3.1 准備工作
Azkaban Web服務器
azkaban-web-server-2.5.0.tar.gz
Azkaban執行服務器
azkaban-executor-server-2.5.0.tar.gz
MySQL
目前azkaban只支持 mysql,需安裝mysql服務器,本文檔中默認已安裝好mysql服務器,並建立了 root用戶,密碼 123456.
下載地址:http://azkaban.github.io/downloads.html
2.3.2 安裝
將安裝文件上傳到集群,最好上傳到安裝 hive、sqoop的機器上,方便命令的執行
在當前用戶目錄下新建 azkabantools目錄,用於存放源安裝文件.新建azkaban目錄,用於存放azkaban運行程序
2.3.3 azkaban web服務器安裝
解壓azkaban-web-server-2.5.0.tar.gz
命令:
tar –zxvf azkaban-web-server-2.5.0.tar.gz
將解壓后的azkaban-web-server-2.5.0 移動到 azkaban目錄中,並重新命名 webserver
命令:
mv azkaban-web-server-2.5.0 ../azkaban
cd ../azkaban
mv azkaban-web-server-2.5.0 server
2.3.4 azkaban 執行服器安裝
解壓azkaban-executor-server-2.5.0.tar.gz
命令:
tar –zxvf azkaban-executor-server-2.5.0.tar.gz
將解壓后的azkaban-executor-server-2.5.0 移動到 azkaban目錄中,並重新命名 executor
命令:
mv azkaban-executor-server-2.5.0 ../azkaban
cd ../azkaban
mv azkaban-executor-server-2.5.0 executor
azkaban腳本導入
解壓: azkaban-sql-script-2.5.0.tar.gz
命令:tar –zxvf azkaban-sql-script-2.5.0.tar.gz
將解壓后的mysql 腳本,導入到mysql中:
進入
mysql
mysql> create database azkaban;
mysql> use azkaban;
Database changed
mysql> source /root/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql;
2.3.5 創建SSL配置
參考地址: http://docs.codehaus.org/display/JETTY/How+to+configure+SSL
命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
運行此命令后,會提示輸入當前生成 keystore的密碼及相應信息,輸入的密碼請勞記,信息如下:
輸入keystore密碼:
再次輸入新密碼:
您的名字與姓氏是什么?
[Unknown]:
您的組織單位名稱是什么?
[Unknown]:
您的組織名稱是什么?
[Unknown]:
您所在的城市或區域名稱是什么?
[Unknown]:
您所在的州或省份名稱是什么?
[Unknown]:
該單位的兩字母國家代碼是什么
[Unknown]: CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正確嗎?
[否]: y
輸入<jetty>的主密碼
(如果和 keystore 密碼相同,按回車):
再次輸入新密碼:
完成上述工作后,將在當前目錄生成 keystore 證書文件,將keystore 考貝到 azkaban web服務器根目錄中.如:cp keystore azkaban/webserver
2.3.6 配置文件
注:先配置好服務器節點上的時區
1、先生成時區配置文件Asia/Shanghai,用交互式命令 tzselect 即可
2、拷貝該時區文件,覆蓋系統本地時區配置
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
azkaban web服務器配置
進入azkaban web服務器安裝目錄 conf目錄
v 修改azkaban.properties文件
命令
vi 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=hadoop-001 #數據庫連接IP mysql.database=azkaban #數據庫實例名 mysql.user=root #數據庫用戶名 mysql.password=123456 #數據庫密碼 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 #緩存目錄
|
v azkaban 執行服務器配置
進入執行服務器安裝目錄conf,修改azkaban.properties
vi azkaban.properties
#Azkaban default.timezone.id=Asia/Shanghai #時區
# Azkaban JobTypes 插件配置 azkaban.jobtype.plugin.dir=plugins/jobtypes #jobtype 插件所在位置
#Loader for projects executor.global.properties=conf/global.properties azkaban.project.dir=projects
#數據庫設置 database.type=mysql #數據庫類型(目前只支持mysql) mysql.port=3306 #數據庫端口號 mysql.host=hadoop-001 #數據庫IP地址 mysql.database=azkaban #數據庫實例名 mysql.user=root #數據庫用戶名 mysql.password=123456 #數據庫密碼 mysql.numconnections=100 #最大連接數
# 執行服務器配置 executor.maxThreads=50 #最大線程數 executor.port=12321 #端口號(如修改,請與web服務中一致) executor.flow.threads=30 #線程數 |
v 用戶配置
進入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> |
2.4啟動
2.4.1 web服務器
在azkaban web服務器目錄下執行啟動命令
bin/azkaban-web-start.sh
注:在web服務器根目錄運行
2.4.2執行服務器
在執行服務器目錄下執行啟動命令
bin/azkaban-executor-start.sh ./
注:只能要執行服務器根目錄運行
啟動完成后,在瀏覽器(建議使用谷歌瀏覽器)中輸入https://服務器IP地址:8443 ,即可訪問azkaban服務了.在登錄中輸入剛才新的戶用名及密碼,點擊 login.
Command類型單一job示例
1、創建job描述文件 以.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
2.5.2 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
2.5.3 HDFS操作任務
1、創建job描述文件
#fs.job type=command command=echo "start execute" command.1=/var/local/hadoop/bin/hadoop fs -mkdir /azkaban command.2=/var/local/hadoop/bin/hadoop fs -put /root/zk.log /azkaban |
command后面可以加上一個數字! 表現形式為command.N
表示可以執行多個command命令操作
2、將job資源文件打包成zip文件
3、通過azkaban的web管理平台創建project並上傳job壓縮包
4、啟動執行該job
2.5.4 MAPREDUCE任務
Mr任務依然可以使用command的job類型來執行
1、創建job描述文件,及mr程序jar包(示例中直接使用hadoop自帶的example jar)
# 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
2.5.5 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