oozie初步使用之执行MR任务(非hue配置)

背景:
此处介绍oozie简单执行一个MR任务的基本流程,采用的是官网的Example进行测试,job.properties文件是自己手动配置的,jar包workflow.xml 用Example自带的配置!由于自己配置稍微有些麻烦,后面的介绍我会基于 Hue进行可视化配置~

oozie server version:4.1.0 - CDH5.13.0


操作流程

在Linux下创建测试目录:

mkdir -p /home/yj/oozie-test

下载官网oozie压缩包(版本和环境不一致也行,我们只是用其中的Example):

cd /home/yj/oozie-test

wget http://apache.fayea.com/oozie/4.3.1/oozie-4.3.1.tar.gz

解压后,将example目录移到自己的测试目录:

tar -xvf oozie-4.3.1.tar.gz

cd oozie-4.3.1

mv examples/ ../oozie-examples

这里写图片描述
修改pom.xml文件,在plugins中添加::

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
            <skipTests>false</skipTests>
            <testFailureIgnore>true</testFailureIgnore>
            <forkMode>once</forkMode>
    </configuration>
</plugin>

这里写图片描述
然后 maven打包

mvn package

跳转到本次测试的example目录下,可以看到oozie运行的几个关键文件:

cd /home/yj/oozie-test/oozie-examples/src/main/apps/map-reduce

这里写图片描述
修改 job.properties 内容:

nameNode=hdfs://cdh1:8020
jobTracker=cdh1:8032
queueName=default
examplesRoot=examples
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/map-reduce
outputDir=map-reduce

注:nameNodejobTracker(ResourceManager) 的 路径端口需要和自己集群环境对应,我的CDH集群端口是这个,但开源的集群就和这不同了!

我们可以浏览下workflow.xml文件,这是任务运行最关键的文件:

<workflow-app xmlns="uri:oozie:workflow:0.2" name="map-reduce-wf">
    <start to="mr-node"/>
    <action name="mr-node">
        <map-reduce>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <prepare>
                <delete path="${nameNode}/user/${wf:user()}/${examplesRoot}/output-data/${outputDir}"/>
            </prepare>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
                <property>
                    <name>mapred.mapper.class</name>
                    <value>org.apache.oozie.example.SampleMapper</value>
                </property>
                <property>
                    <name>mapred.reducer.class</name>
                    <value>org.apache.oozie.example.SampleReducer</value>
                </property>
                <property>
                    <name>mapred.map.tasks</name>
                    <value>1</value>
                </property>
                <property>
                    <name>mapred.input.dir</name>
                    <value>/user/${wf:user()}/${examplesRoot}/input-data/text</value>
                </property>
                <property>
                    <name>mapred.output.dir</name>
                    <value>/user/${wf:user()}/${examplesRoot}/output-data/${outputDir}</value>
                </property>
            </configuration>
        </map-reduce>
        <ok to="end"/>
        <error to="fail"/>
    </action>
    <kill name="fail">
        <message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="end"/>
</workflow-app>

再将这些文件上传到hdfs:

hdfs dfs -mkdir -p /user/root/examples/apps/map-reduce

hdfs dfs -put /home/yj/oozie-test/oozie-examples/src/main/apps/map-reduce/workflow.xml /user/root/examples/apps/map-reduce/

hdfs dfs -put /home/yj/oozie-test/oozie-examples/target/oozie-examples-4.3.1.jar /user/root/examples/apps/map-reduce/lib

hdfs dfs -mkdir /examples

hdfs dfs -put /home/yj/oozie-test/oozie-examples/src/main/apps /examples

注意hdfs文件权限问题!需要确保执行oozie任务的用户具备hdfs 读权限
这里写图片描述
这里写图片描述

建立输入输出文件夹并上传测试数据,workflow.xml中已经配置了该路径:

hdfs dfs -mkdir -p /user/root/examples/input-data/text

hdfs dfs -mkdir -p /user/root/examples/output-data

hdfs dfs -put /home/yj/oozie-test/oozie-examples/src/main/data/data.txt /user/root/examples/input-data/text

启动任务:

linux下执行:

oozie job -oozie http://cdh1:11000/oozie -config \
/home/yj/oozie-test/oozie-examples/src/main/apps/map-reduce/job.properties -run

执行成功控制台会提示:job: 0000000-180808134936263-oozie-oozi-W

我们可以看到启动oozie-job时只是指定了 job.properties 文件,该文件又指定了应用路径oozie.wf.application.path ,通过这个路径寻找到map-reduce目录,自动根据该目录下的lib目录workflow.xml去启动 oozie-launcher mrjob

我们可以去oozie web控制台看这些oozie job:
这里写图片描述


猜你喜欢

转载自blog.csdn.net/Abysscarry/article/details/82083266
今日推荐