【大数据系列】Oozie
小工具篇
任务调度 | HUE操作OOZIE
工作流概念
工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。
工作流解决的主要问题是:为了实现某个业务目标,利用计算机软件在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
一个完整的数据分析系统通常都是由多个前后依赖的模块组合构成的:数据采集、数据预处理、数据分析、数据展示等。各个模块单元之间存在时间先后依赖关系,且存在着周期性重复。
核心概念:依赖执行 周期重复执行
工作流实现方式
- 自己开发实现调度工具
- 使用第三方调度软件
工作流调度
1、在大数据的实际开发中,我们数据的整个处理和分析过程是周期型的工作,比如每隔一天都需要讲整个流程执行一遍
2、所以我们需要一个工作流调度框架,帮我们在合适的时间重复执行这个分析任务
什么是oozie
Oozie是一个用于管理Apache Hadoop作业的工作流调度程序系统。
Oozie由Cloudera公司贡献给Apache的基于工作流引擎的开源框架,是用于Hadoop平台的开源的工作流调度引擎,是用来管理Hadoop作业,属于web应用程序,由Oozie client和Oozie Server两个组件构成,Oozie Server运行于Java Servlet容器(Tomcat)中的web程序。
Oozie的目的是按照DAG(有向无环图)调度一系列的Map/Reduce或者Hive等任务。Oozie 工作流由hPDL(Hadoop Process Definition Language)定义(这是一种XML流程定义语言)。
适用场景
- 需要按顺序进行一系列任务;
- 需要并行处理的任务;
- 需要定时、周期触发的任务;
- 可视化作业流运行过程;
- 运行结果或异常的通报。
Oozie架构
1 | #Oozie Client |
Oozie工作流类型
==workflow== 普通工作流 没有定时和条件触发功能。
==coordinator== 定时工作流 可以设置执行周期和频率
bundle 批处理工作流 一次可以提交执行多个coordinator
大数据中的工作流
能够使用工作流完成的业务一般具有什么特点呢?
1 | 1) 整个业务流程需要周期性重复干 |
请问, 大数据的工作流程是否可以使用工作流来解决呢? 完全可以的
请问: 如何实现一个工作流呢? 已经有爱心人士将工作流软件实现了, 只需要学习如何使用这些软件配置工作流程即可
1 | 单独使用: |
oozie本质是将工作流翻译为MR程序来运行
Oozie使用案例
Oozie的操作步骤-WorkFlow
- 1、开启Oozie服务
2、打开Oozie页面
3、创建WorkFlow工作流,并命名
4、让oozie调度hive脚本
5、找到你的hive脚本
5.1 在Linux的/root目录,写一个SQL脚本:hive_test.sql
1
2
3
4
5
6create database myhive;
use myhive;
create table if not exists stu(id int ,name string)
row format delimited fields terminated by '\t';
insert into stu values (1,"zhangsan");
insert into stu values (2,"lisi");5.1 在本地设置脚本权限为为777
1
chmod 777 /root/hive_test.sh
5.2 将脚本上传到HDFS的/user/hue/oozie_test目录
1
2hadoop fs -put /root/hive_test.sh /user/hue/oozie_test
hadoop fs -chmod 777 /user/hue/oozie_test/hive_test.sh
6、保存工作流
7、点击执行
8、查看进度
9、以后如何找到该工作流?
Oozie的操作步骤-定时计划
1、打开定时计划页面
2、进行设置
3、保存并执行
Oozie的操作步骤-多个定时计划批量执行(Bundle)
WorkFlow 、计划、Bundle之间的关系
1 | 1、WorkFlow是一次性的工作流 |
新增oozie程序
提交任务
修复异常