Azkaban的介绍、安装与使用
轉(zhuǎn)載:https://blog.csdn.net/Sven119/article/details/90144843
目錄
1、概述
1.1、為什么需要工作流調(diào)度器
1.2、工作流調(diào)度實(shí)現(xiàn)方式
1.3、常見工作流調(diào)度系統(tǒng)
1.4、各種調(diào)度工具對比
1.5、azkaban與oozie對比
1.6、azkaban介紹
2、azkaban安裝部署
2.1、準(zhǔn)備工作
2.2、安裝說明
2.3、安裝Azkaban Web服務(wù)器
2.4、安裝Azkaban Excutor服務(wù)器
2.5、安裝Azkaban腳本導(dǎo)入
2.6、創(chuàng)建SSL配置
2.7、修改配置文件
2.8、配置環(huán)境變量
2.9、啟動
3、Azkaban實(shí)戰(zhàn)演示
3.1、Command類型單一job示例
3.2、Command類型多job工作流flow
3.3、操作HDFS任務(wù)
3.4、操作MR任務(wù)
3.5、Hive腳本任務(wù)
1、概述
1.1、為什么需要工作流調(diào)度器
1、一個完整的數(shù)據(jù)分析系統(tǒng)通常是由大量任務(wù)單元組成:
shell腳本程序、java程序、mapreduce程序、hive腳本等
2、各任務(wù)單元之間存在時間先后及前后依賴關(guān)系
3、為了很好的組織起這樣的復(fù)雜執(zhí)行計劃,需要一個工作流調(diào)度系統(tǒng)來調(diào)度執(zhí)行。
1.2、工作流調(diào)度實(shí)現(xiàn)方式
簡單的任務(wù)調(diào)度:直接使用linux的crontab(定時任務(wù))來定義。
復(fù)雜的任務(wù)調(diào)度:開發(fā)調(diào)度平臺或使用現(xiàn)成的開源調(diào)度系統(tǒng),比如ooize、azkaban等。
1.3、常見工作流調(diào)度系統(tǒng)
市面上目前有許多工作流調(diào)度器
在hadoop領(lǐng)域,常見的工作流調(diào)度器有oozie、azkaban、cascading、hamake等
1.4、各種調(diào)度工具對比
下面的表格對上述四種hadoop工作流調(diào)度器的關(guān)鍵特征進(jìn)行了比較,盡管這些工作流調(diào)度器能夠解決需求場景基本一致,但在設(shè)計理念,目標(biāo)用戶,應(yīng)用場景等方面還是存在顯著的區(qū)別,在技術(shù)選型時可供參考
| Azkaban的介紹、安裝與使用 1、概述 1.1、為什么需要工作流調(diào)度器 1.2、工作流調(diào)度實(shí)現(xiàn)方式 1.3、常見工作流調(diào)度系統(tǒng) 1.4、各種調(diào)度工具對比 1.5、azkaban與oozie對比 1.6、azkaban介紹 2、azkaban安裝部署 2.1、準(zhǔn)備工作 2.2、安裝說明 2.3、安裝Azkaban Web服務(wù)器 2.4、安裝Azkaban Excutor服務(wù)器 2.5、安裝Azkaban腳本導(dǎo)入 2.6、創(chuàng)建SSL配置 2.7、修改配置文件 2.8、配置環(huán)境變量 2.9、啟動 3、Azkaban實(shí)戰(zhàn)演示 3.1、Command類型單一job示例 3.2、Command類型多job工作流flow 3.3、操作HDFS任務(wù) 3.4、操作MR任務(wù) 3.5、Hive腳本任務(wù) 1、概述 shell腳本程序、java程序、mapreduce程序、hive腳本等 2、各任務(wù)單元之間存在時間先后及前后依賴關(guān)系 3、為了很好的組織起這樣的復(fù)雜執(zhí)行計劃,需要一個工作流調(diào)度系統(tǒng)來調(diào)度執(zhí)行。 1.2、工作流調(diào)度實(shí)現(xiàn)方式 復(fù)雜的任務(wù)調(diào)度:開發(fā)調(diào)度平臺或使用現(xiàn)成的開源調(diào)度系統(tǒng),比如ooize、azkaban等。 1.3、常見工作流調(diào)度系統(tǒng) 在hadoop領(lǐng)域,常見的工作流調(diào)度器有oozie、azkaban、cascading、hamake等 1.4、各種調(diào)度工具對比 特性 hamake oozie azkaban cascading 工作流描述語言 xml xml(xpdl、based) text file with key/value pairs java API 依賴機(jī)制 data-driven explicit explicit explicit 是否要web容器 no yes yes no 進(jìn)度跟蹤 console/log message web page web page java API hadoop調(diào)度支持 no yes yes yes 運(yùn)行模式 command line utility daemon daemon api pig支持 yes yes yes yes 事件通知 no no no yes 需要安裝 no yes yes no 支持的hadoop版本 0.18+ 0.20+ currently unknown 0.18+ 重試支持 no workflow node evel yes yes 運(yùn)行任意命令 yes yes yes yes amaon EMR支持 yes no currently unknow yes 1.5、azkaban與oozie對比 功能 兩者均可以定時執(zhí)行工作流任務(wù) 工作流定義 oozie使用xml文件定義工作流 工作流傳參 oozie支持參數(shù)和EL表達(dá)式,例如${fs:dirSize(myinputDir)} srust2(ONGL) 定時執(zhí)行 oozie的定時執(zhí)行任務(wù)基于時間和輸入數(shù)據(jù) 資源管理 oozie暫無嚴(yán)格的權(quán)限控制 工作流執(zhí)行 oozie作為工作流服務(wù)器運(yùn)行,支持多用戶和多工作流 工作流管理 oozie支持命令行、HTTP REST、Java API、瀏覽器操作工作流。 1.6、azkaban介紹 azkaban定義了一種KV 文件(properties)格式來建立任務(wù)之間的依賴關(guān)系,并提供一個易于使用的web用戶界面維護(hù)和跟蹤你的工作流。 它有如下功能特點(diǎn): Web用戶界面 Azkaban Excutor 執(zhí)行服務(wù)器:azkaban-executor-server-2.5.0.tar.gz Azkaban 初始化腳本文件:azkaban-sql-script-2.5.0.tar.gz 下載地址:http://azkaban.github.io/downloads.html 2.2、安裝說明 2.3、安裝Azkaban Web服務(wù)器 2.4、安裝Azkaban Excutor服務(wù)器 2.5、安裝Azkaban腳本導(dǎo)入 進(jìn)入 mysql: mysql> create database azkaban; 運(yùn)行此命令后,會提示輸入當(dāng)前生成 keystore 的密碼及相應(yīng)信息,輸入密碼請勞記,信息如下: ?keytool -keystore keystore -alias jetty -genkey -keyalg RSA ? 2.7、修改配置文件 1、先生成時區(qū)配置文件 Asia/Shanghai,用交互式命令 tzselect 即可 2、拷貝該時區(qū)文件,覆蓋系統(tǒng)本地時區(qū)配置 sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime azkaban web 服務(wù)器配置 進(jìn)入 azkaban web 服務(wù)器安裝目錄 conf 目錄 cd apps/azkaban/azkaban-web-2.5.0/conf/ 修改 azkaban.properties 文件 #Azkaban Personalization Settings <azkaban-users> 進(jìn)入執(zhí)行服務(wù)器安裝目錄 conf,修改 azkaban.properties #Azkaban export AZKABAN_WEB_HOME=/home/hadoop/apps/azkaban/azkaban-web-2.5.0 nohup azkaban-web-start.sh 1>/home/hadoop/azwebstd.out 2>/home/hadoop/azweberr.out & 啟動執(zhí)行服務(wù)器:azkaban-executor-start.sh nohup azkaban-executor-start.sh 1>/home/hadoop/azexstd.out 2>/home/hadoop/azexerr.out & ? 3、Azkaban實(shí)戰(zhàn)演示 vi command.job #command.job zip command.job 3.通過azkaban web管理平臺創(chuàng)建project并上傳壓縮包 3.2、Command類型多job工作流flow 第一個job:stepone.job #stepone.job #steptwo.job 3.執(zhí)行啟動 3.3、操作HDFS任務(wù) #hdfs.job 3.創(chuàng)建project并上傳zip包 4.啟動執(zhí)行 3.4、操作MR任務(wù) #mapreduce.job 3.創(chuàng)建project并上傳zip包 4.啟動執(zhí)行 3.5、Hive腳本任務(wù) 2.hive腳本如下: hivetest.sql use mycar; #hivef.job 4.在azkaban的web管理界面船艦工程并上傳zip包 5.啟動job | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
1.5、azkaban與oozie對比
總體來說:oozie相比azkaban是一個重量級的任務(wù)調(diào)度系統(tǒng),功能全面,但配置使用也更復(fù)雜。如果不在意某些功能的缺失,輕量級調(diào)度器azkaban是很不錯的候選對象。詳情如下:
- 功能
兩者均可以調(diào)度mapreduce、pig、java腳本工作流任務(wù)
兩者均可以定時執(zhí)行工作流任務(wù)
- 工作流定義
azkaban使用properties文件定義工作流
oozie使用xml文件定義工作流
- 工作流傳參
azkaban支持直接傳參,例如${input}
oozie支持參數(shù)和EL表達(dá)式,例如${fs:dirSize(myinputDir)} srust2(ONGL)
- 定時執(zhí)行
azkaban的定時執(zhí)行時基于時間的
oozie的定時執(zhí)行任務(wù)基于時間和輸入數(shù)據(jù)
- 資源管理
azkaban有較嚴(yán)格的權(quán)限控制,如用戶對工作流進(jìn)行讀/寫/執(zhí)行等操作
oozie暫無嚴(yán)格的權(quán)限控制
- 工作流執(zhí)行
azkaban有兩種運(yùn)行模式,分別是solo server mode(executor server和web server部署在同一臺節(jié)點(diǎn))和multi server mode(executor server和web server可以部署在不同節(jié)點(diǎn))
oozie作為工作流服務(wù)器運(yùn)行,支持多用戶和多工作流
- 工作流管理
azkaban支持瀏覽器以及ajax方式操作工作流
oozie支持命令行、HTTP REST、Java API、瀏覽器操作工作流。
1.6、azkaban介紹
azkaban是由linkedin開源的一個批量工作流任務(wù)調(diào)度器。用于在一個工作流內(nèi)以一個特定的順序運(yùn)行一組工作和流程。
azkaban定義了一種KV 文件(properties)格式來建立任務(wù)之間的依賴關(guān)系,并提供一個易于使用的web用戶界面維護(hù)和跟蹤你的工作流。
它有如下功能特點(diǎn):
- Web用戶界面
- 方便上傳工作流
- 方便設(shè)置任務(wù)之間任務(wù)關(guān)系
- 調(diào)度工作流
- 認(rèn)證/授權(quán)(權(quán)限的工作)
- 能夠殺死并重新啟動工作流
- 模塊化和可拔插的插件機(jī)制
- 項(xiàng)目工作區(qū)
- 工作流和任務(wù)的日志記錄和審計
2、azkaban安裝部署
2.1、準(zhǔn)備工作
Azkaban Web 服務(wù)器:azkaban-web-server-2.5.0.tar.gz
Azkaban Excutor 執(zhí)行服務(wù)器:azkaban-executor-server-2.5.0.tar.gz Azkaban
初始化腳本文件:azkaban-sql-script-2.5.0.tar.gz
下載地址:http://azkaban.github.io/downloads.html
2.2、安裝說明
將安裝文件上傳到集群,最好上傳到安裝 hive、sqoop 的機(jī)器上,方便命令的執(zhí)行。并最好同一存放在 apps 目錄下,用于存放源安裝文件.新建 azkaban 目錄,用于存放 azkaban 運(yùn)行程序
?
?
2.3、安裝Azkaban Web服務(wù)器
解壓安裝? ?tar -zxvf azkaban-web-server-2.5.0.tar.gz -C apps/ azkaban/
2.4、安裝Azkaban Excutor服務(wù)器
解壓安裝? ?tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C apps/ azkaban/
2.5、安裝Azkaban腳本導(dǎo)入
解壓安裝? ?tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C apps/ azkaban/
進(jìn)入 mysql:
mysql> create database azkaban;
Query OK, 1 row affected (0.01 sec)
mysql> use azkaban;
Database changed
mysql> source /home/hadoop/apps/azkaban/azkaban-script-2.5.0/create-all-sql-2.5.0.sql;
2.6、創(chuàng)建SSL配置
最好是在 azkaban 目錄下: 執(zhí)行命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
運(yùn)行此命令后,會提示輸入當(dāng)前生成 keystore 的密碼及相應(yīng)信息,輸入密碼請勞記,信息如下:
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]: CN
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN correct?
[no]: y
Enter key password for <jetty>
(RETURN if same as keystore password):
[root@hadoop03 azkaban]# ll
total 16
drwxr-xr-x. 7 root root 4096 Nov 21 01:53 azkaban-executor-2.5.0
drwxr-xr-x. 2 root root 4096 Nov 21 01:53 azkaban-script-2.5.0
drwxr-xr-x. 8 root root 4096 Nov 21 01:52 azkaban-web-2.5.0
-rw-r--r--. 1 root root 2232 Nov 21 02:06 keystore
完成上述工作后,將在當(dāng)前目錄生成 keystore 證書文件,將 keystore 拷貝到 azkaban web 服務(wù) 器根目錄中.如:cp keystore azkaban/azkaban-web-2.5.0
?
2.7、修改配置文件
注:先配置好服務(wù)器節(jié)點(diǎn)上的時區(qū)
1、先生成時區(qū)配置文件 Asia/Shanghai,用交互式命令 tzselect 即可
2、拷貝該時區(qū)文件,覆蓋系統(tǒng)本地時區(qū)配置
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
azkaban web 服務(wù)器配置 進(jìn)入 azkaban web 服務(wù)器安裝目錄 conf 目錄
cd apps/azkaban/azkaban-web-2.5.0/conf/
修改 azkaban.properties 文件
#Azkaban Personalization Settings
azkaban.name=MyTestAzkaban #服務(wù)器 UI 名稱,用于服務(wù)器上方顯示的名字
azkaban.label=My Local Azkaban #描述
azkaban.color=#FF3601 #UI 顏色
azkaban.default.servlet.path=/index
web.resource.dir=/home/hadoop/apps/azkaban/azkaban-web-2.5.0/web/ #默認(rèn)根 web 目錄
default.timezone.id=Asia/Shanghai #默認(rèn)時區(qū),已改為亞洲/上海 默認(rèn)為美國
#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager #用戶權(quán)限管理默認(rèn)類
user.manager.xml.file=/home/hadoop/apps/azkaban/azkaban-web-2.5.0/conf/azkaban-users.xml
#用戶配置,具體配置參加下文
#Loader for projects # global 配置文件所在位置
executor.global.properties=/home/hadoop/apps/azkaban/azkaban-executor-2.5.0/conf/global.properties
azkaban.project.dir=projects
database.type=mysql #數(shù)據(jù)庫類型
mysql.port=3306 #端口號
mysql.host=hadoop03 #數(shù)據(jù)庫連接 IP
mysql.database=azkaban #數(shù)據(jù)庫實(shí)例名
mysql.user=root #數(shù)據(jù)庫用戶名
mysql.password=root #數(shù)據(jù)庫密碼
mysql.numconnections=100 #最大連接數(shù)
# Velocity dev mode
velocity.dev.mode=false
# Jetty 服務(wù)器屬性.
jetty.maxThreads=25 #最大線程數(shù)
jetty.ssl.port=8443 #Jetty SSL 端口
jetty.port=8081 #Jetty 端口
jetty.keystore=/home/hadoop/apps/azkaban/azkaban-web-2.5.0/keystore #SSL 文件名
jetty.password=hadoop #SSL 文件密碼
jetty.keypassword=hadoop #Jetty 主密碼 與 keystore 文件相同
jetty.truststore=/home/hadoop/apps/azkaban/azkaban-web-2.5.0/keystore #SSL 文件名
jetty.trustpassword=hadoop # SSL 文件密碼
# 執(zhí)行服務(wù)器屬性
executor.port=12321 #執(zhí)行服務(wù)器端口
# 郵件設(shè)置(可選項(xiàng))
mail.sender=xxxxxxxx@163.com #發(fā)送郵箱
mail.host=smtp.163.com #發(fā)送郵箱 smtp 地址
mail.user=xxxxxxxx #發(fā)送郵件時顯示的名稱
mail.password=********** #郵箱密碼
job.failure.email=xxxxxxxx@163.com #任務(wù)失敗時發(fā)送郵件的地址
job.success.email=xxxxxxxx@163.com #任務(wù)成功時發(fā)送郵件的地址
lockdown.create.projects=false #
cache.directory=cache #緩存目錄
用戶配置 進(jìn)入 azkaban web 服務(wù)器 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 執(zhí)行服務(wù)器 executor 配置
進(jìn)入執(zhí)行服務(wù)器安裝目錄 conf,修改 azkaban.properties
#Azkaban
default.timezone.id=Asia/Shanghai #時區(qū)
# Azkaban JobTypes 插件配置,插件所在位置
azkaban.jobtype.plugin.dir=/home/hadoop/apps/azkaban/azkaban-executor-2.5.0/plugins/jobtypes
#Loader for projects
executor.global.properties=/home/hadoop/apps/azkaban/azkaban-executor-2.5.0/conf/global.properties
azkaban.project.dir=projects
#數(shù)據(jù)庫設(shè)置
database.type=mysql #數(shù)據(jù)庫類型(目前只支持 mysql)
mysql.port=3306 #數(shù)據(jù)庫端口號
mysql.host=hadoop03 #數(shù)據(jù)庫 IP 地址
mysql.database=azkaban #數(shù)據(jù)庫實(shí)例名
mysql.user=root #數(shù)據(jù)庫用戶名
mysql.password=root #數(shù)據(jù)庫密碼
mysql.numconnections=100 #最大連接數(shù)
# 執(zhí)行服務(wù)器配置
executor.maxThreads=50 #最大線程數(shù)
executor.port=12321 #端口號(如修改,請與 web 服務(wù)中一致)
executor.flow.threads=30 #線程數(shù)
2.8、配置環(huán)境變量
修改~/.bashrc
export AZKABAN_WEB_HOME=/home/hadoop/apps/azkaban/azkaban-web-2.5.0
export AZKABAN_EXE_HOME=/home/hadoop/apps/azkaban/azkaban-executor-2.5.0
export PATH=$PATH:$AZKABAN_WEB_HOME/bin:$AZKABAN_EXE_HOME/bin
2.9、啟動
啟動web服務(wù)器:azkaban-web-start.sh
nohup azkaban-web-start.sh 1>/home/hadoop/azwebstd.out 2>/home/hadoop/azweberr.out &
啟動執(zhí)行服務(wù)器:azkaban-executor-start.sh
nohup azkaban-executor-start.sh 1>/home/hadoop/azexstd.out 2>/home/hadoop/azexerr.out &
?
3、Azkaban實(shí)戰(zhàn)演示
3.1、Command類型單一job示例
1.創(chuàng)建job描述文件
vi command.job
#command.job
type=command
command=echo'hello'
2.將job資源文件打包
zip command.job
3.通過azkaban web管理平臺創(chuàng)建project并上傳壓縮包
3.2、Command類型多job工作流flow
1.創(chuàng)建有多依賴關(guān)系的多個job描述
第一個job:stepone.job
#stepone.job
type=command
command=echo stepone
第二個job:steptwo.job依賴steptwo.job
#steptwo.job
type=command
dependencies=stepone
command=echo steptwo
2.將所有資源打成一個zip包
3.執(zhí)行啟動
3.3、操作HDFS任務(wù)
1.創(chuàng)建job描述文件
#hdfs.job
type=command
command=/app/hadoop/apps/hadoop-2.6.5/bin/hadoop fs -mkdir -p /hello/azkaban
2.將job資源文件打成zip包
3.創(chuàng)建project并上傳zip包
4.啟動執(zhí)行
3.4、操作MR任務(wù)
1.創(chuàng)建job描述文件
#mapreduce.job
type=command
command=/home/hadoop/apps/hadop-2.6.1/bin/hadoop
jar hadoop-mapreduce-examples-2.6.1jar wordcount/wordcount/input/wordcount/azout
2.將job資源文件達(dá)成jar包
3.創(chuàng)建project并上傳zip包
4.啟動執(zhí)行
3.5、Hive腳本任務(wù)
1.創(chuàng)建job描述文件和hive腳本
2.hive腳本如下:
hivetest.sql
use mycar;
drop table aztest;
create table aztest(id int,name string,sex string,age int,deparment string) row format delimited fields
terminated by ',';
load data inpath '/student.txt' into table aztest;
create table azres as select * from aztest;
insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest;
job描述文件:
#hivef.job
type=command
command=/root/apps/apache-hive-1.2.1-bin/bin/hive -f 'testhive.sql'
3.將所有job資源文件達(dá)到一個zip包中
4.在azkaban的web管理界面船艦工程并上傳zip包
5.啟動job
?
?
總結(jié)
以上是生活随笔為你收集整理的Azkaban的介绍、安装与使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 矩阵的乘法和快速幂的一些理解(适用初学者
- 下一篇: 矩阵乘法和快速幂的一些优化和剪枝