大数据工具Hadoop快速入门11-Oozie

Apache Oozie简介

Apache Oozie是Hadoop的工作流程调度程序。 它是一个运行从属作业工作流程的系统。 在这里,允许用户创建工作流的有向非循环图 ,可以在Hadoop中并行和顺序运行。

  • 工作流引擎:工作流引擎的职责是存储和运行由Hadoop作业组成的工作流,例如MapReduce,Pig,Hive。

  • 协调器引擎 :它根据预定义的计划和数据的可用性运行工作流作业。

Oozie具有可扩展性,可以在Hadoop集群中管理数千个工作流(每个工作流由几十个作业组成)。

Oozie也非常灵活。 人们可以轻松地启动,停止,暂停和重新运行作业。 Oozie使重新运行失败的工作流变得非常容易。 人们可以很容易地理解由于停机或故障而赶上错过或失败的工作是多么困难。 甚至可以跳过特定的故障节点。

《大数据工具Hadoop快速入门11-Oozie》 image.png

OOZIE如何运作?

Oozie作为群集中的服务运行,客户端提交工作流程定义以立即或稍后处理。

Oozie工作流由动作(action)节点和控制流节点组成 。

动作节点表示工作流任务,例如,将文件移动到HDFS,运行MapReduce,Pig或Hive作业,使用Sqoop导入数据或运行脚本。

控制流节点通过允许诸如条件逻辑的构造来控制动作之间的工作流执行,可以根据较早动作节点的结果走不同的分支。

启动节点指工作流作业的开始。

结束节点,表示作业结束。

错误节点指出现错误和要打印的相应错误消息。

在执行工作流程结束时,Oozie使用HTTP回调来更新具有工作流状态的客户端。 进入或退出动作节点也可能触发回调。

《大数据工具Hadoop快速入门11-Oozie》 image.png

参考资料

打包和部署Oozie工作流应用程序

工作流应用程序由工作流定义和所有相关资源组成,例如MapReduce Jar文件,Pig脚本等。应用程序需要遵循简单的目录结构并部署到HDFS,以便Oozie可以访问它们。

示例目录结构如下所示

<name of workflow>/</name>
??? lib/
? ??? hadoop-examples.jar
??? workflow.xml

有必要将workflow.xml(工作流定义文件)保留在顶级目录(具有工作流名称的父目录)中。 Lib目录包含包含MapReduce类的Jar文件。 此布局的工作流应用程序可以使用任何构建工具构建,例如Ant或Maven。

这样的构建需要使用命令复制到HDFS,例如

% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow

运行Oozie工作流作业的步骤

要运行它,我们将使用Oozie命令行工具(与Oozie服务器通信的客户端程序)。

  • 1.导出OOZIE_URL环境变量,告诉oozie命令使用哪个Oozie服务器(这里我们使用的是本地运行的):
% export OOZIE_URL="http://localhost:11000/oozie"
  • 2.运行工作流程
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run 

-config选项引用包含工作流XML文件中参数定义的本地Java属性文件,以及oozie.wf.application.path,它告诉Oozie HDFS中工作流应用程序的位置。

属性文件的示例内容

nameNode=hdfs://localhost:8020
jobTracker=localhost:8021
oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
  • 3.获取工作流程作业的状态
e.g., % oozie job -info <job id>

输出显示状态,即RUNNING,KILLED或SUCCEEDED之一。

  • 4.使用Hadoop命令可以看到成功的工作流程执行结果
% hadoop fs -cat <location of result>

为什么要使用Oozie?

使用Oozie的主要目的是管理在Hadoop系统中处理的不同类型的作业。

作业之间的依赖关系由用户以Directed Acyclic Graphs的形式指定。 Oozie使用此信息并按照工作流程中指定的正确顺序处理它们的执行。 这样就节省了用户管理完整工作流程的时间。 此外,Oozie还规定了特定工作的执行频率。

Oozie的特点

  • Oozie具有客户端API和命令行界面,可用于从Java应用程序启动,控制和监视作业。
  • 用其Web服务API,可以从任何地方控制作业。
  • Oozie提供了执行定期运行的作业。
  • Oozie规定在完成工作后发送电子邮件通知。
    原文作者:python人工智能命理
    原文地址: https://www.jianshu.com/p/13ac09aa5966
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