oozie調度shell腳本

KEY

含義

nameNode

HDFS地址

jobTracker

jobTracker(ResourceManager)地址

queueName

Oozie隊列(默認填寫default)

examplesRoot

全局目錄(默認填寫examples)

oozie.usr.system.libpath

是否加載用戶lib目錄(true/false)

oozie.libpath

用戶lib庫所在的位置

oozie.wf.application.path

Oozie流程所在hdfs地址(workflow.xml所在的地址)

user.name

當前用戶

oozie.coord.application.path

Coordinator.xml地址(沒有可以不寫)

oozie.bundle.application.path

Bundle.xml地址(沒有可以不寫)

 

使用oozie調度shell腳本

oozie安裝好了之後,需要測試oozie的功能是否完整好使,官方已經給我們帶了各種測試案例,我們可以通過官方提供的各種案例來對oozie進行調度

第一步:解壓官方提供的調度案例

oozie自帶了各種案例,我們可以使用oozie自帶的各種案例來作爲模板,所以我們這裏先把官方提供的各種案例給解壓出來

cd /export/servers/oozie-4.1.0-cdh5.14.0

tar -zxf oozie-examples.tar.gz

第二步:創建工作目錄

在任意地方創建一個oozie的工作目錄,以後調度任務的配置文件全部放到oozie的工作目錄當中去

我這裏直接在oozie的安裝目錄下面創建工作目錄

cd /export/servers/oozie-4.1.0-cdh5.14.0

mkdir oozie_works

 

第三步:拷貝任務模板到工作目錄當中去

任務模板以及工作目錄都準備好了之後,我們把shell的任務模板拷貝到我們oozie的工作目錄當中去

cd /export/servers/oozie-4.1.0-cdh5.14.0

cp -r examples/apps/shell/ oozie_works/

 

第四步:隨意準備一個shell腳本

cd /export/servers/oozie-4.1.0-cdh5.14.0

vim oozie_works/shell/hello.sh

注意:這個腳本一定要是在我們oozie工作路徑下的shell路徑下的位置

#!/bin/bash

echo "hello world" >> /export/servers/hello_oozie.txt

第五步:修改模板下的配置文件

修改job.properties

cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/shell

vim job.properties

nameNode=hdfs://node01:8020

jobTracker=node01:8032

queueName=default

examplesRoot=oozie_works

oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shell

EXEC=hello.sh
 

修改workflow.xml

vim workflow.xml

<workflow-app xmlns="uri:oozie:workflow:0.4" name="shell-wf">
<start to="shell-node"/>
<action name="shell-node">
    <shell xmlns="uri:oozie:shell-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <configuration>
            <property>
                <name>mapred.job.queue.name</name>
                <value>${queueName}</value>
            </property>
        </configuration>
        <exec>${EXEC}</exec>
        <!-- <argument>my_output=Hello Oozie</argument> -->
        <file>/user/root/oozie_works/shell/${EXEC}#${EXEC}</file>

        <capture-output/>
    </shell>
    <ok to="end"/>
    <error to="fail"/>
</action>
<decision name="check-output">
    <switch>
        <case to="end">
            ${wf:actionData('shell-node')['my_output'] eq 'Hello Oozie'}
        </case>
        <default to="fail-output"/>
    </switch>
</decision>
<kill name="fail">
    <message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<kill name="fail-output">
    <message>Incorrect output, expected [Hello Oozie] but was [${wf:actionData('shell-node')['my_output']}]</message>
</kill>
<end name="end"/>
</workflow-app>

第六步:上傳調度任務到hdfs上面去

注意:上傳的hdfs目錄爲/user/root,因爲我們hadoop啓動的時候使用的是root用戶,如果hadoop啓動的是其他用戶,那麼就上傳到

/user/其他用戶

cd /export/servers/oozie-4.1.0-cdh5.14.0

hdfs dfs -put oozie_works/ /user/root

 

第七步:執行調度任務

通過oozie的命令來執行調度任務

cd /export/servers/oozie-4.1.0-cdh5.14.0

bin/oozie job -oozie http://node03:11000/oozie -config oozie_works/shell/job.properties  -run

從監控界面可以看到任務執行成功了

查看hadoop的19888端口,我們會發現,oozie啓動了一個MR的任務去執行shell腳本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章