• 需求

    执行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. 【three.js第三课】鼠标事件,移动、旋转物体

    1.下载three.js的源码包后,文件夹结构如下: 2.在[three.js第一课]的代码基础上,引入OrbitControls.js文件,此文件主要用于 对鼠标的操作. 该文件位置:在文件结构中 ...

  2. stand up meeting 11/24/2015

    part 组员 今日工作 工作耗时/h 明日计划 计划耗时/h 词典接口及数据转换 冯晓云 规范在线查词的各项请求,将返回结果解析成树状,并定义完成各种操作以方便其他部分完成调用,排序,增删等操作 3 ...

  3. The Super Powers UVA - 11752

    题目大意:将范围从1~pow(2,64)-1内的super power输出.super power的定义:一个数x至少存在两种x=pow(i,k),(k!=1). 题解: 注意数据范围2的64次方-1 ...

  4. Android内存优化—dumpsys meminfo详解

    原创置顶 不死鸟JGC 最后发布于2018-12-24 14:19:28 阅读数 3960 收藏展开dumpsys 介绍Dumpsys用户系统诊断,它运行在设备上,并提供系统服务状态信息 命令格式: ...

  5. 爬虫需要登陆怎么办?这份python登陆代码请收下

    模拟登陆思路 通过selenium中的webdriver控制浏览器登录目标网站,然后获取模拟登陆需要的Cookie,再利用此Cookie来达到登录的效果.本次我们使用webdriver来驱动火狐浏览器 ...

  6. selenium 执行js代码

    获取一个input输入框的值: JavascriptExecutor js =(JavascriptExecutor) driver; merchatName=js.executeScript(&qu ...

  7. 常见分布式全局唯一ID生成策略

    全局唯一的 ID 几乎是所有系统都会遇到的刚需.这个 id 在搜索, 存储数据, 加快检索速度 等等很多方面都有着重要的意义.工业上有多种策略来获取这个全局唯一的id,针对常见的几种场景,我在这里进行 ...

  8. 高德局部刷新标记点,bug解决

    将接口返回的经纬集合点在高德地图上标记展示, 如果实时刷新地图标记点,不加优化,则会造成过多的带宽消耗 所以,地图只需加载一次,局部更新标记点就好了 代码: <template> < ...

  9. 开发一款图片压缩工具(三):使用 click 实现命令行

    上一篇实现了图片的压缩函数.现在如果需要对图片进行压缩,可以调用实现的函数进行压缩: pngquant_compress('elephant.png', force=True, quality=20) ...

  10. Scrapy爬虫框架(2)--内置py文件

    Scrapy概念图 这里有很多py文件,分别与Scrapy的各个模块对应 superspider是一个爬虫项目 spider1.py则是一个创建好的爬虫文件,爬取资源返回url和数据 items.py ...