zoukankan      html  css  js  c++  java
  • 【Hadoop离线基础总结】oozie调度shell脚本


    • 1.解压官方提供的调度案例
      cd /export/servers/oozie-4.1.0-cdh5.14.0
      tar -zxf oozie-examples.tar.gz
      
    • 2.创建工作目录

      在任意地方创建一个oozie的工作目录,以后调度任务的配置文件全部放到oozie的工作目录当中去

      cd /export/servers/oozie-4.1.0-cdh5.14.0
      mkdir oozie_works
      
    • 3.拷贝任务模板到工作目录当中去
      cd /export/servers/oozie-4.1.0-cdh5.14.0
      cp -r examples/apps/shell/ oozie_works/
      
    • 4.随意准备一个shell脚本
      cd /export/servers/oozie-4.1.0-cdh5.14.0
      vim oozie_works/shell/hello.sh
      
      #!/bin/bash
      echo "hello world" >> /export/servers/hello_oozie.txt
      #注意:这个脚本一定要是在oozie工作路径下的shell路径下的位置
      
    • 5.修改模板下的配置文件

      修改job.properties

      cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/shell
      vim job.properties
      
      nameNode=hdfs://node01:8020
      # 在hadoop2当中,jobTracker这种角色已经没有了,只有resourceManager,这里给定resourceManager的IP及端口即可
      jobTracker=node01:8032
      # 任务提交的队列名称,默认或者随便更改都可以
      queueName=default
      # 指定oozie的工作目录
      examplesRoot=oozie_works
      oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shell
      # 保存执行任务的名称
      EXEC=hello.sh
      

      修改workflow.xml
      vim 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/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>
      
    • 6.上传调度任务到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
      
    • 7.执行调度任务

      通过oozie的命令来执行调度任务

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

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

  • 相关阅读:
    机器学习三--分类--邻近取样(Nearest Neighbor)
    机器学习二——分类算法--决策树DecisionTree
    机器学习一--基本概念
    python学习--常用正则表达式整理
    python学习--字符编码问题
    python学习--字符串处理相关方法
    python学习--如何在一个for循环中迭代多个可迭代对象(串行,并行)
    python学习--如何对迭代器进行切片操作
    List对象去重
    List 简单升降序实现
  • 原文地址:https://www.cnblogs.com/zzzsw0412/p/12772459.html
Copyright © 2011-2022 走看看