oozie 调度 hive
描述
本文给出oozie调度hive的一些解释和配置demo,其中hive01
是该配置的目录,其中job.properties、workflow.xml都放在该目录下,该目录还有一个子目录为script,这个子目录存放的是sql脚本,运行该程序需要用到hive-site.xml
配置文件
-
job.properties,该文件在hive01目录下
nameNode=hdfs://node1:8020 jobTracker=node1:8032 queueName=default oozieAppsRoot=user/oozie/examples/apps #oozieDataRoot=user/root/oozie/datas/apps/ oozie.use.system.libpath=true oozie.wf.application.path=${nameNode}/${oozieAppsRoot}/hive01 scriptRoot=${oozie.wf.application.path}/script #outputDir=hive01/output
-
workflow.xml,该文件在hive01目录下
<?xml version="1.0" encoding="UTF-8"?> <workflow-app xmlns="uri:oozie:workflow:0.5" name="wf-hive01"> <start to="hive-node"/> <action name="hive-node"> <hive xmlns="uri:oozie:hive-action:0.5"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <!--执行脚本前需要预处理的事件--> <!-- <prepare> <delete path="${nameNode}/${oozieDataRoot}/${outputDir}"/> </prepare> --> <--hive的配置文件,包括hive服务节点,元数据库地址、用户名、密码、数据库、JDBC驱动等信息--> <job-xml>${nameNode}/user/hive/conf/hive-site.xml</job-xml> <configuration> <property> <name>mapred.job.queue.name</name> <value>${queueName}</value> </property> </configuration> <script>${scriptRoot}/hive01-script.sql</script> <!--如果有输出,则指定输出到这个目录--> <!-- <param>OUTPUT=${nameNode}/${oozieDataRoot}/${outputDir}</param> --> </hive> <ok to="end"/> <error to="fail"/> </action> <kill name="fail"> <message>Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> </kill> <end name="end"/> </workflow-app>
-
hive01-script.sql,该文件在hive01/script目录下
create database if not exists temp; create table if not exists temp.tab(id string,name string) row format delimited fields terminated by ',';
-
hive-site.xml,该文件在CDH集群中每台机器的/etc/hive/conf目录下,原生的hive则在hive目录的conf下,我们需要将这个文件上传到hdfs上供调度使用
hdfs dfs -mkdir -p /user/hive/conf hdfs dfs -put -f /etc/hive/conf/hive-site.xml /user/hive/conf
-
我们将所编写的配置文件和脚本文件上传到hdfs上,即上传hive01目录到hdfs的指定目录,这个目录是我们配置的
oozie.wf.application.path
这个目录,脚本目录是我们存放的scriptRoot
目录,这些目录都可以根据我们自己的喜好自己设置,但是对于多个项目,最好有一定规则去管理这些配置文件和脚本,由于这是一个demo,所以我把脚本文件放在配置文件下hdfs dfs -put -f hive01 /user/oozie/examples/apps
启动oozie
我们上传了oozie配置文件,现在我们需要启动oozie
oozie job -oozie http://node6:11000/oozie/ -config hive01/job.properties -run
我们可以从web(http://node1:11000/oozie/)界面查看这个任务的状态,当提示SUCCESSED时,则表示该任务执行成功,我们可以看查看我们的脚本是否成功执行,我们可以通过进入hive然后利用show databases
和 show tables
查看该脚本是否成功执行