Oozie应用开发步骤
- 业务分析。
- 业务实现。
- 登录Oozie客户端所在节点,新建“dataLoad”目录,作为程序运行目录,后面编写的文件均保存在该目录下。例如“/opt/client/Oozie/oozie-client-*/examples/apps/dataLoad/”。
可以直接复制样例目录中“map-reduce”文件夹内的内容到“dataLoad”文件夹,然后进行编辑。
目录中 “oozie-client-*”涉及的版本号以实际版本号为准。
- 编写流程任务属性文件(job.properties)。
请参见配置Oozie作业运行参数。
- 编写Workflow任务文件“workflow.xml”。
表1 流程Action 编号
步骤
描述
1
定义startaction
2
定义MapReduceaction
3
定义FS action
4
定义end action
5
定义killaction
依赖或新开发的jar包需要放在“dataLoad/lib”目录下。
流程文件样例:
<workflow-app xmlns="uri:oozie:workflow:1.0" name="data_load"> <start to="mr-dataLoad"/> <action name="mr-dataLoad"> <map-reduce> <resource-manager>${resourceManager}</resource-manager> <name-node>${nameNode}</name-node> <prepare> <delete path="${nameNode}/user/${wf:user()}/${dataLoadRoot}/output-data/map-reduce"/> </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/oozie/${dataLoadRoot}/input-data/text</value> </property> <property> <name>mapred.output.dir</name> <value>/user/${wf:user()}/${dataLoadRoot}/output-data/map-reduce</value> </property> </configuration> </map-reduce> <ok to="copyData"/> <error to="fail"/> </action> <action name="copyData"> <fs> <delete path='${nameNode}/user/oozie/${dataLoadRoot}/result'/> <move source='${nameNode}/user/${wf:user()}/${dataLoadRoot}/output-data/map-reduce' target='${nameNode}/user/oozie/${dataLoadRoot}/result'/> <chmod path='${nameNode}/user/oozie/${dataLoadRoot}/result' permissions='-rwxrw-rw-' dir-files='true'></chmod> </fs> <ok to="end"/> <error to="fail"/> </action> <kill name="fail"> <message>This workflow failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> </kill> <end name="end"/> </workflow-app>
- 编写Coordinator任务文件“coordinator.xml”。
完成每天一次的定时数据分析工作,请参见配置Coordinator定时调度作业。
- 登录Oozie客户端所在节点,新建“dataLoad”目录,作为程序运行目录,后面编写的文件均保存在该目录下。例如“/opt/client/Oozie/oozie-client-*/examples/apps/dataLoad/”。
- 上传流程文件。
- 使用或切换到拥有HDFS上传权限的用户,准备用户可参见准备本地应用开发环境。
- 使用该用户进行Kerberos认证。
- 使用HDFS上传命令,将“dataLoad”目录上传到HDFS某个指定目录(developuser用户需要对该目录有读写权限)。
该指定目录需要与之前“job.properties”中定义的“oozie.coord.application.path”属性和“workflowAppUri”属性的值保持一致。
- 执行流程文件。
- 登录客户端节点,使用developuser用户进行Kerberos认证。
cd /opt/client
source bigdata_env
kinit developuser
- 启动流程。
oozie job -oozie https://oozie server hostname:port/oozie -config job.properties文件所在路径 -run
参数列表:
表2 参数列表 参数
含义
job
表示执行的是job任务
-oozie
Oozie服务器地址(任意节点)
-config
“job.properties”文件所在路径
-run
表示启动流程
例如:
oozie job -oozie https://10-1-130-10:21003/oozie -config job.properties -run
- 登录客户端节点,使用developuser用户进行Kerberos认证。