Oozie使用03 使用oozie调度MR任务

文章目录

    • 第一步:准备MR执行的数据
    • 第二步:执行官方测试案例
    • 第三步:准备调度的资源
    • 第四步:拷贝的jar包到对应目录
    • 第五步:修改配置文件
    • 第六步:上传调度任务到hdfs对应目录
    • 第七步:执行调度任务

第一步:准备MR执行的数据

我们这里通过oozie调度一个MR的程序的执行,MR的程序可以是自己写的,也可以是hadoop工程自带的,我们这里就选用hadoop工程自带的MR程序来运行wordcount的示例

准备以下数据上传到HDFS的/oozie/input路径

hdfs dfs -mkdir -p /oozie/input
vim wordcount.txt
hello   world   hadoop
spark   hive    hadoop

将数据上传到hdfs对应目录

hdfs dfs -put wordcount.txt /oozie/input

第二步:执行官方测试案例

hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar   wordcount  /oozie/input/  /oozie/output

第三步:准备调度的资源

将需要调度的资源都准备好放到一个文件夹下面去,包括jar包,job.properties,以及workflow.xml。
拷贝MR的任务模板

cd /export/servers/oozie-4.1.0-cdh5.14.0
cp -ra examples/apps/map-reduce/   oozie_works/

删掉MR任务模板lib目录下自带的jar包

cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/map-reduce/lib
rm -rf oozie-examples-4.1.0-cdh5.14.0.jar

第四步:拷贝的jar包到对应目录

从上一步的删除当中,可以看到需要调度的jar包存放在了
/export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/map-reduce/lib这个目录下,所以我们把我们需要调度的jar包也放到这个路径下即可

cp /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/map-reduce/lib/

第五步:修改配置文件

修改job.properties

cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/map-reduce
vim job.properties
nameNode=hdfs://node01:8020
jobTracker=node01:8032
queueName=default
examplesRoot=oozie_works

oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/map-reduce/workflow.xml
outputDir=/oozie/output
inputDir=/oozie/input

修改workflow.xml

cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/map-reduce
vim workflow.xml


<workflow-app xmlns="uri:oozie:workflow:0.5" 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}/${outputDir}"/>
            prepare>
            <configuration>
                <property>
                    <name>mapred.job.queue.namename>
                    <value>${queueName}value>
                property>
				
				
				   
                <property>
                    <name>mapred.mapper.new-apiname>
                    <value>truevalue>
                property>

                <property>
                    <name>mapred.reducer.new-apiname>
                    <value>truevalue>
                property>

                
                <property>
                    <name>mapreduce.job.output.key.classname>
                    <value>org.apache.hadoop.io.Textvalue>
                property>

                
                <property>
                    <name>mapreduce.job.output.value.classname>
                    <value>org.apache.hadoop.io.IntWritablevalue>
                property>

                
                <property>
                    <name>mapred.input.dirname>
                    <value>${nameNode}/${inputDir}value>
                property>

                
                <property>
                    <name>mapred.output.dirname>
                    <value>${nameNode}/${outputDir}value>
                property>

                
                <property>
                    <name>mapreduce.job.map.classname>
                    <value>org.apache.hadoop.examples.WordCount$TokenizerMappervalue>
                property>

                
                <property>
                    <name>mapreduce.job.reduce.classname>
                    <value>org.apache.hadoop.examples.WordCount$IntSumReducervalue>
                property>
				
                <property>
                    <name>mapred.map.tasksname>
                    <value>1value>
                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对应目录

cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works
hdfs dfs -put map-reduce/ /user/root/oozie_works/

第七步:执行调度任务

执行调度任务,然后通过oozie的11000端口进行查看任务结果

cd /export/servers/oozie-4.1.0-cdh5.14.0
bin/oozie job -oozie http://hadoop01:11000/oozie -config oozie_works/map-reduce/job.properties -run

任务运行成功了,但是oozie那块儿一直在running,不知道是什么bug。
Oozie使用03 使用oozie调度MR任务_第1张图片Oozie使用03 使用oozie调度MR任务_第2张图片

nice!

你可能感兴趣的:(#,Oozie,oozie)