【Oozie笔记】5. Oozie调度MapReduce任务

简介

oozie运行mapreduce任务需要把用到的lib包放到任务目录的lib文件夹内,其他的文件和shell一样,只是里面的内容有变动。

运行Hadoop的官方示例-wordCount

示例jar包在hadoop-2.5.0-cdh5.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar

HDFS的文件也创建好了。
在这里插入图片描述
运行任务:
root@master:/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/share/hadoop/mapreduce# hadoop jar hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar wordcount /wordcount/word.txt /wordcount/out
在这里插入图片描述
任务运行成功了。看下任务的配置:
在这里插入图片描述
注意看mapred.reducer.new-api mapreduce.job.reduce.class 这两个属性内容,mapred.reducer.new-api表示使用新的mapreduce的API,mapreduce.job.reduce.class表示reduce类 下面使用oozie就会使用这样的属性值

oozie运行mapreduce
job.properties
nameNode=hdfs://master:8020
jobTracker=master:8032
queueName=default
examplesRoot=oozie-apps

oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/map-reduce/workflow.xml
outputDir=map-reduce
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}/wordcount/out"/>
            </prepare>
            <!-- 配置项 -->
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
                <!-- 配置调度MR任务时,使用新的API -->
                <property>
                    <name>mapred.mapper.new-api</name>
                    <value>true</value>
                </property>
                <property>
                    <name>mapred.reducer.new-api</name>
                    <value>true</value>
                </property>

                <!-- 指定Job Key输出类型 -->
                <property>
                    <name>mapreduce.job.output.key.class</name>
                    <value>org.apache.hadoop.io.Text</value>
                </property>
                <!-- 指定Job Value输出类型 -->
                <property>
                    <name>mapreduce.job.output.value.class</name>
                    <value>org.apache.hadoop.io.IntWritable</value>
                </property>

                <!-- 指定输入路径 -->
                <property>
                    <name>mapred.input.dir</name>
                    <value>/wordcount/word.txt</value>
                </property>

                <!-- 指定输出路径 -->
                <property>
                    <name>mapred.output.dir</name>
                    <value>/wordcount/out</value>
                </property>

                <!-- 指定Map类 -->
                <property>
                    <name>mapreduce.job.map.class</name>
                    <value>org.apache.hadoop.examples.WordCount$TokenizerMapper</value>
                </property>

                <!-- 指定Reduce类 -->
                <property>
                    <name>mapreduce.job.reduce.class</name>
                    <value>org.apache.hadoop.examples.WordCount$IntSumReducer</value>
                </property>

                <!-- 指定task 个数 -->
                <property>
                    <name>mapred.map.tasks</name>
                    <value>1</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

root@master:/opt/module/oozie-4.0.0-cdh5.3.6/oozie-apps# hadoop fs -put map-reduce/ /user/root/oozie-apps
任务jar包或者依赖包都必须放在 lib 目录下
在这里插入图片描述

提交oozie任务

root@master:/opt/module/oozie-4.0.0-cdh5.3.6# bin/oozie job -oozie http://master:11000/oozie -config oozie-apps/map-reduce/job.properties -run
在这里插入图片描述
oozie运行截图:
在这里插入图片描述
HDFS截图:
在这里插入图片描述
查看结果:
在这里插入图片描述

### 配置和使用 Oozie 调度 Spark Jar 文件的任务 #### 1. 环境准备 为了成功运行 Oozie 调度的 Spark 任务,需要确保系统具备必要的软件环境。这包括 Java 开发工具包 (JDK),Hadoop 集群以及 Oozie 服务[^3]。 - **JDK**: 确认已安装最新版本的 JDK。 - **Hadoop**: 下载并部署适合操作系统的 Hadoop 版本。 - **Oozie**: 添加 Oozie 客户端依赖项至项目中,并通过命令 `./bin/oozie-daemon.sh start` 启动 Oozie 服务器。 #### 2. 准备资源文件 将所有必需的资源集中放置在一个文件夹下以便于管理。这些资源通常包括 JAR 包、配置属性文件 (`job.properties`) 和工作流定义文件 (`workflow.xml`) [^2]。 #### 3. 编辑 workflow.xml 文件 此 XML 文件描述了作业执行的具体逻辑。对于 Spark 应用程序来说,它应指定主类路径以及其他必要参数: ```xml <workflow-app xmlns="uri:oozie:workflow:0.5" name="spark-job-wf"> <start to="spark-node"/> <action name="spark-node"> <spark xmlns="uri:oozie:spark-action:0.1"> <job-tracker>${jobTracker}</job-tracke> <name-node>${nameNode}</name-node> <configuration> <property> <name>mapred.job.queue.name</name> <value>${queueName}</value> </property> </configuration> <master>yarn-cluster</master> <mode>cluster</mode> <name>SparkExample</name> <class>org.apache.oozie.example.SparkFileCopy</class> <jar>/path/to/jar/oozie-examples.jar</jar> <arg>${input}</arg> <arg>${output}</arg> </spark> <ok to="end"/> <error to="fail"/> </action> <kill name="fail"> <message>Job failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> </kill> <end name="end"/> </workflow-app> ``` 上述代码片段展示了如何设置一个基本的 Spark 动作节点,指定了 jar 的位置及其主要入口点等细节[^1]。 #### 4. job.properties 文件调整 该文件用于存储全局变量替换值,简化不同环境中相同脚本的应用过程。例如: ``` nameNode=hdfs://localhost:8020 jobTracker=localhost:8032 queueName=default examplesRoot=examples oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/spark input=/tmp/input-data/ output=/tmp/output-data/ ``` 以上内容设置了 Name Node 地址、Job Tracker URL 及其他一些常用参数[^4]。 #### 5. 提交任务Oozie 并监控进度 完成前几步之后,可以利用 CLI 工具向 Oozie 发送请求来触发实际计算流程;同时也可以借助 Web UI 查看当前状态更新情况。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值