精华内容
下载资源
问答
  • oozie使用整理

    2018-09-21 11:06:02
    此文档主要对oozie使用方法,基本内容做了一次介绍。
  • oozie使用

    2018-05-08 14:31:54
    oozie job -oozie http://master:11000/oozie -config /opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.2.p0.18/share/doc/oozie-4.1.0+cdh5.7.2+282/examples/apps/*/job.properties -run 1.所有流程做了一个统一的例子 ...
    oozie  job  -oozie  http://master:11000/oozie  -config  /opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.2.p0.18/share/doc/oozie-4.1.0+cdh5.7.2+282/examples/apps/*/job.properties  -run
    1.所有流程做了一个统一的例子  
    2.*:只需替换*文件夹路径
    3.每次修改job.properties文件
    4.配置文件在集群中的路径:/opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.2.p0.18/share/doc/oozie-4.1.0+cdh5.7.2+282/examples/apps/map-reduce/job.properties
    
    //杀死一个oozie进程
    
    
    
    1.map-reduce:
    oozie  job  -oozie  http://master:11000/oozie  -config  /opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.2.p0.18/share/doc/oozie-4.1.0+cdh5.7.2+282/examples/apps/map-reduce/job.properties  -run
    2.sqoop
    oozie  job  -oozie  http://master:11000/oozie  -config  /opt/cloudera/parcels/CDH-5.7.2-1.cdh5.7.2.p0.18/share/doc/oozie-4.1.0+cdh5.7.2+282/examples/apps/sqoop/job.properties  -run
    
    
    
    
    oozie调度sqoop导入数据到oracle---->最近在使用sqooporacle中的数据导入到hbase中, 表中的数据每个小时导入一次,使用oozie定时促发。 
    
    1.编辑coordinator.xml 
    <coordinator-app name="cfg_check_formula-coord" frequency="${coord:hours(1)}" start="${start}" end="${end}" timezone="UTC"  
                     xmlns="uri:oozie:coordinator:0.2">  
        <controls>  
            <concurrency>1</concurrency>  
        </controls>  
      
        <action>  
            <workflow>  
                <app-path>${nameNode}/user/${coord:user()}/${tescommRoot}/apps/sqoop/cfg_check_formula</app-path>  
            </workflow>  
        </action>  
    </coordinator-app>
    2.编辑workflow.xml
    <workflow-app xmlns="uri:oozie:workflow:0.2" name="sqoop-cfg_check_formula-wf">  
        <start to="sqoop-node"/>  
      
        <action name="sqoop-node">  
            <sqoop xmlns="uri:oozie:sqoop-action:0.2">  
                <job-tracker>${jobTracker}</job-tracker>  
                <name-node>${nameNode}</name-node>  
      <!--      <prepare>  
                    <delete path="${nameNode}/user/${wf:user()}/${examplesRoot}/output-data/sqoop"/>  
                    <mkdir path="${nameNode}/user/${wf:user()}/${examplesRoot}/output-data"/>  
                </prepare>  
      -->  
                <configuration>  
                    <property>  
                        <name>mapred.job.queue.name</name>  
                        <value>${queueName}</value>  
                    </property> 
    //重点配置sqoop导入数据 
                </configuration>  
                <arg>import</arg>  
                <arg>--connect</arg>  
                <arg>jdbc:oracle:thin:@127.0.0.1:1523:TEST</arg>  
                <arg>--username</arg>  
                <arg>ora</arg>  
                <arg>--password</arg>  
                <arg>111</arg>  
                <arg>--m</arg>  
                <arg>1</arg>  
                <arg>--query</arg>
    //表明需指明别名             
                <arg>SELECT ROWID, a.* FROM cfg_check_formula a WHERE $CONDITIONS</arg>  
                <arg>--map-column-java</arg>  
                <arg>ROWID=String</arg>  
                <arg>--hbase-table</arg>  
                <arg>cfg_check_formula</arg>  
                <arg>--hbase-row-key</arg>  
                <arg>ROWID</arg>  
                <arg>--column-family</arg>  
                <arg>f_cfg_check_formula</arg> 
                 
            </sqoop>  
            <ok to="end"/>  
            <error to="fail"/>  
        </action>  
      
        <kill name="fail">  
            <message>Sqoop import cfg_check_formula failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>  
        </kill>  
        <end name="end"/>  
    </workflow-app>  
    3.编辑job.properties
    nameNode=hdfs://master:8020  
    jobTracker=master:8032  
    queueName=default  
    testRoot=test  
    oozie.use.system.libpath=true  
    oozie.coord.application.path=${nameNode}/user/${user.name}/${testRoot}/apps/sqoop/cfg_check_formula  
    #start=2013-08-29T10:00Z  
    #end=2013-08-29T12:00Z  
    ##注意时间格式
    start=2013-09-04T11:00+0800  
    end=2013-09-04T12:00+0800  
    4.上述配置完后,在workflow目录下创建lib目录,把sqoop lib下的jar拷贝至这个目录下。这样我们就可以通过oozie定时启动这个导入任务
    
    一、客户端命令
    
    1.提交作业,作业进入PREP状态 
    oozie job -oozie http://localhost:11000/oozie -config job.properties -submit   job: 14-20090525161321-oozie-joe
    2.执行已提交的作业
    
    oozie job -oozie  http://localhost:11000/oozie -start 14-20090525161321-oozie-joe       
    
    3.直接运行作业       
    oozie job -oozie http://localhost:11000/oozie -config job.properties -run       
    
    4.挂起作业,挂起前状态(RUNNING , RUNNIINGWITHERROR or PREP状态)      
    workflow job will be in SUSPENDED status.       
    
    5.杀死作业       
    oozie job -oozie http://localhost:11000/oozie -kill 14-20090525161321-oozie-joe      
    
    6.改变作业参数,不能修改killed状态的作业       
    oozie job -oozie http://localhost:11000/oozie -change 14-20090525161321-oozie-joe -value endtime=2011-12-01T05:00Z;concurrency=100;2011-10-01T05:00Z      
    
    7.重新运行作业       
    oozie job -oozie http://localhost:11000/oozie -config job.properties -rerun 14-20090525161321-oozie-joe 000000-130817230824019-oozie-ceny-W       
    Rerunning a Coordinator Action or Multiple Actions        
    oozie job -rerun <coord_Job_id> [-nocleanup] [-refresh] [-action 1, 3-4, 7-40] [-date 2009-01-01T01:00Z::2009-05-31T23:59Z, 2009-11-10T01:00Z, 2009-12-31T22:00Z] 
    
     (-action or -date is required to rerun.) 
    Rerunning a Bundle Job        
    oozie job -rerun <bundle_Job_id> [-nocleanup] [-refresh] [-coordinator c1, c3, c4] [-date 2009-01-01T01:00Z::2009-05-31T23:59Z, 2009-11-10T01:00Z, 2009-12-31T22:00Z]   
    
    (-coordinator or -date is required to rerun.if neither -coordinator nor -date is given, the exception will be thrown.)
    
    8.检查作业状态       
    oozie job -oozie http://localhost:11000/oozie -info 14-20090525161321-oozie-joe
    
    oozie job -oozie http://localhost:11000/oozie -info 0000001-111219170928042-oozie-para-W@mr-node -verbose     
    
    9.查看日志       
    oozie job -oozie http://localhost:11000/oozie -log 14-20090525161321-oozie-joe      
    oozie job -log <coord_job_id> [-action 1, 3-4, 7-40] (-action is optional.)
    
    10.检查xml文件是否合规       
    oozie validate myApp/workflow.xml
    
    11.提交pig作业       
    oozie pig -oozie http://localhost:11000/oozie -file pigScriptFile -config job.properties -X -param_file params
    
    12.提交MR作业       
    oozie mapreduce -oozie http://localhost:11000/oozie -config job.properties
    展开全文
  • 文章目录案例一:Oozie调度shell脚本案例二:Oozie逻辑调度执行多个Job案例三:Oozie...目标:使用Oozie调度Shell脚本 分步实现: 1)解压官方案例模板 [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ tar -zxvf ooz...

    案例一:Oozie调度shell脚本

    目标:使用Oozie调度Shell脚本

    分步实现:

    1)解压官方案例模板

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ tar -zxvf oozie-examples.tar.gz
    

    2)创建工作目录

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ mkdir oozie-apps/
    

    3)拷贝任务模板到oozie-apps/目录

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ cp -r examples/apps/shell/ oozie-apps
    

    4)编写脚本p1.sh

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ vi oozie-apps/shell/p1.sh
    

    内容如下:

    #!/bin/bash
    /sbin/ifconfig > /opt/module/p1.log
    

    5)修改job.properties和workflow.xml文件

    job.properties

    #HDFS地址
    nameNode=hdfs://hadoop102:8020
    #ResourceManager地址
    jobTracker=hadoop103:8032
    #队列名称
    queueName=default
    examplesRoot=oozie-apps
    oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shell
    EXEC=p1.sh
    

    workflow.xml

    <workflow-app xmlns="uri:oozie:workflow:0.4" name="shell-wf">
    <start to="shell-node"/>
    <action name="shell-node">
        <shell xmlns="uri:oozie:shell-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
            <exec>${EXEC}</exec>
            <!-- <argument>my_output=Hello Oozie</argument> -->
            <file>/user/atguigu/oozie-apps/shell/${EXEC}#${EXEC}</file>
    
            <capture-output/>
        </shell>
        <ok to="end"/>
        <error to="fail"/>
    </action>
    <decision name="check-output">
        <switch>
            <case to="end">
                ${wf:actionData('shell-node')['my_output'] eq 'Hello Oozie'}
            </case>
            <default to="fail-output"/>
        </switch>
    </decision>
    <kill name="fail">
        <message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <kill name="fail-output">
        <message>Incorrect output, expected [Hello Oozie] but was [${wf:actionData('shell-node')['my_output']}]</message>
    </kill>
    <end name="end"/>
    </workflow-app>
    

    6)上传任务配置

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ /opt/module/cdh/hadoop-2.5.0-cdh5.3.6/bin/hadoop fs -put oozie-apps/ /user/atguigu
    

    7)执行任务

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozie job -oozie http://hadoop102:11000/oozie -config oozie-apps/shell/job.properties -run
    

    8)杀死某个任务

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozie job -oozie http://hadoop102:11000/oozie -kill 0000004-170425105153692-oozie-z-W
    

    案例二:Oozie逻辑调度执行多个Job

    目标:使用Oozie执行多个Job调度

    分步执行:

    1)解压官方案例模板

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ tar -zxf oozie-examples.tar.gz
    

    2)编写脚本

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ vi oozie-apps/shell/p2.sh
    

    内容如下:

    #!/bin/bash
    /bin/date > /opt/module/p2.log
    

    3)修改job.properties和workflow.xml文件

    job.properties

    nameNode=hdfs://hadoop102:8020
    jobTracker=hadoop103:8032
    queueName=default
    examplesRoot=oozie-apps
    
    oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shell
    EXEC1=p1.sh
    EXEC2=p2.sh
    

    workflow.xml

    <workflow-app xmlns="uri:oozie:workflow:0.4" name="shell-wf">
        <start to="p1-shell-node"/>
        <action name="p1-shell-node">
            <shell xmlns="uri:oozie:shell-action:0.2">
                <job-tracker>${jobTracker}</job-tracker>
                <name-node>${nameNode}</name-node>
                <configuration>
                    <property>
                        <name>mapred.job.queue.name</name>
                        <value>${queueName}</value>
                    </property>
                </configuration>
                <exec>${EXEC1}</exec>
                <file>/user/atguigu/oozie-apps/shell/${EXEC1}#${EXEC1}</file>
                <!-- <argument>my_output=Hello Oozie</argument>-->
                <capture-output/>
            </shell>
            <ok to="p2-shell-node"/>
            <error to="fail"/>
        </action>
    
        <action name="p2-shell-node">
            <shell xmlns="uri:oozie:shell-action:0.2">
                <job-tracker>${jobTracker}</job-tracker>
                <name-node>${nameNode}</name-node>
                <configuration>
                    <property>
                        <name>mapred.job.queue.name</name>
                        <value>${queueName}</value>
                    </property>
                </configuration>
                <exec>${EXEC2}</exec>
                <file>/user/admin/oozie-apps/shell/${EXEC2}#${EXEC2}</file>
                <!-- <argument>my_output=Hello Oozie</argument>-->
                <capture-output/>
            </shell>
            <ok to="end"/>
            <error to="fail"/>
        </action>
        <decision name="check-output">
            <switch>
                <case to="end">
                    ${wf:actionData('shell-node')['my_output'] eq 'Hello Oozie'}
                </case>
                <default to="fail-output"/>
            </switch>
        </decision>
        <kill name="fail">
            <message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
        </kill>
        <kill name="fail-output">
            <message>Incorrect output, expected [Hello Oozie] but was [${wf:actionData('shell-node')['my_output']}]</message>
        </kill>
        <end name="end"/>
    </workflow-app>
    

    3)上传任务配置

    $ bin/hadoop fs -rmr /user/atguigu/oozie-apps/
    $ bin/hadoop fs -put oozie-apps/map-reduce /user/atguigu/oozie-apps
    

    4)执行任务

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozie job -oozie http://hadoop102:11000/oozie -config oozie-apps/shell/job.properties -run
    

    案例三:Oozie调度MapReduce任务

    目标:使用Oozie调度MapReduce任务

    分步执行:

    1)找到一个可以运行的mapreduce任务的jar包(可以用官方的,也可以是自己写的)
    2)拷贝官方模板到oozie-apps

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ cp -r /opt/module/cdh/ oozie-4.0.0-cdh5.3.6/examples/apps/map-reduce/ oozie-apps/
    

    1)测试一下wordcount在yarn中的运行

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ /opt/module/cdh/hadoop-2.5.0-cdh5.3.6/bin/yarn jar /opt/module/cdh/hadoop-2.5.0-cdh5.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar wordcount /input/ /output/
    

    2)配置map-reduce任务的job.properties以及workflow.xml

    job.properties

    nameNode=hdfs://hadoop102:8020
    jobTracker=hadoop103:8032
    queueName=default
    examplesRoot=oozie-apps
    #hdfs://hadoop102:8020/user/admin/oozie-apps/map-reduce/workflow.xml
    oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/map-reduce/workflow.xml
    outputDir=map-reduce
    

    workflow.xml

    <workflow-app xmlns="uri:oozie:workflow:0.2" name="map-reduce-wf">
        <start to="mr-node"/>
        <action name="mr-node">
            <map-reduce>
                <job-tracker>${jobTracker}</job-tracker>
                <name-node>${nameNode}</name-node>
                <prepare>
                    <delete path="${nameNode}/output/"/>
                </prepare>
                <configuration>
                    <property>
                        <name>mapred.job.queue.name</name>
                        <value>${queueName}</value>
                    </property>
                    <!-- 配置调度MR任务时,使用新的API -->
                    <property>
                        <name>mapred.mapper.new-api</name>
                        <value>true</value>
                    </property>
    
                    <property>
                        <name>mapred.reducer.new-api</name>
                        <value>true</value>
                    </property>
    
                    <!-- 指定Job Key输出类型 -->
                    <property>
                        <name>mapreduce.job.output.key.class</name>
                        <value>org.apache.hadoop.io.Text</value>
                    </property>
    
                    <!-- 指定Job Value输出类型 -->
                    <property>
                        <name>mapreduce.job.output.value.class</name>
                        <value>org.apache.hadoop.io.IntWritable</value>
                    </property>
    
                    <!-- 指定输入路径 -->
                    <property>
                        <name>mapred.input.dir</name>
                        <value>/input/</value>
                    </property>
    
                    <!-- 指定输出路径 -->
                    <property>
                        <name>mapred.output.dir</name>
                        <value>/output/</value>
                    </property>
    
                    <!-- 指定Map类 -->
                    <property>
                        <name>mapreduce.job.map.class</name>
                        <value>org.apache.hadoop.examples.WordCount$TokenizerMapper</value>
                    </property>
    
                    <!-- 指定Reduce类 -->
                    <property>
                        <name>mapreduce.job.reduce.class</name>
                        <value>org.apache.hadoop.examples.WordCount$IntSumReducer</value>
                    </property>
    
                    <property>
                        <name>mapred.map.tasks</name>
                        <value>1</value>
                    </property>
                </configuration>
            </map-reduce>
            <ok to="end"/>
            <error to="fail"/>
        </action>
        <kill name="fail">
            <message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
        </kill>
        <end name="end"/>
    </workflow-app>
    

    5)拷贝待执行的jar包到map-reduce的lib目录下

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ cp -a  /opt /module/cdh/hadoop-2.5.0-cdh5.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar oozie-apps/map-reduce/lib
    

    6)上传配置好的app文件夹到HDFS

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ /opt/module/cdh/hadoop-2.5.0-cdh5.3.6/bin/hdfs dfs -put oozie-apps/map-reduce/ /user/admin/oozie-apps
    

    7)执行任务

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozie job -oozie http://hadoop102:11000/oozie -config oozie-apps/map-reduce/job.properties -run
    

    案例四:Oozie定时任务/循环任务

    目标:Coordinator周期性调度任务

    分步实现:

    1)配置Linux时区以及时间服务器
    2)检查系统当前时区:

    # date -R
    

    注意:如果显示的时区不是+0800,删除localtime文件夹后,再关联一个正确时区的链接过去,命令如下:

    # rm -rf /etc/localtime
    # ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    

    同步时间:

    # ntpdate pool.ntp.org
    

    修改NTP配置文件:

    # vi /etc/ntp.conf
    去掉下面这行前面的# ,并把网段修改成自己的网段:
    restrict 192.168.122.0 mask 255.255.255.0 nomodify notrap
    注释掉以下几行:
    #server 0.centos.pool.ntp.org
    #server 1.centos.pool.ntp.org
    #server 2.centos.pool.ntp.org
    把下面两行前面的#号去掉,如果没有这两行内容,需要手动添加
    server  127.127.1.0    # local clock
    fudge  127.127.1.0 stratum 10
    

    重启NTP服务:

    # systemctl start ntpd.service,
    注意,如果是centOS7以下的版本,使用命令:service ntpd start
    # systemctl enable ntpd.service,
    注意,如果是centOS7以下的版本,使用命令:chkconfig ntpd on
    

    集群其他节点去同步这台时间服务器时间:

    首先需要关闭这两台计算机的ntp服务

    # systemctl stop ntpd.service,
    

    centOS7以下,则:service ntpd stop

    # systemctl disable ntpd.service
    

    centOS7以下,则:chkconfig ntpd off

    # systemctl status ntpd,查看ntp服务状态
    # pgrep ntpd,查看ntp服务进程id
    

    同步第一台服务器linux01的时间:

    # ntpdate hadoop102
    

    使用root用户制定计划任务,周期性同步时间:

    # crontab -e
    */10 * * * * /usr/sbin/ntpdate hadoop102
    

    重启定时任务:

    # systemctl restart crond.service,
    centOS7以下使用:service crond restart, 
    

    其他台机器的配置同理。

    3)配置oozie-site.xml文件

    属性:oozie.processing.timezone
    属性值:GMT+0800
    解释:修改时区为东八区区时
    

    注:该属性去oozie-default.xml中找到即可

    4)修改js框架中的关于时间设置的代码

    $ vi /opt/module/cdh/oozie-4.0.0-cdh5.3.6/oozie-server/webapps/oozie/oozie-console.js
    修改如下:
    function getTimeZone() {
        Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
        return Ext.state.Manager.get("TimezoneId","GMT+0800");
    }
    

    5)重启oozie服务,并重启浏览器(一定要注意清除缓存)

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozied.sh stop
    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozied.sh start
    

    6)拷贝官方模板配置定时任务\

    $ cp -r examples/apps/cron/ oozie-apps/
    

    7)修改模板job.properties和coordinator.xml以及workflow.xml
    job.properties

    nameNode=hdfs://hadoop102:8020
    jobTracker=hadoop103:8032
    queueName=default
    examplesRoot=oozie-apps
    
    oozie.coord.application.path=${nameNode}/user/${user.name}/${examplesRoot}/cron
    #start:必须设置为未来时间,否则任务失败
    start=2017-07-29T17:00+0800
    end=2017-07-30T17:00+0800
    workflowAppUri=${nameNode}/user/${user.name}/${examplesRoot}/cron
    
    EXEC3=p3.sh
    

    oordinator.xml

    <coordinator-app name="cron-coord" frequency="${coord:minutes(5)}" start="${start}" end="${end}" timezone="GMT+0800" xmlns="uri:oozie:coordinator:0.2">
    <action>
    	<workflow>
    	    <app-path>${workflowAppUri}</app-path>
    	    <configuration>
    	        <property>
    	            <name>jobTracker</name>
    	            <value>${jobTracker}</value>
    	        </property>
    	        <property>
    	            <name>nameNode</name>
    	            <value>${nameNode}</value>
    	        </property>
    	        <property>
    	            <name>queueName</name>
    	            <value>${queueName}</value>
    	        </property>
    	    </configuration>
    	</workflow>
    </action>
    </coordinator-app>
    

    workflow.xml

    <workflow-app xmlns="uri:oozie:workflow:0.5" name="one-op-wf">
    <start to="p3-shell-node"/>
      <action name="p3-shell-node">
          <shell xmlns="uri:oozie:shell-action:0.2">
              <job-tracker>${jobTracker}</job-tracker>
              <name-node>${nameNode}</name-node>
              <configuration>
                  <property>
                      <name>mapred.job.queue.name</name>
                      <value>${queueName}</value>
                  </property>
              </configuration>
              <exec>${EXEC3}</exec>
              <file>/user/atguigu/oozie-apps/cron/${EXEC3}#${EXEC3}</file>
              <!-- <argument>my_output=Hello Oozie</argument>-->
              <capture-output/>
          </shell>
          <ok to="end"/>
          <error to="fail"/>
      </action>
    <kill name="fail">
        <message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <kill name="fail-output">
        <message>Incorrect output, expected [Hello Oozie] but was [${wf:actionData('shell-node')['my_output']}]</message>
    </kill>
    <end name="end"/>
    </workflow-app>
    

    8)上传配置

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ /opt/module/cdh/hadoop-2.5.0-cdh5.3.6/bin/hdfs dfs -put oozie-apps/cron/ /user/admin/oozie-apps
    

    9)启动任务

    [atguigu@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozie job -oozie http://hadoop102:11000/oozie -config oozie-apps/cron/job.properties -run
    

    注意:Oozie允许的最小执行任务的频率是5分钟

    常见问题总结

    1)Mysql权限配置
    授权所有主机可以使用root用户操作所有数据库和数据表

    mysql> grant all on *.* to root@'%' identified by '000000';
    mysql> flush privileges;
    mysql> exit;
    

    2)workflow.xml配置的时候不要忽略file属性

    3)jps查看进程时,注意有没有bootstrap

    4)关闭oozie
    如果bin/oozied.sh stop无法关闭,则可以使用kill -9 [pid],之后oozie-server/temp/xxx.pid文件一定要删除。

    5)Oozie重新打包时,一定要注意先关闭进程,删除对应文件夹下面的pid文件。(可以参考第4条目)

    6)配置文件一定要生效
    起始标签和结束标签无对应则不生效,配置文件的属性写错了,那么则执行默认的属性。

    7)libext下边的jar存放于某个文件夹中,导致share/lib创建不成功。

    8)调度任务时,找不到指定的脚本,可能是oozie-site.xml里面的Hadoop配置文件没有关联上。

    9)修改Hadoop配置文件,需要重启集群。一定要记得scp到其他节点。

    10)JobHistoryServer必须开启,集群要重启的。

    11)Mysql配置如果没有生效的话,默认使用derby数据库。

    12)在本地修改完成的job配置,必须重新上传到HDFS。

    13)将HDFS中上传的oozie配置文件下载下来查看是否有错误。

    14)Linux用户名和Hadoop的用户名不一致。

    展开全文
  • 文章目录第一步:拷贝hive的案例模板第二步:编辑hive模板第三步:上传工作文件到hdfs第四步:执行oozie...这里使用的是hiveserver2来进行提交任务,需要注意我们要将hiveserver2的服务给启动起来 hive --service hives

    第一步:拷贝hive的案例模板

    cd /export/servers/oozie-4.1.0-cdh5.14.0
    cp -ra examples/apps/hive2/ oozie_works/
    

    第二步:编辑hive模板

    这里使用的是hiveserver2来进行提交任务,需要注意我们要将hiveserver2的服务给启动起来

    hive --service hiveserver2 &
    hive --service metastore  &
    

    这里运行hive报错了,顺便记录一下这个错误。
    在这里插入图片描述解决办法:
    https://blog.csdn.net/qq_35078688/article/details/86137440
    上一篇并没有解决问题所以看下一篇
    https://blog.csdn.net/hhj724/article/details/79094138
    还是没解决,然后重启了一下集群,问题解决了。。。

    修改job.properties

    cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/hive2
    vim job.properties
    
    nameNode=hdfs://hadoop01:8020
    jobTracker=hadoop01:8032
    queueName=default
    jdbcURL=jdbc:hive2://node03:10000/default
    examplesRoot=oozie_works
    
    oozie.use.system.libpath=true
    # 配置我们文件上传到hdfs的保存路径 实际上就是在hdfs 的/user/root/oozie_works/hive2这个路径下
    oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/hive2
    

    修改workflow.xml

    vim 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}/user/${wf:user()}/${examplesRoot}/output-data/hive2"/>
                    <mkdir path="${nameNode}/user/${wf:user()}/${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>
    

    编辑hivesql文件

    vim script.q
    
    DROP TABLE IF EXISTS test;
    CREATE EXTERNAL TABLE default.test (a INT) STORED AS TEXTFILE LOCATION '${INPUT}';
    insert into test values(10);
    insert into test values(20);
    insert into test values(30);
    

    第三步:上传工作文件到hdfs

    cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works
    hdfs dfs -put hive2/ /user/root/oozie_works/
    

    第四步:执行oozie的调度

    cd /export/servers/oozie-4.1.0-cdh5.14.0
    bin/oozie job -oozie http://hadoop01:11000/oozie -config oozie_works/hive2/job.properties  -run
    

    第五步:查看调度结果

    在这里插入图片描述在这里插入图片描述
    成功了!Nice!

    展开全文
  • 文章目录使用oozie调度shell脚本第一步:解压官方提供的调度案例第二步:创建工作目录第三步:拷贝任务模板到工作目录当中去第四步:随意准备一个shell脚本第五步:修改模板下的配置文件第六步:上传调度任务到hdfs...

    使用oozie调度shell脚本

    oozie安装好了之后,需要测试oozie的功能是否完整好使,官方已经给我们带了各种测试案例,我们可以通过官方提供的各种案例来对oozie进行调度

    第一步:解压官方提供的调度案例

    oozie自带了各种案例,我们可以使用oozie自带的各种案例来作为模板,所以我们这里先把官方提供的各种案例给解压出来

    cd /export/servers/oozie-4.1.0-cdh5.14.0
    tar -zxf oozie-examples.tar.gz
    

    在这里插入图片描述

    第二步:创建工作目录

    在任意地方创建一个oozie的工作目录,以后调度任务的配置文件全部放到oozie的工作目录当中去
    我这里直接在oozie的安装目录下面创建工作目录

    cd /export/servers/oozie-4.1.0-cdh5.14.0
    mkdir oozie_works
    

    第三步:拷贝任务模板到工作目录当中去

    任务模板以及工作目录都准备好了之后,我们把shell的任务模板拷贝到我们oozie的工作目录当中去)

    cd /export/servers/oozie-4.1.0-cdh5.14.0
    cp -r examples/apps/shell/ oozie_works/
    

    就是shell文件夹下面的东西全部拷贝到刚才创建的oozie_works目录里去
    在这里插入图片描述

    第四步:随意准备一个shell脚本

    cd /export/servers/oozie-4.1.0-cdh5.14.0
    vim oozie_works/shell/hello.sh
    

    注意:这个脚本一定要是在我们oozie工作路径下的shell路径下的位置

    #!/bin/bash
    echo "hello world" >> /export/servers/hello_oozie.txt
    

    第五步:修改模板下的配置文件

    修改job.properties

    cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/shell
    vim job.properties
    

    (这里jobTracker我的默认是8021,但是它这里是8032我先用它的试试)

    nameNode=hdfs://node01:8020
    jobTracker=node01:8032
    queueName=default
    examplesRoot=oozie_works
    oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shell
    EXEC=hello.sh
    

    修改workflow.xml

    vim workflow.xml
    

    要改动的地方有<exec>${EXEC}</exec>,还有下面的okto那里改成<ok to="end"/>

    <workflow-app xmlns="uri:oozie:workflow:0.4" name="shell-wf">
    <start to="shell-node"/>
    <action name="shell-node">
        <shell xmlns="uri:oozie:shell-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
            <exec>${EXEC}</exec>
            <!-- <argument>my_output=Hello Oozie</argument> -->
            <file>/user/root/oozie_works/shell/${EXEC}#${EXEC}</file>
    
            <capture-output/>
        </shell>
        <ok to="end"/>
        <error to="fail"/>
    </action>
    <decision name="check-output">
        <switch>
            <case to="end">
                ${wf:actionData('shell-node')['my_output'] eq 'Hello Oozie'}
            </case>
            <default to="fail-output"/>
        </switch>
    </decision>
    <kill name="fail">
        <message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <kill name="fail-output">
        <message>Incorrect output, expected [Hello Oozie] but was [${wf:actionData('shell-node')['my_output']}]</message>
    </kill>
    <end name="end"/>
    </workflow-app>
    

    第六步:上传调度任务到hdfs上面去

    注意:上传的hdfs目录为/user/root,因为我们hadoop启动的时候使用的是root用户,如果hadoop启动的是其他用户,那么就上传到
    /user/其他用户

    cd /export/servers/oozie-4.1.0-cdh5.14.0
    hdfs dfs -put oozie_works/ /user/root
    

    第七步:执行调度任务

    (先把oozie开了 bin/oozied.sh start
    通过oozie的命令来执行调度任务

    cd /export/servers/oozie-4.1.0-cdh5.14.0
    bin/oozie job -oozie http://hadoop03:11000/oozie -config oozie_works/shell/job.properties  -run
    

    (我执行的时候报了这个错误)
    在这里插入图片描述

    百度搜找到了如下解决办法:
    https://stackoverflow.com/questions/44839025/oozie-connection-exception-has-occurred-java-net-connectexception-connection
    在这里插入图片描述

    但是我的环境变量配置是完好的,这时候我想到了,我安装oozie是在hadoop01上,但是开的端口是在hadoop03上,会不会是配置安装的位置出了错误?

    最后发现不是,因为我在hadoop01上安装的,所以把hadoop03换成hadoop01就行了。

    从监控界面可以看到任务执行成功了
    在这里插入图片描述

    查看hadoop的19888端口,我们会发现,oozie启动了一个MR的任务去执行shell脚本
    http://hadoop01:19888/jobhistory
    在这里插入图片描述

    可以看到运行成功了!
    在这里插入图片描述
    在这里插入图片描述66666666666666666!

    展开全文
  • Oozie的简单使用

    千次阅读 2019-05-26 16:27:16
    1、Oozie的介绍     Oozie是一个工作流引擎服务器,用于运行Hadoop Map/Reduce和Hive等任务工作流.同时Oozie还是一个Java Web程序,运行在Java Servlet容器中,如Tomcat中。Oozie以action为基本...
  • 首先必须配置Oozie-site.xml中的值,如下oozie.service.JPAService.create.db.schematrueCreates Oozie DB.If set to true, it creates the DB schema if it does not exist. If the DB schema exists is a NOP.If ...
  • Oozie使用总结

    2021-07-08 14:36:54
    在HDFS上新建SQL文件及shell文件 打开Hue 打开文件浏览器新建目录/文件 将SQL脚本贴上去保存 修改文件属性 新建work flow 保存work flow 第一次运行执行报错 需要在shell脚本中加上 !......
  • Oozie使用详解

    2021-09-04 00:10:53
    一、oozie4.3.0调用shell 编写workflow.xml <!--Workflow-DEF-NAME--> <workflow-app xmlns='uri:oozie:workflow:0.3' name='shell-wf'> <!--shell1: node-name --> <start to='shell1' /&...
  • OOZIE使用问题

    2019-04-12 15:08:49
    Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.ShellMain], main() threw exception, Cannot run program "shell.sh" (in directory "/yarn/nm/usercache/admin/appcache/application_15...
  • oozie使用命令

    2021-06-04 14:43:16
    1.提交作业,作业进入PREP...job: 14-20090525161321-oozie-joe 2.执行已提交的作业 oozie job -oozie http://localhost:11000/oozie -start 14-20090525161321-oozie-joe 3.直接运行作业 oozie job -oozie http://loc
  • 我们这里通过oozie调度一个MR的程序的执行,MR的程序可以是自己写的,也可以是hadoop工程自带的,我们这里就选用hadoop工程自带的MR程序来运行wordcount的示例 准备以下数据上传到HDFS的/oozie/input路径 hdfs dfs -...
  • Oozie通过Hadoop的分布式缓冲来上传、打标签、使用。 Shell命令会在任意一个hadoop 计算节点上运行,但是计算节点上默认安装的工具集可能会不一样。不过在所有的计算节点上,通常都装有大部分普通的unix工具。因此...
  • Hue中oozie使用shell脚本执行impala-shell脚本 Hue中oozie使用shell脚本执行impala-shell脚本Hue中oozie使用shell脚本执行impala-shell脚本oozie的介绍oozie执行流介绍oozie系统常量介绍oozie中shell的使用workflow...
  • oozie 使用coord的方式

    2021-07-15 06:02:48
    定时启动作业的方式可以使用oozie的coord来完成,项目工程结构如下,其中swda-wf下的coordinator.xml是定时作业的实现。Paste_Image.png1,coordinator.xml文件其中只能包括workflow action,需要在同级目录中存在...
  • Oozie的workflow上面调用jar包,可以有两种方式,一种是使用shell来调用:${jobtracker_address}${namenode_address}mapred.job.queue.name${mapred_job_queue_name}hadoopjar${mongo_sync_jar_name}...
  • 0 关于oozie 寻找包寻找位置原则:oozie在运行的时候 只会去两个地方寻找自己需要的lib1 回去当前提交任务的workflow所在的hdfs目录下的lib下寻找eg: /user/root/examples/apps/fork-merge的workflow下有 job....
  • 关于oozie使用的一些坑

    千次阅读 2018-10-15 16:59:45
    楼主主要是在hue上面配置oozie任务,在这里记录一下遇到的一些问题 hue用户权限的问题 配置一些hive或者shell脚本的impala任务时,会使用hue登录的用户执行,所以会造成一些权限的问题,hue的用户和linux的用户并...
  • 使用Oozie调度,使用jar的时候,有两种jar包,一种是项目打包,包含依赖的jar包,包比较大,一种是项目打包,不包含依赖的jar包,包比较小。 在使用Oozie调度项目jar包时,发现,调度包含依赖的jar包,报错:java....
  • OOZIE使用Email提醒详解

    千次阅读 2017-04-21 10:55:20
    是的,这就是OOZIE的EMAIL action功能。  【原理】OOZIE并不是自己拥有个邮件服务器,而是得借助远程的邮箱账户来发送邮件。这里我们假设注册了一个test@163.com的邮箱,使用163的smtp服务器(地址是smtp.163.com...
  • oozie使用中的一些小结

    千次阅读 2016-10-12 18:32:06
    关于oozie 寻找包寻找位置原则:     oozie在运行的时候 只会去两个地方寻找自己需要的lib 1 回去当前提交任务的workflow所在的hdfs目录下的lib下寻找 eg: /user/root/examples/apps/fork-merge的...
  • Oozie --oozie使用

    千次阅读 2020-06-02 16:08:12
    oozie使用 KEY 含义 nameNode HDFS地址 jobTracker jobTracker(ResourceManager)地址 queueName Oozie队列(默认填写default...
  • --允许oozie的客户端使用哪个用户来登陆hadoop--&amp;gt; &amp;lt;property&amp;gt; &amp;lt;name&amp;gt;hadoop.proxyuser.hadoop.hosts&amp;lt;/name&amp;gt; &amp;lt;value&...
  • 上一篇文章我们简单介绍了一下Oozie以及怎样安装部署Oozie,本文我们通过几个案例来看一下怎样使用Oozie。关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~ 一、Oozie调度shell脚本 1、创建目录 [root@...
  • oozie使用常见问题

    2018-08-30 20:20:00
    为什么80%的码农都做不了架构师?...[root@vm libext]# chown oozie:oozie -R ext-2.2 再次访问Oozie Web UI,已经正常了。 转载于:https://my.oschina.net/qzhli/blog/1936825

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,313
精华内容 6,525
关键字:

oozie使用