oozie:工作流調度工具
Oozie是一個基於工作流引擎的服務器,可以在上面運行Hadoop的Map Reduce和Pig任務。它其實就是一個運行在Java Servlet容器(比如Tomcat)中的Javas Web應用。
對於Oozie來說,工作流就是一系列的操作(比如Hadoop的MR,以及Pig的任務),這些操作通過有向無環圖的機制控制。這種控制依賴是說,一個操作的輸入依賴於前一個任務的輸出,只有前一個操作完全完成後,才能開始第二個。
Oozie工作流通過hPDL定義(hPDL是一種XML的流程定義語言)。工作流操作通過遠程系統啓動任務。當任務完成後,遠程系統會進行回調來通知任務已經結束,然後再開始下一個操作。
簡單來說,oozie的功能就是按照某一順序執行一些列操作如:先執行hive進行數據分析,然後將結果通過sqoop傳到mysql。這兩部可以通過一個workflow實現,即工作流。
oozie的功能
- Workflow:順序執行流程節點,支持fork(分支多個節點),join(合併多個節點爲一個)
- Coordinator:定時觸發workflow;
- Bundle Job:綁定多個Coordinator。
Coordinator示例圖:
Bundle示例圖:
oozie的配置(這裏我使用的是oozie-4.1.0-cdh5.5.0版本)
<!-- OOZIE -->
<property>
<name>hadoop.proxyuser.用戶名.hosts</name>
<value>主機名</value>
</property>
<property>
<name>hadoop.proxyuser.用戶名.groups</name>
<value>*</value>
</property>
<property>
<name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
<value>*=$HADOOP_HOME/etc/hadoop</value>
</property>
bin/oozie-setup.sh prepare-war
bin/oozie-setup.sh sharelib create -fs hdfs://你的主機名(IP):端口號 -locallib sharelib的yarn的tar包
bin/ooziedb.sh create -sqlfile oozie.sql -run DB Connection
bin/oozie-start.sh