oozie服務(wù)安裝及使用

1崖疤、安裝Oozie(4.2.0)及遇到的一些問題

1.1、依賴環(huán)境及版本

Oozie-4.2.0

Maven3.x

Mysql數(shù)據(jù)庫5.6.16

Mysql驅(qū)動jar包(5.1.X匹配數(shù)據(jù)庫5.6.X)

ext-2.2.zip(小寫的e,并且必須是這個版本)

JDK-1.8

Hadoop-2.6.2

Spark-1.5.1

用的root用戶

安裝maven劫哼,配環(huán)境變量,改配置文件setting假如阿里云中央鏡像倉庫地址(因為要用使用maven編譯oozie疫向,會下載一些依賴jar包)

(說明:oozie是在servlet容器中運行的豪嚎,可以用Tomcat等其他web容器谈火,也可以使用內(nèi)嵌的Tomcat或jetty服務(wù)器,

Oozie-4.2.0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Oozie-5.0.0

本安裝過程是基于內(nèi)嵌的Tomcat安裝的糯耍,基于外部Tomcat的安裝可以查看官方文檔 http://oozie.apache.org/docs/5.0.0/AG_Install.html)

測試服務(wù)器部署情況:

在Master節(jié)點安裝oozie-server,在maste和其他slave節(jié)點安裝oozie-client

1.2安裝oozie

下載oozie tar包(地址:http://archive.apache.org/dist/oozie/4.2.0/oozie-4.2.0.tar.gz)

解壓到安裝目錄革为,進(jìn)入解壓后的目錄cd oozie-4.2.0/bin

1.2.1編譯源文件構(gòu)建項目 命令:

./mkdistro.sh -DskipTests -Phadoop-2 –Dhadoop.varsion=2.6.2 –Dspark.version=1.5.1

(-Dxxx.version=x.x.x是指定版本舵鳞,如果需要其他的框架依次指定需要的版本即可? ? ? ? ? ? ? ? ? ? ? ? ? ?

例如: -Ddistcp.version=2.6.0 -Dsqoop.version=1.4.4 -Dhive.version=0.13.1 -Dpig.version=0.15.0)

編譯的時候會因為版本依賴環(huán)境的原因報兩個錯:

1.

根據(jù)提示看下源代碼:

Jdk1.8開始會校驗java注釋,不符合W3C HTML 4.01 HTML規(guī)范要求的編譯時會報錯

詳細(xì)信息可以看(http://blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html)

解決方法:

在pom.xml文件中找到這個插件的引用

更改前:

更改后:

2抛虏、

http://repository.codehaus.org這個地址現(xiàn)在已經(jīng)不能訪問了(4.2.0版本的時候應(yīng)該可以)

打開pom.xml找到這個配置項套才,通過這個地址下載一些依賴

下面是4.2.0版本

這個是5.0.0版本

對比看下

這個引用已經(jīng)被去掉了

4.2.0版本可以直接去掉或通過配置不檢索這個Maven庫

Snapshot版本代表不穩(wěn)定、尚處于開發(fā)中的版本背伴,快照版本,如果現(xiàn)在開發(fā)的項目依賴其他項目可以設(shè)置為true

Release版本代表穩(wěn)定的版本息尺,發(fā)行版本

<releases>

<enabled>false</enabled>

</releases>

不使用snapshot和releases版本應(yīng)該可以起到不檢索這個庫的效果

再次用命令編譯疾掰,這樣就編譯完成了:

構(gòu)建成后,可以在oozie-3.3.2/distro/target目錄下看到構(gòu)建后的文件个绍,進(jìn)入distro/target/目錄:

解壓oozie-4.2.0-distro.tar.gz生成oozie-4.2.0

對比oozie-4.2.0和oozie-4.2.0-distro目錄是一樣的,所以可以將oozie-4.2.0-distro刪掉

在/etc/profile文件中配置環(huán)境變量

export OOZIE_HONE= /usr/local/bigdata/oozie-4.2.0/distro/target/oozie-4.2.0

PATH=$OOZIE_HOME/bin:$PATH

使配置生效:

source /etc/profile

1.2.2凛虽、在oozie-4.2.0目錄下創(chuàng)建lib目錄,將libext包下面的包復(fù)制到lib下

在/usr/local/bigdata/oozie-4.2.0目錄下創(chuàng)建libext目錄

下載ext-2.2-zip

(可以在CSDN上下載呀潭,其他地方找的有些不能用)

下載mysql(mysql-connector-java-5.1.16-bin.jar)驅(qū)動jar包

將這兩個包都放在libext里面至非,再將Hadoop目錄下所有的*.jar包復(fù)制到這個目錄下,先進(jìn)到hadoop安裝目錄下/usr/local/bigdata/hadoop-2.6.2

執(zhí)行命令(以自己本機路徑為準(zhǔn))

find -name *.jar |xargs -t -i cp {} /usr/local/bigdata/oozie-4.2.0/libext

然后進(jìn)入/usr/local/bigdata/oozie-4.2.0/distro/target/oozie-4.2.0/bin目錄下(如果已經(jīng)配了環(huán)境變量可以直接執(zhí)行)執(zhí)行命令./ oozie-setup.sh prepare-war命令(本機要安裝unzip和zip,如果沒有安裝可以通過yum安裝)

完成之后會在/usr/local/bigdata/oozie-4.2.0/distro/target/oozie-4.2.0目錄下生成lib包谐鼎,里面放著執(zhí)行bin里面腳本所需要的jar包趣惠,但可能jar包不全,所以將/root/oozie-4.2.0/libext目錄下的jar和zip復(fù)制到lib包下

1.2.3味悄、初始化數(shù)據(jù)庫

配置oozie-site.xml:

默認(rèn)情況下,Oozie的配置中有個配置項oozie.service.JPAService.create.db.schema唐片,值為false涨颜,設(shè)置非自動創(chuàng)建數(shù)據(jù)庫,這里保持默認(rèn)設(shè)置咐低,這樣可以通過手動創(chuàng)建Oozie數(shù)據(jù)庫(可以對用戶進(jìn)行權(quán)限控制)

更多配置可查看官網(wǎng):http://oozie.apache.org/docs/5.0.0/AG_Install.html

在mysql數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫oozie(本例使用oz數(shù)據(jù)庫)

然后可以執(zhí)行如下命令,生成Oozie所需要的數(shù)據(jù)表:

ooziedb.sh create -sqlfile oozie.sql –run

控制臺輸出日志钉汗,沒有報錯鲤屡,并且在當(dāng)前目錄下可以看到,同時也生成了oozie.sql腳本文件卢未。到MySQL數(shù)據(jù)庫中可以看到生成的表,說明上述操作執(zhí)行成功

1.2.4辽社、上傳examples到hdfs

命令:hadoop fs -put examples/ /user/root

1.2.5、啟動oozie

下面可以啟動Oozie戳葵,使用如下命令:

oozie-start.sh

1.2.6訪問11000端口頁面

如果頁面報錯汉匙,查看后臺oozie服務(wù),如果啟動起來了噩翠,則可能是這個路徑下的jar包和Tomcat的jar沖突了,根據(jù)報錯信息將這個目錄下的jar包刪除就可以了

2擅笔、在master和slave節(jié)點安裝oozie-client

在master節(jié)點oozie-server安裝目錄下

將oozie-client-4.2.0.tar.gz復(fù)制到master節(jié)點安裝目錄下

cp oozie-client-4.2.0.tar.gz /usr/local/bigdata/

將oozie-client-4.2.0.tar.gz復(fù)制到其他slave節(jié)點(因為配置了節(jié)點間ssh免密登錄所以可以直接通過命令復(fù)制见芹,其他節(jié)點也使用同樣的方法)

scp oozie-client-4.2.0.tar.gz root@120.78.251.92:/usr/local/bigdata/

通過tar –zxvf解壓

在bin目錄下只有oozie腳本

最后配下環(huán)境變量就行了蠢涝,執(zhí)行oozie任務(wù)可以在任意目錄下

Oozie job –oozie http://ip:port/oozie -config job.properties -run

3、Oozie使用及常用命令

啟動oozie服務(wù)的命令:oozie-start.sh

關(guān)閉oozie服務(wù)的命令:oozie-stop.sh

Oozie的web頁面地址:http://oozie服務(wù)所在服務(wù)器IP地址:port(默認(rèn)是11000)

可以看下oozie帶的map-reduce例子的目錄結(jié)構(gòu)

vim job.properties:

(說明:屬性jobTracker在oozie-5.0.0已經(jīng)改成resourceManager了)

所有示例的輸入都在examples/input-data目錄中徘铝。

這些示例在examples/output-data/$ {EXAMPLE_NAME}目錄下創(chuàng)建輸出惯吕。

(DAG有向無環(huán)圖)節(jié)點執(zhí)行順序

控制流節(jié)點:控制工作流程和工作流程作業(yè)執(zhí)行路徑的開始和結(jié)束的節(jié)點

動作節(jié)點:觸發(fā)執(zhí)行計算/處理任務(wù)的節(jié)點

各個節(jié)點的作用可以看:http://oozie.apache.org/docs/4.2.0/WorkflowFunctionalSpec.html

執(zhí)行一個oozie任務(wù)

使用命令:

oozie? job? –oozie http://oozie服務(wù)所在服務(wù)器IP地址:port(默認(rèn)是11000)/oozie? -config? job.properties(本地的job.properties置吓,不是hdfs中的)

例子:oozie job –oozie http://119.23.155.53:11000/oozie -config job.properties –run

(注意:job.properties文件在提交期間需要是本地文件崔慧,不是HDFS路徑

可以在環(huán)境變量中配置:

export OOZIE_URL =http://localhost:11000/oozie

配置完之后可以這樣寫:oozie job –config job.properties -run)

用oozie用戶啟用的oozie服務(wù)

一個問題:

使用root用戶執(zhí)行oozie任務(wù)

使用oozie用戶執(zhí)行oozie任務(wù)

需要更改hadoop的配置文件core-site.xml

(注意:如果使用root用戶也需要加這個配置將oozie改成root)

(說明:這個必須配置关炼,不然執(zhí)行oozie任務(wù)是會報錯(還不太理解為什么)

重啟hadoop集群癌幕,然后在執(zhí)行oozie任務(wù)

這樣就成功了

Java示例代碼:

package com.libaba.oozie;

import org.apache.oozie.client.OozieClient;

import org.apache.oozie.client.OozieClientException;

import org.apache.oozie.client.WorkflowJob;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import java.util.Properties;

public class MyOozie {

? ? private static Logger logger = LoggerFactory.getLogger(MyOozie.class) ;

? ? public static void main(String[] args) {

? ? ? ? try {

? ? ? ? ? ? oozie();

? ? ? ? } catch (OozieClientException e) {

? ? ? ? ? ? e.printStackTrace();

? ? ? ? } catch (InterruptedException e) {

? ? ? ? ? ? e.printStackTrace();

? ? ? ? }

? ? }

? ? public static void oozie() throws OozieClientException, InterruptedException {

? ? ? ? //獲取本地Oozie的OozieClient

? ? ? ? OozieClient oozieClient = new OozieClient("http://119.23.155.53:11000/oozie") ;

? ? ? ? //創(chuàng)建工作流作業(yè)配置并設(shè)置工作流應(yīng)用程序路徑

? ? ? ? Properties conf = oozieClient.createConfiguration();

? conf.setProperty(OozieClient.APP_PATH,"hdfs://119.23.155.53:9000/user/root/examples/apps/map-reduce");

? ? ? ? //設(shè)置工作參數(shù)(對應(yīng)本機地址羽戒,這里面是job.properties里面的參數(shù))

//5.0.0是resourceManager,4.2.0是jobTracker

? ? ? ? //conf.setProperty("resourceManager","119.23.155.53:8032") ;

conf.setProperty("jobTracker","119.23.155.53:8032") ;

? ? ? ? conf.setProperty("nameNode", "hdfs:// 119.23.155.53:9000");

? ? ? ? conf.setProperty("examplesRoot", "examples");

? ? ? ? conf.setProperty("queueName","default") ;

? ? ? ? conf.setProperty("master","local[*]") ;

? ? ? ? conf.setProperty("inputDir","/usr/root/inputdir") ;

? ? ? ? conf.setProperty("outputDir","/usr/root/outputdir") ;

? ? ? ? conf.setProperty("user.name","root") ;

? ? ? ? //提交并啟動工作流作,會加載properties里面的屬性配置

? ? ? ? String jobId = oozieClient.run(conf) ;

? ? ? ? System.out.println("工作流作業(yè)提交了");

? ? ? ? System.out.println(jobId);

? ? ? ? System.out.println("工作狀態(tài)--->" + oozieClient.getJobInfo(jobId).getStatus());

? ? ? ? //等待工作流作業(yè)每10秒鐘打印一次

? ? ? ? while (oozieClient.getJobInfo(jobId).getStatus() == WorkflowJob.Status.RUNNING){

? ? ? ? ? ? System.out.println("工作流作業(yè)正在進(jìn)行...") ;

? ? ? ? ? ? logger.info("工作流作業(yè)正在進(jìn)行...");

? ? ? ? ? ? Thread.sleep(10000);

? ? ? ? }

? ? ? ? while (oozieClient.getJobInfo(jobId).getStatus() == WorkflowJob.Status.SUCCEEDED){

? ? ? ? ? ? System.out.println("工作流作業(yè)執(zhí)行成功...") ;

? ? ? ? ? ? logger.info("工作流作業(yè)執(zhí)行成功.....");

? ? ? ? ? ? Thread.sleep(10000);

? ? ? ? }

? ? ? ? System.out.println("工作流執(zhí)行結(jié)束");

? ? }

}

查看某個oozie任務(wù)的狀態(tài)易稠,使用命令:

oozie? job? –oozie http://oozie服務(wù)所在服務(wù)器IP地址:port(默認(rèn)是11000)/oozie? -info? oozie任務(wù)的ID (任務(wù)啟動時會生成可以在控制臺或日志中查看,也可以再oozie服務(wù)的11000WEB頁面查看)

例子:oozie job –oozie http://119.23.155.53:11000/oozie -info 0000000-180522133038283-oozie-oozi-W

也可以在頁面上web頁面上查看當(dāng)前任務(wù)的具體信息

Oozie的生命周期

PREP prep 預(yù)備,準(zhǔn)備? 一個工作流Job第一次創(chuàng)建將處于PREP狀態(tài)企量,表示工作流Job已經(jīng)定義,但是沒有運行梁钾。

RUNNING running 運轉(zhuǎn) 當(dāng)一個已經(jīng)被創(chuàng)建的工作流Job開始執(zhí)行的時候绳泉,就處于RUNNING狀態(tài)。它不會達(dá)到結(jié)束狀態(tài)姆泻,只能因為出錯而結(jié)束零酪,或者被掛起。

SUSPENDED suspended 暫停的 一個RUNNING狀態(tài)的工作流Job會變成SUSPENDED狀態(tài)四苇,而且它會一直處于該狀態(tài)方咆,除非這個工作流Job被重新開始執(zhí)行或者被殺死瓣赂。

SUCCEEDED succeeded 成功,完成煌集,到達(dá) 當(dāng)一個RUNNING狀態(tài)的工作流Job到達(dá)了end節(jié)點,它就變成了SUCCEEDED最終完成狀態(tài)碉钠。

KILLED killed 被殺死的 當(dāng)一個工作流Job處于被創(chuàng)建后的狀態(tài)卷拘,或者處于RUNNING栗弟、SUSPENDED狀態(tài)時污筷,被殺死乍赫,則工作流Job的狀態(tài)變?yōu)镵ILLED狀態(tài)耿焊。

FAILED failed 失敗了的,不成功的 當(dāng)一個工作流Job不可預(yù)期的錯誤失敗而終止器腋,就會變成FAILED狀態(tài)。

工作流狀態(tài)轉(zhuǎn)移

轉(zhuǎn)移前狀態(tài)

轉(zhuǎn)移后狀態(tài)集合

未啟動

PREP

PREP

RUNNING诊县、KILLED

RUNNING

SUSPENDED措左、SUCCEEDED、KILLED胸嘁、FAILED

SUSPENDED

RUNNING凉逛、KILLED

KILLED? ? ? ? ? ? ? ? ? ? SUCCEEDED? ? ? ? ? ? ? ? SUSPENDED

以后有新的認(rèn)識會更新上傳到github,可以通過下面地址下載

GitHub地址:https://github.com/privateGitLab/oozie-4.2.0

git@github.com:privateGitLab/oozie-4.2.0.git

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末毫胜,一起剝皮案震驚了整個濱河市酵使,隨后出現(xiàn)的幾起案子焙糟,更是在濱河造成了極大的恐慌,老刑警劉巖搓劫,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異勤揩,居然都是意外死亡陨亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蛙埂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遮糖,“玉大人,你說我怎么就攤上這事屡江〕图危” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵惹苗,是天一觀的道長臊诊。 經(jīng)常有香客問我抓艳,道長,這世上最難降的妖魔是什么儡首? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任蔬胯,我火速辦了婚禮位他,結(jié)果婚禮上鹅髓,老公的妹妹穿的比我還像新娘。我一直安慰自己窿冯,他們只是感情好醒串,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布芜赌。 她就那樣靜靜地躺著,像睡著了一般膘壶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上漱竖,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天馍惹,我揣著相機與錄音万矾,去河邊找鬼慎框。 笑死,一個胖子當(dāng)著我的面吹牛薪丁,可吹牛的內(nèi)容都是我干的严嗜。 我是一名探鬼主播洲敢,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼压彭,長吁一口氣:“原來是場噩夢啊……” “哼壮不!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起衡未,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绊诲,沒想到半個月后褪贵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年胰蝠,在試婚紗的時候發(fā)現(xiàn)自己被綠了茸塞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钾虐。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡效扫,死狀恐怖荡短,靈堂內(nèi)的尸體忽然破棺而出哆键,到底是詐尸還是另有隱情籍嘹,我是刑警寧澤辱士,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布颂碘,位于F島的核電站头岔,受9級特大地震影響峡竣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颂碧,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一肌似、第九天 我趴在偏房一處隱蔽的房頂上張望锈嫩。 院中可真熱鬧垦搬,春花似錦猴贰、人聲如沸米绕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窿给。三九已至崩泡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呛伴,已是汗流浹背热康。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工褐隆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留庶弃,地道東北人德澈。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓缴守,卻偏偏與公主長得像屡穗,于是被迫代替她去往敵國和親忽肛。 傳聞我的和親對象是個殘疾皇子屹逛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容