1) 一個完整的數據分析系統一般都是由大量任務單元組成:html
shell腳本程序,java程序,mapreduce程序、hive腳本等java
2)各任務單元之間存在時間前後及先後依賴關係mysql
3)爲了很好地組織起這樣的複雜執行計劃,須要一個工做流調度系統來調度執行;linux
例如,咱們可能有這樣一個需求,某個業務系統天天產生20G原始數據,咱們天天都要對其進行處理,處理步驟以下所示:git
(1)經過Hadoop先將原始數據同步到HDFS上;github
(2)藉助MapReduce計算框架對原始數據進行計算,生成的數據以分區表的形式存儲到多張Hive表中;web
(3)須要對Hive中多個表的數據進行JOIN處理,獲得一個明細數據Hive大表;ajax
(4)將明細數據進行復雜的統計分析,獲得結果報表信息;sql
(5)須要將統計分析獲得的結果數據同步到業務系統中,供業務調用使用。shell
1)簡單的任務調度:直接使用linux的crontab來定義;
2)複雜的任務調度:開發調度平臺或使用現成的開源調度系統,好比ooize、azkaban、 Cascading、Hamake等
對市面上最流行的兩種調度器,給出如下詳細對比,以供技術選型參考。整體來講,ooize相比azkaban是一個重量級的任務調度系統,功能全面,但配置使用也更復雜。若是能夠不在乎某些功能的缺失,輕量級調度器azkaban是很不錯的候選對象。
詳情以下:
1)功能
二者都可以調度mapreduce,pig,java,腳本工做流任務
二者都可以定時執行工做流任務
2)工做流定義
Azkaban使用Properties文件定義工做流
Oozie使用XML文件定義工做流
3)工做流傳參
Azkaban支持直接傳參,例如${input}
Oozie支持參數和EL表達式,例如${fs:dirSize(myInputDir)}
4)定時執行
Azkaban的定時執行任務是基於時間的
Oozie的定時執行任務基於時間和輸入數據
5)資源管理
Azkaban有較嚴格的權限控制,如用戶對工做流進行讀/寫/執行等操做
Oozie暫無嚴格的權限控制
6)工做流執行
Azkaban有兩種運行模式,分別是solo server mode(executor server和web server部署在同一臺節點)和multi server mode(executor server和web server能夠部署在不一樣節點)
Oozie做爲工做流服務器運行,支持多用戶和多工做流
7)工做流管理
Azkaban支持瀏覽器以及ajax方式操做工做流
Oozie支持命令行、HTTP REST、Java API、瀏覽器操做工做流
Azkaban是由Linkedin開源的一個批量工做流任務調度器。用於在一個工做流內以一個特定的順序運行一組工做和流程。Azkaban定義了一種KV文件格式來創建任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工做流。
它有以下功能特色:
1)Web用戶界面
2)方便上傳工做流
3)方便設置任務之間的關係
4)調度工做流
5)認證/受權(權限的工做)
6)可以殺死並從新啓動工做流
7)模塊化和可插拔的插件機制
8)項目工做區
9)工做流和任務的日誌記錄和審計
下載地址:http://azkaban.github.io/downloads.html
1)將Azkaban Web服務器、Azkaban執行服務器和MySQL拷貝到hadoop102虛擬機/opt/software目錄下
azkaban-web-server-2.5.0.tar.gz
azkaban-executor-server-2.5.0.tar.gz
azkaban-sql-script-2.5.0.tar.gz
mysql-libs.zip
2)目前azkaban只支持 mysql,需安裝mysql服務器,本文檔中默認已安裝好mysql服務器,並創建了 root用戶,密碼 root。
1)在/opt/module/目錄下建立azkaban目錄
[atguigu@hadoop102 module]$ mkdir azkaban
2)解壓azkaban-web-server-2.5.0.tar.gz、azkaban-executor-server-2.5.0.tar.gz、azkaban-sql-script-2.5.0.tar.gz到/opt/module/azkaban目錄下
[atguigu@hadoop102 software]$ tar -zxvf azkaban-web-server-2.5.0.tar.gz -C /opt/module/azkaban/
[atguigu@hadoop102 software]$ tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C /opt/module/azkaban/
[atguigu@hadoop102 software]$ tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C /opt/module/azkaban/
3)對解壓後的文件從新命名
[atguigu@hadoop102 azkaban]$ mv azkaban-web-2.5.0/ server
[atguigu@hadoop102 azkaban]$ mv azkaban-executor-2.5.0/ executor
4)azkaban腳本導入
進入mysql,建立azkaban數據庫,並將解壓的腳本導入到azkaban數據庫。
[atguigu@hadoop102 azkaban]$ mysql -uroot -p000000
mysql> create database azkaban;
mysql> use azkaban;
mysql> source /opt/module/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
參考地址: http://docs.codehaus.org/display/JETTY/How+to+configure+SSL