• 需求

    执行shell脚本 → 执行MR程序 → 执行hive程序

  • 1.准备工作目录
    cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works
    mkdir -p sereval-actions
  • 2.准备调度文件
    cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works
    cp hive2/script.q sereval-actions/
    cp shell/hello.sh sereval-actions/
    cp -ra map-reduce/lib sereval-actions/
  • 3.开发调度的配置文件
    cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/sereval-actions
    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/sereval-actions/${EXEC}#${EXEC}</file> <capture-output/>
    </shell>
    <ok to="mr-node"/>
    <error to="mr-node"/>
    </action> <action name="mr-node">
    <map-reduce>
    <job-tracker>${jobTracker}</job-tracker>
    <name-node>${nameNode}</name-node>
    <prepare>
    <delete path="${nameNode}/${outputDir}"/>
    </prepare>
    <configuration>
    <property>
    <name>mapred.job.queue.name</name>
    <value>${queueName}</value>
    </property>
    <!--
    <property>
    <name>mapred.mapper.class</name>
    <value>org.apache.oozie.example.SampleMapper</value>
    </property>
    <property>
    <name>mapred.reducer.class</name>
    <value>org.apache.oozie.example.SampleReducer</value>
    </property>
    <property>
    <name>mapred.map.tasks</name>
    <value>1</value>
    </property>
    <property>
    <name>mapred.input.dir</name>
    <value>/user/${wf:user()}/${examplesRoot}/input-data/text</value>
    </property>
    <property>
    <name>mapred.output.dir</name>
    <value>/user/${wf:user()}/${examplesRoot}/output-data/${outputDir}</value>
    </property>
    --> <!-- 开启使用新的API来进行配置 -->
    <property>
    <name>mapred.mapper.new-api</name>
    <value>true</value>
    </property> <property>
    <name>mapred.reducer.new-api</name>
    <value>true</value>
    </property> <!-- 指定MR的输出key的类型 -->
    <property>
    <name>mapreduce.job.output.key.class</name>
    <value>org.apache.hadoop.io.Text</value>
    </property> <!-- 指定MR的输出的value的类型-->
    <property>
    <name>mapreduce.job.output.value.class</name>
    <value>org.apache.hadoop.io.IntWritable</value>
    </property> <!-- 指定输入路径 -->
    <property>
    <name>mapred.input.dir</name>
    <value>${nameNode}/${inputdir}</value>
    </property> <!-- 指定输出路径 -->
    <property>
    <name>mapred.output.dir</name>
    <value>${nameNode}/${outputDir}</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>
    <!-- 配置map task的个数 -->
    <property>
    <name>mapred.map.tasks</name>
    <value>1</value>
    </property> </configuration>
    </map-reduce>
    <ok to="hive2-node"/>
    <error to="fail"/>
    </action> <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>
    <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>

    开发job.properties配置文件

    cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/sereval-actions
    vim job.properties
    nameNode=hdfs://node01:8020
    jobTracker=node01:8032
    queueName=default
    examplesRoot=oozie_works
    EXEC=hello.sh
    outputDir=/oozie/output
    inputdir=/oozie/input
    jdbcURL=jdbc:hive2://node03:10000/default
    oozie.use.system.libpath=true
    # 配置我们文件上传到hdfs的保存路径 实际上就是在hdfs 的/user/root/oozie_works/sereval-actions这个路径下
    oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/sereval-actions/workflow.xml
  • 4.上传资源文件夹到hdfs对应路径
    cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/
    hdfs dfs -put sereval-actions/ /user/root/oozie_works/
  • 5.执行调度任务
    cd /export/servers/oozie-4.1.0-cdh5.14.0/
    bin/oozie job -oozie http://node03:11000/oozie -config oozie_works/serveral-actions/job.properties -run

