oozie 最全使用---2020

1. Oozie概述
一個基於工作流引擎的開源框架,由Cloudera公司貢獻給Apache,提供對Hadoop Mapreduce、Pig Jobs,shell 的任務調度與協調。Oozie需要部署到Java Servlet容器中運行(需要打成war包去運行)。
主要用於定時調度任務,多任務可以按照執行的邏輯順序調度。
類似oozie的框架有azkaban,zeux等

2. Oozie的功能模塊
oozie的功能每個模塊對應的是一個配置文件,配置文件裏面配置相關信息
2.1 Workflow
順序執行流程節點,支持fork(分支多個節點),join(合併多個節點爲一個) 對應配置文件爲Workflow.xml
2.2 Coordinator
定時觸發workflow
2.3 Bundle Job(一般不用)
綁定多個Coordinator

3. oozie節點
oozie節點就是各個配置文件中使用的的節點
3.1 控制流節點(Control Flow Nodes)
控制流節點一般都是定義在工作流開始或者結束的位置,比如start,end,kill等。以及提供工作流的執行路徑機制,如decision,fork,join等。

3.2 動作節點(Action Nodes)
負責執行具體動作的節點,比如:拷貝文件,執行某個Shell腳本等等

4. oozie的部署
這裏配置的是cdh版本的,所以前提是安裝cdh 的hadoop
需要已下資料:
hadoop cdh版本
ext 一個js框架
mysql 的jar包,因爲oozie原數據也是放在mysql 中,需要配置mysql相關
oozie的安裝包
在這裏插入圖片描述
有需要資料的留言
4.1 首先配置hadoop集羣

core-site.xml 這裏因爲oozie需要調度mr任務需要和hadoop 交互,這裏設置訪問用戶用戶組

<!-- Oozie Server的Hostname -->
<property>
	<name>hadoop.proxyuser.admin.hosts</name>
	<value>*</value>
</property>

<!-- 允許被Oozie代理的用戶組 -->
<property>
	<name>hadoop.proxyuser.admin.groups</name>
 	<value>*</value>
</property>

mapred-site.xml oozie執行mr 這裏需要看執行日誌,需要配置jobHistoryServer 它一般和namenode在同一個節點上

<!-- 配置 MapReduce JobHistory Server 地址 ,默認端口10020 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop-101:10020</value>
</property>

<!-- 配置 MapReduce JobHistory Server web ui 地址, 默認端口19888 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop101:19888</value>
</property>

yarn-site.xml

<!-- 任務歷史服務 一般和nn同意同一個節點 -->
<property> 
	<name>yarn.log.server.url</name> 
	<value>http://hadoop-101:19888/jobhistory/logs/</value> 
</property>

完成後:記得scp同步到其他機器節點,
測試jobHistoryServer是否可用,執行一個hadoop自帶的jar

/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/bin/yarn jar ./hadoop-mapreduce-examples-2.7.2.jar  wordcount /input/ /out/

查看hadoop-102:8088(resourceManager 節點)上看到yarn job 執行流程就成功了
在這裏插入圖片描述
4.2 部署Oozie

  1. 解壓Oozie
[admin@hadoop102 software]$ tar -zxvf /opt/software/cdh/oozie-4.0.0-cdh5.3.6.tar.gz -C /opt/module/cdh
  1. 在oozie根目錄下解壓oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz
[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ tar -zxvf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C ../

完成後Oozie目錄下會出現hadooplibs目錄
3) 在Oozie目錄下創建libext目錄,這個目錄放相關依賴

[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ mkdir libext/

將hadooplibs裏面的jar包,拷貝到libext目錄下:
拷貝Mysql驅動包到libext目錄下:
將ext-2.2.zip拷貝到libext/目錄下:

[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ cp -ra hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6/* libext/
[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ cp -a /opt/software/mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar ./libext/
[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ cp -a /opt/software/cdh/ext-2.2.zip libext/
  1. 配製Oozie配置文件
    vi conf/oozie-site.xml
    配製mysql 四要素 & hadoop 的配置文件位置
 <property>
        <name>oozie.service.JPAService.jdbc.driver</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>
            JDBC driver class.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.url</name>
        <value>jdbc:mysql://hadoop-101:3306/oozie</value>
        <description>
            JDBC URL.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.username</name>
        <value>root</value>
        <description>
            DB user name.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.password</name>
        <value>root</value>
        <description>
            DB user password.

          IMPORTANT: if password is emtpy leave a 1 space string, the service trims the       value,
                       if empty Configuration assumes it is NULL.
        </description>
    </property>
     <property>
        <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
        <value>*=/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/etc/hadoop</value>
        <description>
            Comma separated AUTHORITY=HADOOP_CONF_DIR, where AUTHORITY is the HOST:PORT of
            the Hadoop service (JobTracker, HDFS). The wildcard '*' configuration is
            used when there is no exact match for an authority. The HADOOP_CONF_DIR contains
            the relevant Hadoop *-site.xml files. If the path is relative is looked within
            the Oozie configuration directory; though the path can be absolute (i.e. to point
            to Hadoop client conf/ directories in the local filesystem.
        </description>
    </property>


總結爲如下:

屬性:oozie.service.JPAService.jdbc.driver
屬性值:com.mysql.jdbc.Driver
解釋:JDBC的驅動

屬性:oozie.service.JPAService.jdbc.url
屬性值:jdbc:mysql://hadoop102:3306/oozie
解釋:oozie所需的數據庫地址

屬性:oozie.service.JPAService.jdbc.username
屬性值:root
解釋:數據庫用戶名

屬性:oozie.service.JPAService.jdbc.password
屬性值:000000
解釋:數據庫密碼

屬性:oozie.service.HadoopAccessorService.hadoop.configurations
屬性值:*=/opt/module/CDH/hadoop-2.5.0-cdh5.3.6/etc/hadoop
解釋:讓Oozie引用Hadoop的配置文件

這裏需要在mysql 創建oozie 數據庫

mysql> create database oozie;
  1. 初始化Oozie
    上傳 oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz到hdfs並解壓
[admin@hadoop-102 oozie-4.0.0-cdh5.3.6]$ bin/oozie-setup.sh sharelib create -fs hdfs://hadoop-101:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz

這條目錄自動解壓
去50070檢查對應目錄有沒有文件生成。
在這裏插入圖片描述
6) 創建oozie.sql文件

[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/ooziedb.sh create -sqlfile oozie.sql -run

打包項目,生成war包(這裏oozie服務確認是不啓動的)

[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozie-setup.sh prepare-war
  1. 啓動關閉oozie
[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozied.sh start
[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozied.sh stop
  1. 啓動之後訪問Oozie的Web頁面,端口11000
    http://hadoop-101:11000/oozie
    在這裏插入圖片描述
    如果有出現問題評論直接提問

5. oozie的第一個案例
案例內容:使用Oozie調度Shell腳本
第一步:創建app目錄 oozie-app/shell 以後所有job都放在oozie-app的分目錄下

[root@hadoop-102 oozie-4.0.0-cdh5.3.6]# mkdir oozie-app

第二步:在oozie-app/shell目錄下創建兩個文件——job.properties和workflow.xml文件

[root@hadoop-102 oozie-4.0.0-cdh5.3.6]# touch touch workflow.xml
[root@hadoop-102 oozie-4.0.0-cdh5.3.6]# touch job.properties
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章