MapReduce Wordflow 怎么使用

原创
小哥 3年前 (2022-10-20) 阅读数 44 #大杂烩

一、案件运行.案件运行.案件运行MapReduce Wordflow

1、准备examples

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# pwd /opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# tar zxf oozie-examples.tar.gz //默认情况下存在此存档文件默认存在此压缩文件默认情况下存在此存档文件

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# cd examples/

[root@hadoop-senior examples]# ls apps input-data src

2、将examples目录上载到目录上载到目录上载到hdfs

上传

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# /opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6/bin/hdfs dfs -put examples examples

查看

[root@hadoop-senior hadoop-2.5.0-cdh5.3.6]# bin/hdfs dfs -ls /user/root |grep examples drwxr-xr-x - root supergroup 0 2019-05-10 14:01 /user/root/examples

3,修改配置,修改配置

先启动yarn、historyserver

[root@hadoop-senior hadoop-2.5.0-cdh5.3.6]# sbin/yarn-daemon.sh start resourcemanager

[root@hadoop-senior hadoop-2.5.0-cdh5.3.6]# sbin/yarn-daemon.sh start nodemanager

[root@hadoop-senior hadoop-2.5.0-cdh5.3.6]# sbin/mr-jobhistory-daemon.sh start historyserver

看一下hdfs上examples目录结构中的目录结构

[root@hadoop-senior hadoop-2.5.0-cdh5.3.6]# bin/hdfs dfs -ls /user/root/examples/apps/map-reduce Found 5 items -rw-r--r-- 1 root supergroup 1028 2019-05-10 14:01 /user/root/examples/apps/map-reduce/job-with-config-class.properties -rw-r--r-- 1 root supergroup 1012 2019-05-10 14:01 /user/root/examples/apps/map-reduce/job.properties drwxr-xr-x - root supergroup 0 2019-05-10 14:01 /user/root/examples/apps/map-reduce/lib -rw-r--r-- 1 root supergroup 2274 2019-05-10 14:01 /user/root/examples/apps/map-reduce/workflow-with-config-class.xml -rw-r--r-- 1 root supergroup 2559 2019-05-10 14:01 /user/root/examples/apps/map-reduce/workflow.xml

说明:workflow.xml文件必须在文件必须在的文件中hdfs上; job.properties文件放在本地也可以,文件放在本地也可以,文件也可以放在本地

修改 job.properties

nameNode=hdfs://hadoop-senior.ibeifeng.com:8020 jobTracker=hadoop-senior.ibeifeng.com:8032 queueName=default examplesRoot=examples

oozie.coord.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/map-reduce/workflow.xml

outputDir=map-reduce

更新一下hdfs文件的内容在不更新的情况下应该没有问题

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# /opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6/bin/hdfs dfs -rm examples/apps/map-reduce/job.properties

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# /opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6/bin/hdfs dfs -put examples/apps/map-reduce/job.properties examples/apps/map-reduce/

4、

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# bin/oozie help

运行一个MapReduce job

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# bin/oozie job -oozie http://localhost:11000/oozie -config examples/apps/map-reduce/job.properties -run job: 0000000-190510134749297-oozie-root-W

[root@hadoop-senior hadoop-2.5.0-cdh5.3.6]# bin/hdfs dfs -ls /user/root/examples/output-data/map-reduce Found 2 items -rw-r--r-- 1 root supergroup 0 2019-05-10 16:27 /user/root/examples/output-data/map-reduce/_SUCCESS -rw-r--r-- 1 root supergroup 1547 2019-05-10 16:27 /user/root/examples/output-data/map-reduce/part-00000

oozie它实际上是一个它实际上是一个它是一个MapReduce,可以在yarn的web页面,如页面所示,您可在oozie这也可以在的页面上看到,也可以在

使用命令行查看命令的结果

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# bin/oozie job -oozie http://localhost:11000/oozie -info 0000000-190510134749297-oozie-root-W

二、定制二、定制Workflow

1、关于workflow

工作流引擎工作流引擎Oozie(大象主人)管理(大象主人)管理(大象主人)Hadoop任务(支持)任务(支持)任务(支持)MapReduce、Spark、Pig、Hive),将这些任务放入),将这些任务放入a),将这些任务放入DAG(有向无环图)串联连接。

Oozie任务流包括。任务流包括。任务流包括。任务流包括。coordinator、workflow;workflow描述任务执行顺序描述任务执行顺序描述任务执行顺序DAG,而coordinator用于触发定时任务,相当于workflow的定时管理器,其触发条件包括两类。
1.  数据文件生成数据文件生成数据文件创建
2.  时间条件

workflow定义语言是基于定义语言的,是基于定义语言的XMLS,它被称为s,它被称为哪个被称为hPDL(Hadoop过程定义语言过程定义语言)。

workflow节点: 控制流节点(控制流节点(控制流节点(Control Flow Nodes) 操作节点(操作节点(Action Nodes)

其中,控制流节点定义流程的开始和结束(start、end),以及控制进程的执行路径(Execution Path),如decision、fork、join等; 动作节点包括动作节点和动作节点,动作节点包括Hadoop任务、SSH、HTTP、eMail和Oozie子进程等子进程等

节点名称和转换必须符合以下模式=[a-zA-Z][-_a-zA-Z0-0]*=,最多20个字符。

start—>action—(ok)-->end

start—>action—(error)-->end

2、Workflow Action Nodes

Action Computation/Processing Is Always Remote

Actions Are Asynchronous

Actions Have 2 Transitions, ok and error

Action Recovery

三、MapReduce action

1、workflow

Oozie中WorkFlow包括job.properties、workflow.xml 、lib 目录(从属关系)目录(从属关系)目录(从属关系)jar(套餐)由三部分组成。(包装)三个部分。(包装)三个组成部分。 job.properties配置文件包含配置文件包括nameNode、jobTracker、queueName、oozieAppsRoot、oozieDataRoot、oozie.wf.application.path、inputDir、outputDir, 关键是要指向所指向的关键点workflow.xml文件位于文件位于文件位于文件所在的文件中文件中文件中HDFS位置。

############## job.properties

关键点:指向关键点:指向关键点:指向关键点:指向workflow.xml文件位于文件位于文件位于文件所在的文件中文件中文件中HDFS位置

workflow.xml (该文件需要存储在(该文件需要存储在)中(该文件需要存储在HDFS上) 包含几个点。包括几个点。包含几个点。其中包括几个要点。 start action MapReduce、Hive、Sqoop、Shell ok error kill *end

lib 目录 (该目录需要存储在(该目录需要存储在(该目录需要存储在HDFS上)

依赖jar包

2、MapReduce action

可以将map-reduce操作配置为在操作配置为开始时开始操作配置为在以下情况下开始map reduce在作业之前执行文件系统清理和目录创建。MapReduce输入目录不能存在。输入目录的不能存在。输入目录不能存在。输入目录不能存在。

工作流作业将等待工作流作业将等待工作流作业将等待Hadoop map/reduce作业完成,然后继续工作流执行路径中的下一个操作。

Hadoop作业计数器和作业退出状态(=FAILED=、kill或succeed)必须在Hadoop可用于作业结束时的工作流作业。

map-reduce必须配置所有必要的操作操作必须配置所有必要的操作Hadoop JobConf属性以运行要运行的属性属性以运行要运行的属性Hadoop map/reduce作业。

四、新API中MapReduce Action

1,准备目录,准备目录,准备目录

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# mkdir -p oozie-apps/mr-wordcount-wf/lib

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# ls oozie-apps/mr-wordcount-wf/ job.properties lib workflow.xml //job.properties workflow.xml这两个文件可从其他位置访问这两个文件可从其他位置访问copy过来复习

2、job.properties

nameNode=hdfs://hadoop-senior.ibeifeng.com:8020 jobTracker=hadoop-senior.ibeifeng.com:8032 queueName=default oozieAppsRoot=user/root/oozie-apps oozieDataRoot=user/root/oozie/datas

oozie.wf.application.path=${nameNode}/${oozieAppsRoot}/mr-wordcount-wf/workflow.xml

inputDir=mr-wordcount-wf/input outputDir=mr-wordcount-wf/output

3、workflow.xml

${jobTracker} ${nameNode} mapred.mapper.new-api true mapred.reducer.new-api true mapreduce.job.queuename ${queueName} mapreduce.job.map.class com.ibeifeng.hadoop.senior.mapreduce.WordCount$WordCountMapper mapreduce.job.reduce.class com.ibeifeng.hadoop.senior.mapreduce.WordCount$WordCountReducer mapreduce.map.output.key.class org.apache.hadoop.io.Text mapreduce.map.output.value.class org.apache.hadoop.io.IntWritable mapreduce.job.output.key.class org.apache.hadoop.io.Text mapreduce.job.output.value.class org.apache.hadoop.io.IntWritable mapreduce.input.fileinputformat.inputdir ${nameNode}/${oozieDataRoot}/${inputDir} mapreduce.output.fileoutputformat.outputdir ${nameNode}/${oozieDataRoot}/${outputDir} Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]

4、创建hdfs目录和数据,并运行

[root@hadoop-senior hadoop-2.5.0-cdh5.3.6]# bin/hdfs dfs -mkdir -p /user/root/oozie/datas/mr-wordcount-wf/input [root@hadoop-senior hadoop-2.5.0-cdh5.3.6]# bin/hdfs dfs -put /opt/datas/wc.input /user/root/oozie/datas/mr-wordcount-wf/input

把oozie-apps目录上载到目录上载到目录上载到hdfs上

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# /opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6/bin/hdfs dfs -put oozie-apps/ oozie-apps

执行oozie job

[root@hadoop-senior oozie-4.0.0-cdh5.3.6]# export OOZIE_URL=http://hadoop-senior.ibeifeng.com:11000/oozie/ [root@hadoop-senior oozie-4.0.0-cdh5.3.6]# bin/oozie job -config oozie-apps/mr-wordcount-wf/job.properties -run

此时,您可以将以下内容添加到此时,您可以将以下内容添加到oozie 和yarn的web上看到job

运行成功,检查结果运行成功,查看结果运行成功,检查结果

[root@hadoop-senior hadoop-2.5.0-cdh5.3.6]# bin/hdfs dfs -text /user/root/oozie/datas/mr-wordcount-wf/output/part-r-00000
hadoop    4
hdfs    1
hive    1
hue    1
mapreduce    1

五、workflow编程要点

如何定义如何定义如何定义WorkFlow: job.properties 关键点:指向关键点:指向关键点:指向关键点:指向workflow.xml文件位于文件位于文件位于文件所在的文件中文件中文件中HDFS位置 workflow.xml 定义文件 XML文件 包含几点 start action MapReduce、Hive、Sqoop、Shelll ok fail kil1 end

*1ib目录
    依赖的jar包

workflow.xml编写: 过程控制节点过程控制节点 Action节点

MapReduce Action: 如何使用ooize调度MapReduce程序 关键点: 将以前Java MapReduce程序的[程序[程序]中的程序Driver】部分 I configuration

使用新API的配置

mapred.mapper.new-api true mapred.reducer.new-api true

转载于:https://www.cnblogs.com/weiyiming007/p/10849406.html

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除