?? - 一個完整的數據分析系統通常都是由大量任務單元組成:shell 腳本程序,java 程序,mapreduce 程序、hive 腳本等
?? - 各任務單元之間存在時間先后及前后依賴關系
?? - 為了很好地組織起這樣的復雜執行計劃,需要一個工作流調度系統來調度執行
??在 hadoop 領域,常見的工作流調度器有 Oozie, Azkaban,Cascading,Hamake 等 。
?? 目前企業中最流行的兩種調度器是Oozie與Azkaban??偟膩碚fooize 相比 azkaban 是一個重量級的任務調度系統,功能全面,但配置使用也更復雜。如果可以不在意某些功能的缺失,輕量級調度器 azkaban 是很不錯的候選對象。
二者的區別可以從以下的幾個方面進行描述:
?功能
??兩者均可以調度 mapreduce,pig,java,腳本工作流任務兩者均可以定時執行工作流任務
?工作的定義
?? Azkaban 使用 Properties 文件定義工作流
?? Oozie 使用 XML 文件定義工作流
?工作流傳參
?? Azkaban 支持直接傳參,例如${input}
?? Oozie 支持參數和 EL 表達式,例如${fs:dirSize(myInputDir)} strust2(ONGL)
?定時執行
?? Azkaban 的定時執行任務是基于時間的
?? Oozie 的定時執行任務基于時間和輸入數據
?資源管理
?? Azkaban 有較嚴格的權限控制,如用戶對工作流進行讀/寫/執行等操作
?? Oozie 暫無嚴格的權限控制
?工作流執行
?? Azkaban 有兩種運行模式,分別是 solo server mode(executor server 和 web server 部署在同一臺節點)和 multi server mode(executor server 和 web server 可以部署在不同節點)
?? Oozie 作為工作流服務器運行,支持多用戶和多工作流
?工作流管理
?? Azkaban 支持瀏覽器以及 ajax 方式操作工作流
?? Oozie 支持命令行、HTTP REST、Java API、瀏覽器操作工作流
?? Azkaban 是由 Linkedin 開源的一個批量工作流任務調度器。用于在一個工作流內以一個特定的順序運行一組工作和流程。Azkaban 定義了一種 KV 文件(properties)格式來建立任務之間的依賴關系,并提供一個易于使用的 web 用戶界面維護和跟蹤你的工作流。
Azkaban的功能特點
Azkaban的實戰安裝:
安裝包:
Azkaban Web 服務器:azkaban-web-server-2.5.0.tar.gz
Azkaban Excutor 執行服務器:azkaban-executor-server-2.5.0.tar.gz
Azkaban 初始化腳本文件:azkaban-sql-script-2.5.0.tar.gz
下載地址:http://azkaban.github.io/downloads.html
① 解壓安裝包
[root@hadoop03 ~]# tar -zxvf azkaban-web-server-2.5.0.tar.gz -C apps/ azkaban/
[root@hadoop03 ~]# tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C apps/ azkaban/
[root@hadoop03 ~]# tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C apps/ azkaban/
②安裝 Azkaban 腳本導入
[root@hadoop03 ~]# tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C apps/ azkaban/
#進入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;
③創建 SSL 配置
#最好是在azkaban 目錄下:
[root@hadoop03 ~]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
#此命令執行之后會提示輸入當前生成 keystore 的密碼及相應信息,輸入密碼請勞記,信息如下:
然后將在當前目錄生成 keystore 證書文件,將 keystore 拷貝到 azkaban web 服務器根目錄中.如:
[root@hadoop03 ~]#cp keystore azkaban/azkaban-web-2.5.0
④修改配置文件
#先配置好服務器節點上的時區
先生成時區配置文件 Asia/Shanghai,用交互式命令 tzselect 即可
拷貝該時區文件,覆蓋系統本地時區配置
[hadoop@hadoop03 ~]$ sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#azkaban web 服務器配置進入 azkaban web 服務器安裝目錄 conf 目錄
[hadoop@hadoop03 ~]$ cd apps/azkaban/azkaban-web-2.5.0/conf/
#修改 azkaban.properties 文件
#用戶配置,具體配置參加下文
#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
#端口號
mysql.port=3306
#數據庫連接 IP
mysql.host=hadoop03
#數據庫實例名
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 端口
jetty.ssl.port=8443
#Jetty 端口
jetty.port=8081
#SSL 文件名
jetty.keystore=/home/hadoop/apps/azkaban/azkaban-web-2.5.0/keystore
#SSL 文件密碼
jetty.password=hadoop
#Jetty 主密碼 與 keystore 文件相同
jetty.keypassword=hadoop
#SSL 文件名
jetty.truststore=/home/hadoop/apps/azkaban/azkaban-web-2.5.0/keystore
# SSL 文件密碼
jetty.trustpassword=hadoop
# 執行服務器屬性
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 用戶配置
<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 執行服務器 executor 配置,進入執行服務器安裝目錄 conf,修改 azkaban.properties
#Azkaban
default.timezone.id=Asia/Shanghai #時區
#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
#數據庫設置
#數據庫類型(目前只支持 mysql)
database.type=mysql
#數據庫端口號
mysql.port=3306
#數據庫 IP 地址
mysql.host=hadoop03
#數據庫實例名
mysql.database=azkaban
#數據庫用 戶名
mysql.user=root
#數據庫密碼
mysql.password=root
#最大連接數
mysql.numconnections=100
#執行服務器配置
#最大線程數
executor.maxThreads=50
#端口號(如修改,請與 web 服務中一致)
executor.port=12321
#線程數
executor.flow.threads=30
⑤配置環境變量
[hadoop@hadoop03 ~]$ vim /etc/profile
#/etc/profile
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
⑥啟動
#啟動 web 服務器
nohup azkaban-web-start.sh 1>/home/hadoop/azwebstd.out 2>/home/hadoop/azweberr.out &
#啟動執行服務器
nohup azkaban-executor-start.sh 1>/home/hadoop/azexstd.out 2>/home/hadoop/azexerr.out &
⑥驗證是否登錄成功
在瀏覽器中輸入:https://hadoop03:8443/ 
看到以上界面表示安裝成功?。。?!
小編這里建議將Azkaban 的web、executor配置文件,所有的相對路徑都換成絕對路徑,不然經常會報出文件找不到的問題?。。?!

原因是:在azkaban的server和executor中缺少一個叫derby.jar的包
解決:在已經安裝的JDK中:
cp $JAVA_HOME/db/lib/derby.jar $AZKABAN_WEB_HOME/extlib
cp $JAVA_HOME/db/lib/derby.jar $AZKABAN_EXE_HOME/extlib
如果遇到與MySQL的權限問題:
請參考:https://blog.51cto.com/14048416/2344516 文章。
①創建job :command.job
#command.job
type=command
command=echo 'hello'
②將 job 資源文件打包
[hadoop hadoop03@~ ]$ zip command.job
③通過 azkaban web 管理平臺創建 project 并上傳壓縮包







免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。