高可用Hadoop平台-Oozie工作流


1.概述

  在開發Hadoop的相關應用使用,在業務不復雜,任務不多的情況下,我們可以直接使用Crontab去完成相關應用的調度。今天給大家介紹的是統一管理各種調度任務的系統,下面為今天分享的內容目錄:

  • 內容介紹
  • Oozie Server
  • 截圖預覽

  下面開始今天的內容分享。

2.內容介紹

  今天的內容不涉及Oozie的具體細節操作,它的工作流程在下一篇博客為大家詳細介紹。今天主要給大家分享Oozie的作用,它的集成步驟等內容。

2.1 作用

  Oozie它是一個開源的工作流調度系統,它可以管理邏輯復雜的多個Hadoop作業任務,按照指定的順序將其進行協同工作。比如說,我們日常的工作場景:

  1. 收集數據到HDFS
  2. 編寫MR去清洗數據,生成新的數據存放到指定的HDFS路徑下
  3. 創建Hive表分區,並加載數據到對應的表分區
  4. 使用HQL進行業務指標統計,並將統計的結果輸出到對應的Hive大表當中
  5. 對統計后的大表當中的數據進行數據導出共外界業務去調用使用

  通過上述的日常工作流程,我們可以編寫工作流系統,生成一個工作流實例,然后每天定時去運行實例即可。針對這樣一種Hadoop的應用場景,Oozie能夠簡化我們的任務調度並執行。

2.2 基礎環境

  本次給大家分享的基礎環境是:

Name   Value
操作系統 CentOS6.6
工作流 Oozie4.2
Hadoop 2.6

  

 

 

 

  以上便是本篇博客需依賴的基礎環境。另外還需要用到JDK,Maven,MySQL驅動文件等。

3.Oozie Server

  Oozie Server能夠為我們提供便捷的Job管理功能,可以通過其可視化界面去管理Job的運行狀態,當然也支持構建復雜的Hadoop Job流程,各個Job之間的依賴關系可以通過工作流進行配置,由Oozie Server統一去執行。

3.1 依賴包准備

  • Maven

  下載安裝Maven環境,命令如下所示:

wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz

tar -zxvf apache-maven-3.3.3-bin.tar.gz

  接着添加環境變量,如下所示:

export M2_HOME=/home/hadoop/maven-3.3.3
export PATH=$PATH:$ES_HOME/bin

  然后輸入一下命令使之立即生效:

. /etc/profile

  最后,我們輸入 mvn -version 命令,若能現實對應的Maven版本號,即表示Maven環境集成OK。

  • MySQL

  關於 MySQL 數據庫的安裝配置較為簡單,這里就不多做贅述了。

  • Tomcat

  由於Oozie會用其Web容器,這里需要安裝Tomcat Web服務器,可以到Apache的官網下載對應的安裝包,這里不多做贅述。

  • ExtJS工具包

  在可視化會依賴該工具包,所以這里我們需要下載其工具,下載地址我們可以在Oozie的DG_QuickStart頁面找到,如下圖所示:

  地址如下所示:

wget http://dev.sencha.com/deploy/ext-2.2.zip
  • Oozie

  這里我們可以在Oozie的官網下載其安裝包,下載地址:

wget http://mirrors.cnnic.cn/apache/oozie/4.2.0/oozie-4.2.0.tar.gz

3.2 Oozie集成

  在准備好環境后,接下來,我們去集成Oozie。首先,我們將下載的Oozie安裝包進行解壓,然后,使用Maven命令對其進行打包。操作命令如下所示:

# 解壓
tar -zxvf oozie-4.2.0.tar.gz

# 進入
cd oozie-4.2.0

# 打包
mvn clean package assembly:single -DskipTests

  注意:這里需要對pom文件進行修改,將JDK、Hadoop、HBase、Hive等組件的版本號進行統一,與你使用的版本號一致即可。

  成功后出現以下圖所示:

  生成的路徑地址如下所示:

/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0

  此時,我們修改Oozie的環境變量,如下所示:

export OOZIE_HOME=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0
export PATH=$PATH:$OOZIE_HOME/bin

  接着,我們在$OOZIE_HOME目錄下創建一個文件夾用於存放ExtJS和Hadoop的JAR文件,這里我們將前面下載的ExtJS的壓縮包和Hadoop的Share目錄下的JAR文件拷貝到libext文件夾下即可。由於,我們使用了MySQL來存儲Oozie的元數據,所以需要用到MySQL的驅動包,因而,我們需要將MySQL的驅動包拷貝到libext目錄下。

  在准備完這些后,下面我們開始安裝,命令如下所示:

# 進入$OOZIE_HOME/bin目錄
./oozie-setup.sh prepare-war

  生成以下信息,表示成功,內容如下所示:

[hadoop@nna bin]$ ./oozie-setup.sh prepare-war
  setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"

INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/commons-configuration-1.6.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-auth-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-common-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-common-2.6.0-tests.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-hdfs-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-hdfs-2.6.0-tests.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-hdfs-nfs-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-app-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-common-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-core-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-hs-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-hs-plugins-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-jobclient-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-jobclient-2.6.0-tests.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-shuffle-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-examples-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-nfs-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-api-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-applications-distributedshell-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-applications-unmanaged-am-launcher-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-client-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-common-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-registry-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-server-applicationhistoryservice-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-server-common-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-server-nodemanager-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-server-resourcemanager-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-server-tests-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-server-web-proxy-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/mysql-connector-java-5.1.32-bin.jar

New Oozie WAR file with added 'ExtJS library, JARs' at /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/webapps/oozie.war


INFO: Oozie is ready to be started

  若失敗,可根據提示做對應的處理。

  這樣,我們在/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/webapps目錄下就生成了oozie.war文件。

3.3 配置Oozie

  我們在$OOZIE_HOME/conf目錄下修改oozie-site.xml文件,內容如下所示:

<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://nna: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.</description> 
   </property>

  這里我們使用手動去創建數據庫,oozie.service.JPAService.create.db.schema若為true屬性,即表示去自動創建。手動創建腳本如下所示:

CREATE DATABASE oozie;
GRANT ALL ON oozie.* TO 'root'@'nna' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;

  然后,我們使用以下命令,生成數據表:

#在$OOZIE_HOME/bin目錄下操作
./ooziedb.sh create -sqlfile oozie.sql -run

  生成以下內容:

[hadoop@nna bin]$ ./ooziedb.sh create -sqlfile oozie.sql -run
  setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"

Validate DB Connection
DONE
DB schema does not exist
Check OOZIE_SYS table does not exist
DONE
Create SQL schema
DONE
Create OOZIE_SYS table
DONE

Oozie DB has been created for Oozie version '4.2.0'


The SQL commands have been written to: oozie.sql

  若執行正常,會生成oozie.sql的腳本,如下圖所示:

3.4 啟動

  接下來,我們去啟動Oozie,命令如下所示:

# 在$OOZIE_HOME/bin目錄下 
./oozie-start.sh

  正常啟動內容如下所示:

[hadoop@nna bin]$ ./oozie-start.sh 
WARN: Use of this script is deprecated; use 'oozied.sh start' instead

Setting OOZIE_HOME:          /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0
Setting OOZIE_CONFIG:        /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/conf
Sourcing:                    /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/conf/oozie-env.sh
  setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"
Setting OOZIE_CONFIG_FILE:   oozie-site.xml
Setting OOZIE_DATA:          /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/data
Setting OOZIE_LOG:           /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/logs
Setting OOZIE_LOG4J_FILE:    oozie-log4j.properties
Setting OOZIE_LOG4J_RELOAD:  10
Setting OOZIE_HTTP_HOSTNAME: nna
Setting OOZIE_HTTP_PORT:     11000
Setting OOZIE_ADMIN_PORT:     11001
Setting OOZIE_HTTPS_PORT:     11443
Setting OOZIE_BASE_URL:      http://nna:11000/oozie
Setting CATALINA_BASE:       /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server
Setting OOZIE_HTTPS_KEYSTORE_FILE:     /home/hadoop/.keystore
Setting OOZIE_HTTPS_KEYSTORE_PASS:     password
Setting OOZIE_INSTANCE_ID:       nna
Setting CATALINA_OUT:        /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/logs/catalina.out
Setting CATALINA_PID:        /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/temp/oozie.pid

Using   CATALINA_OPTS:        -Xmx1024m -Dderby.stream.error.file=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/logs/derby.log
Adding to CATALINA_OPTS:     -Doozie.home.dir=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0 -Doozie.config.dir=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/conf -Doozie.log.dir=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/logs -Doozie.data.dir=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/data -Doozie.instance.id=nna -Doozie.config.file=oozie-site.xml -Doozie.log4j.file=oozie-log4j.properties -Doozie.log4j.reload=10 -Doozie.http.hostname=nna -Doozie.admin.port=11001 -Doozie.http.port=11000 -Doozie.https.port=11443 -Doozie.base.url=http://nna:11000/oozie -Doozie.https.keystore.file=/home/hadoop/.keystore -Doozie.https.keystore.pass=password -Djava.library.path=

Setting up oozie DB
  setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"

Validate DB Connection
DONE
DB schema exists

The SQL commands have been written to: /tmp/ooziedb-9100396876446618885.sql

Using CATALINA_BASE:   /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server
Using CATALINA_HOME:   /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server
Using CATALINA_TMPDIR: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/temp
Using JRE_HOME:        /usr/java/jdk1.7
Using CLASSPATH:       /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/bin/bootstrap.jar
Using CATALINA_PID:    /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/temp/oozie.pid

4.截圖預覽

  然后,我們可以輸入瀏覽地址,查看是否啟動正常,如下圖所示:

5.總結

  關於Oozie的集成,會有點繁瑣,本篇博客只是針對單獨的Oozie去集成,后續博客會給大家介紹Oozie集成到Hadoop集群,以及相關工作流的用法介紹等。

6.結束語

  這篇博客就和大家分享到這里,如果大家在研究學習的過程當中有什么問題,可以加群進行討論或發送郵件給我,我會盡我所能為您解答,與君共勉!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM