说明
基于 hive2 运行
准备
登录 hadoop1
启动hadoop
/program/bin/hadoop.sh start
启动 mysql
hive 元数据保存在mysql中,需要启动 mysql,执行下面命令:
service start mysql
启动 hive
启动 hive metastore 和 hiveserver2
/program/bin/hiveservices.sh start
创建目录
在 /program/oozie-4.1.0-cdh5.14.0/oozie_apps/ 创建 std2_mr,用于存放相关文件
cd /program/oozie-4.1.0-cdh5.14.0
mkdir oozie_apps
在 oozie_apps 目录下创建 lib文件夹,存放 mr jar包
cd oozie_apps
编写 job.properties
nameNode=hdfs://hadoop1:8020
jobTracker=hadoop1:8032
queueName=default
jdbcURL=jdbc:hive2://hadoop1:10000/default
examplesRoot=oozie_apps
oozie.use.system.libpath=true
# hdfs上的文件路径
oozie.wf.application.path=${nameNode}/${examplesRoot}/hive2
编写 workflow.xml
<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.5" name="hive2-wf">
<start to="hive2-node"/>
<action name="hive2-node">
<hive2 xmlns="uri:oozie:hive2-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${nameNode}/${examplesRoot}/output-data/hive2"/>
<mkdir path="${nameNode}/${examplesRoot}/output-data"/>
</prepare>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<jdbc-url>${jdbcURL}</jdbc-url>
<script>script.q</script>
<param>INPUT=/user/${wf:user()}/${examplesRoot}/input-data/table</param>
<param>OUTPUT=/user/${wf:user()}/${examplesRoot}/output-data/hive2</param>
</hive2>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Hive2 (Beeline) action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
上传到 hdfs
cd /program/oozie-4.1.0-cdh5.14.0/
hadoop fs -put oozie_apps/std2_mr /oozie_apps
重新上传
重新上传需要先删除 hdfs 的相关文件夹
hadoop fs -rm -r /oozie_apps/std2_mr
执行
cd /program/oozie-4.1.0-cdh5.14.0
bin/oozie job -oozie http://hadoop3:11000/oozie -config oozie_apps/std2_mr/job.properties -run
解释:
oozie_apps/std2_mr/job.properties:本机job.properties所在的路径
写绝对路径也可以:/program/oozie-4.1.0-cdh5.14.0/oozie_apps/std2_mr/job.properties