大家好,我是不溫卜火,是一名計算機學院大數據專業大二的學生,暱稱來源於成語—
不溫不火
,本意是希望自己性情溫和
。作爲一名互聯網行業的小白,博主寫博客一方面是爲了記錄自己的學習過程,另一方面是總結自己所犯的錯誤希望能夠幫助到很多和自己一樣處於起步階段的萌新。但由於水平有限,博客中難免會有一些錯誤出現,有紕漏之處懇請各位大佬不吝賜教!暫時只有csdn這一個平臺,博客主頁:https://buwenbuhuo.blog.csdn.net/
此篇爲大家帶來的是Azkaban的簡單介紹。
目錄
一. 工作流調度器概述
1. 爲什麼需要工作流調度系統
- 一個完整的數據分析系統通常都是由大量任務單元組成: shell腳本程序,java程序,mapreduce程序、hive腳本等
- 各任務單元之間存在時間先後及前後依賴關係
- 爲了很好地組織起這樣的複雜執行計劃,需要一個工作流調度系統來調度執行;
例如,我們可能有這樣一個需求,某個業務系統每天產生20G原始數據,我們每天都要對其進行處理,處理步驟如下所示:
- 通過Hadoop先將原始數據上傳到HDFS上(HDFS的操作);
- 使用MapReduce對原始數據進行清洗(MapReduce的操作);
- 將清洗後的數據導入到hive表中(hive的導入操作);
- 對Hive中多個表的數據進行JOIN處理,得到一張hive的明細表(創建中間表);
- 通過對明細表的統計和分析,得到結果報表信息(hive的查詢操作);
2. 工作流調度實現方式
- 簡單的任務調度:直接使用linux的crontab來定義;
- 複雜的任務調度:開發調度平臺或使用現成的開源調度系統,比如ooize、azkaban、airflow等
3. 常見工作流調度系統
市面上目前有許多工作流調度器
在hadoop領域,常見的工作流調度器有Oozie
, Azkaban
,Cascading
,Hamake
等
4. 各種調度工具特性對比
下面的表格對上述四種hadoop工作流調度器的關鍵特性進行了比較,儘管這些工作流調度器能夠解決的需求場景基本一致,但在設計理念,目標用戶,應用場景等方面還是存在顯著的區別,在做技術選型的時候,可以提供參考
特性 | Hamake | Oozie | Azkaban | Cascading |
---|---|---|---|---|
工作流描述語言 | XML | XML (xPDL based) | text file with key/value pairs | Java API |
依賴機制 | data-driven | explicit | explicit | explicit |
是否要web容器 | No | Yes | Yes | No |
進度跟蹤 | console/log messages | web page | web page | Java API |
Hadoop job調度支持 | no | yes | yes | yes |
運行模式 | 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 | workflownode evel | yes | yes |
運行任意命令 | yes | yes | yes | yes |
Amazon EMR支持 | yes | no | currently unknown | yes |
5. Azkaban與Oozie對比
對市面上最流行的兩種調度器,給出以下詳細對比,以供技術選型參考。總體來說,ooize相比azkaban是一個重量級的任務調度系統,功能全面,但配置使用也更復雜。如果可以不在意某些功能的缺失,輕量級調度器azkaban是很不錯的候選對象。
對比如下:
- 功能
兩者均可以調度mapreduce,pig,java,腳本工作流任務
兩者均可以定時執行工作流任務 - 工作流定義
Azkaban使用Properties文件定義工作流
Oozie使用XML文件定義工作流 - 工作流傳參
Azkaban支持直接傳參,例如{fs:dirSize(myInputDir)} - 定時執行
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
1. 什麼是azkaban
Azkaban是由Linkedin公司推出的一個批量工作流任務調度器,主要用於在一個工作流內以一個特定的順序運行一組工作和流程,它的配置是通過簡單的key:value對的方式,通過配置中的dependencies 來設置依賴關係。Azkaban使用job配置文件建立任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工作流。
2. Azkaban特點
- 1.兼容任何版本的hadoop
- 2.易於使用的Web用戶界面
- 3.簡單的工作流的上傳
- 4.方便設置任務之間的關係
- 5.調度工作流
- 6.模塊化和可插拔的插件機制
- 7.認證/授權(權限的工作)
- 8.能夠殺死並重新啓動工作流
- 9.有關失敗和成功的電子郵件提醒
3. Azkaban的架構
Azkaban由三個關鍵組件構成:
- AzkabanWebServer:AzkabanWebServer是整個Azkaban工作流系統的主要管理者,它用戶登錄認證、負責project管理、定時執行工作流、跟蹤工作流執行進度等一系列任務。
- AzkabanExecutorServer:負責具體的工作流的提交、執行,它們通過mysql數據庫來協調任務的執行。
- 關係型數據庫(MySQL):存儲大部分執行流狀態,AzkabanWebServer和AzkabanExecutorServer都需要訪問數據庫。
本次的分享就到這裏了,
好書不厭讀百回,熟讀課思子自知。而我想要成爲全場最靚的仔,就必須堅持通過學習來獲取更多知識,用知識改變命運,用博客見證成長,用行動證明我在努力。
如果我的博客對你有幫助、如果你喜歡我的博客內容,請“點贊” “評論”“收藏”
一鍵三連哦!聽說點讚的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我博客看看。
碼字不易,大家的支持就是我堅持下去的動力。點贊後不要忘了關注
我哦!