更新時間:2023年12月11日10時34分 來源:傳智教育 瀏覽次數:
針對多任務、可視化調度的調度需求,Apache以及其他組織提供了一系列工作流管理器,包括Oozie、Azkaban、Zeus、Dagobah、Luigi、Pinball和Airflow等。
接下來,筆者就選取其中常用的、知名的工作流管理器進行簡單介紹。
Oozie是Apache旗下的用于管理Hadoop任務的工作流/協(xié)調系統(tǒng)。Oozie工作流中擁有多個Action,如Hadoop Map/Reduce job和Hadoop Pig job等,所有的Action以有向無環(huán)圖(Direct Acyclic Graph,DAG)的模式部署運行。
Oozie工作流管理器的優(yōu)點是與Hadoop生態(tài)圈緊密結合,提供了諸多配置和功能,可以很好地實現(xiàn)Hadoop工作任務管理;缺點是Oozie通過大量的XML文件來定義DAG依賴,導致了Oozie的功能和配置過于復雜,維護成本較高,且不易二次開發(fā)。
Azkaban是由LinkedIn公司開源的一個批量工作流任務調度器,用于在一個工作流內以一個特定的順序運行一組工作和流程。Azkaban定義了一種KV文件格式來建立任務之間的依賴關系,并提供一個易于使用的UI維護和跟蹤工作流。
Azkaban也屬于Hadoop生態(tài)圈,它是通過較為簡單的properties文件來定義DAG依賴的,同時Azkaban支持可插拔的擴展插件,方便擴展,如支持pid、hive等。
Azkaban工作流管理器的特點是所有的任務資源文件都需要打成一個zip包上傳。當資源文件較大的時候不是太方便,當然也可以進行擴展,如存放在HDFS上,任務實際運行的時候才拉到本地。
Zeus是Alibaba開源的一個完整的Hadoop的作業(yè)平臺,用于從Hadoop任務的調試運行到生產任務的周期調度管理。
Zeus支持任務執(zhí)行的整個生命周期。從功能上來說,包括支持:
(1)Hadoop MapReduce任務的調試運行;
(2)Hive任務的調試運行;
(3)Shell任務的運行;
(4)Hive元數據的可視化查詢與數據預覽;
(5)Hadoop任務的自動調度;
(6)完整的文檔管理。
需要說明的是Zeus是針對Hadoop集群任務定制的,通用性不強。Zeus在Github上線時受到青睞,但是由于長期缺乏維護更新,時隔兩年,依然僅支持Hadoop1.x版本,后期的Zeus版本也不再開源了。