【Hadoop离线基础总结】oozie任务串联的更多相关文章

  1. 【Hadoop离线基础总结】oozie的安装部署与使用

    目录 简单介绍 概述 架构 安装部署 1.修改core-site.xml 2.上传oozie的安装包并解压 3.解压hadooplibs到与oozie平行的目录 4.创建libext目录,并拷贝依赖包 ...

  2. 【Hadoop离线基础总结】Hue的简单介绍和安装部署

    目录 Hue的简单介绍 概述 核心功能 安装部署 下载Hue的压缩包并上传到linux解压 编译安装启动 启动Hue进程 hue与其他框架的集成 Hue与Hadoop集成 Hue与Hive集成 Hue ...

  3. 【Hadoop离线基础总结】impala简单介绍及安装部署

    目录 impala的简单介绍 概述 优点 缺点 impala和Hive的关系 impala如何和CDH一起工作 impala的架构及查询计划 impala/hive/spark 对比 impala的安 ...

  4. 【Hadoop离线基础总结】流量日志分析网站整体架构模块开发

    目录 数据仓库设计 维度建模概述 维度建模的三种模式 本项目中数据仓库的设计 ETL开发 创建ODS层数据表 导入ODS层数据 生成ODS层明细宽表 统计分析开发 流量分析 受访分析 访客visit分 ...

  5. 【Hadoop离线基础总结】Sqoop常用命令及参数

    目录 常用命令 常用公用参数 公用参数:数据库连接 公用参数:import 公用参数:export 公用参数:hive 常用命令&参数 从关系表导入--import 导出到关系表--expor ...

  6. 【Hadoop离线基础总结】Hive调优手段

    Hive调优手段 最常用的调优手段 Fetch抓取 MapJoin 分区裁剪 列裁剪 控制map个数以及reduce个数 JVM重用 数据压缩 Fetch的抓取 出现原因 Hive中对某些情况的查询不 ...

  7. 【Hadoop离线基础总结】Hue与oozie集成

    目录 1.停止oozie与hue的进程 2.修改oozie的配置文件 3.修改hue的配置文件 4.启动hue与oozie的进程 5.页面访问hue 1.停止oozie与hue的进程 bin/oozi ...

  8. 【Hadoop离线基础总结】oozie调度MapReduce任务

    目录 1.准备MR执行的数据 2.执行官方测试案例 3.准备我们调度的资源 4.修改配置文件 5.上传调度任务到hdfs对应目录 6.执行调度任务 1.准备MR执行的数据 MR的程序可以是自己写的,也 ...

  9. 【Hadoop离线基础总结】oozie调度shell脚本

    目录 1.解压官方提供的调度案例 2.创建工作目录 3.拷贝任务模板到工作目录当中去 4.随意准备一个shell脚本 5.修改模板下的配置文件 6.上传调度任务到hdfs上面去 7.执行调度任务 1. ...

随机推荐

  1. 复习python的多态,类的内部权限调用 整理

    #多态的用法 class Dii: passclass Aii(Dii): def run(self): print('一号函数已调用')class Bii(Dii): def run(Dii): p ...

  2. Co-prime 杭电4135

    Given a number N, you are asked to count the number of integers between A and B inclusive which are ...

  3. 如何防止CDN防护被绕过

    当攻击者发现目标站点存在CDN防护的时候,会尝试通过查找站点的真实IP,从而绕过CDN防护.我们来看一个比较常见的基于公有云的高可用架构,如下:CDN(入口层)->WAF(应用层防护)-> ...

  4. Nmap-脚本检测CVE漏洞

    Nmap的一个鲜为人知的部分是NSE,即Nmap Scripting Engine,这是Nmap最强大和最灵活的功能之一.它允许用户编写(和共享)简单脚本,以自动执行各种网络任务.Nmap内置了全面的 ...

  5. redis: Jedis API(十四)

    1.Key操作 package com.kuang; import redis.clients.jedis.Jedis; import java.util.Set; public class Test ...

  6. tensorflow1.0 构建神经网络做非线性归回

    """ Please note, this code is only for python 3+. If you are using python 2+, please ...

  7. 用asp.net core结合fastdfs打造分布式文件存储系统

    最近被安排开发文件存储微服务,要求是能够通过配置来无缝切换我们公司内部研发的文件存储系统,FastDFS,MongDb GridFS,阿里云OSS,腾讯云OSS等.根据任务紧急度暂时先完成了通过配置来 ...

  8. 4.K均值算法--应用

    1. 应用K-means算法进行图片压缩 读取一张图片 观察图片文件大小,占内存大小,图片数据结构,线性化 用kmeans对图片像素颜色进行聚类 获取每个像素的颜色类别,每个类别的颜色 压缩图片生成: ...

  9. sql语句------合并结果集

    select id,max(val) FROM (select id,a 列名 val from 表名unionselect id,b 列名 val from 表名unionselect id,c 列 ...

  10. kubernetes (一)使用Rancher搭建集群

    目录 如何快速高效部署K8s集群 Rancher是什么 为什么是Rancher 1.0.安装Rancher 1.1.环境 1.2.选择Rancher版本 1.3.拉取镜像 2.0.容器启动高级选项 2 ...