oozie 调度 hive

描述

本文给出oozie调度hive的一些解释和配置demo,其中hive01是该配置的目录,其中job.properties、workflow.xml都放在该目录下,该目录还有一个子目录为script,这个子目录存放的是sql脚本,运行该程序需要用到hive-site.xml

配置文件

  1. 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
    
  2. 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>
    
  3. 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 ',';
    
  4. 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
    
  5. 我们将所编写的配置文件和脚本文件上传到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 databasesshow tables查看该脚本是否成功执行

posted @ 2018-12-07 10:34  shenjie2017  阅读(503)  评论(0编辑  收藏  举报