Apache Oozie 教程:使用 Oozie 调度 Hadoop 作业


在这个 Apache Oozie 教程博客中,我们将介绍:

  • Apache Oozie 简介
  • Oozie 工作流
  • Oozie 协调员
  • Oozie 捆绑包
  • 字数统计工作流作业 
  • 基于时间的字数统计协调员工作

我们将通过介绍 Apache Oozie 开始本 Oozie 教程。然后继续前进,我们将了解可以使用 Apache Oozie 创建和执行的作业类型。

Apache Oozie 是一个调度系统,用于在分布式环境中管理和执行 Hadoop 作业。我们可以通过组合不同类型的任务来创建所需的管道。它可以是您的 Hive、Pig、Sqoop 或 MapReduce 任务。使用 Apache Oozie,您还可以安排您的作业。在一个任务序列中,两个或多个作业也可以被编程为彼此并行运行。它是一个可扩展、可靠和可扩展的系统。  
Oozie 是一个开源 Java Web 应用程序,负责触发工作流操作。反过来,它使用 Hadoop 执行引擎来执行任务。
Apache Oozie 通过回调和轮询来检测任务的完成情况。当 Oozie 启动一个任务时,它会为该任务提供一个唯一的回调 HTTP URL,并在任务完成时通知该 URL。如果任务未能调用回调 URL,Oozie 可以轮询任务以完成。
Apache Oozie 中有三种类型的作业:

  • Oozie 工作流作业- 这些是有向无环图 (DAG),它指定要执行的一系列操作。
  • Oozie Coordinator Jobs - 这些包括由时间和数据可用性触发的工作流作业。
  • Oozie Bundles - 这些可以称为多个协调器和工作流作业的包。

 
Apache Oozie 教程:Oozie 工作流
工作流是排列在有向无环图 (DAG) 中的一系列动作。动作相互依赖,因为下一个动作只能在当前动作输出后执行。工作流操作可以是 Pig 操作、Hive 操作、MapReduce 操作、Shell 操作、Java 操作等。可以有决策树来决定作业应该如何运行以及在何种条件下运行。
我们可以根据作业创建不同类型的操作,每种类型的操作都可以有自己的标签类型。 在执行工作流之前,应将工作流和脚本或 jar 放在 HDFS 路径中。
命令:oozie job –oozie http://localhost:11000/oozie -config job.properties -run
要检查作业的状态,您可以转到 Oozie Web 控制台,即 http://host_name:11000。通过单击作业,您将看到作业的状态。
在我们想要并行运行多个作业的场景中,我们可以使用Fork。每当我们使用 fork 时,我们必须使用 Join 作为结束节点进行 fork。对于每个分叉,都应该有一个连接。加入假设所有并行执行的节点都是单个分叉的子节点。例如,我们可以同时并行创建两个表。
如果我们想根据决策的输出运行一个动作,我们可以添加决策标签。例如,如果我们已经有了 hive 表,我们就不需要再次创建它。在这种情况下,如果表已经存在,我们可以添加一个决策标签来不运行创建表步骤。决策节点有一个类似于 switch case 的 switch 标签。
job-tracker、name-node、script、param的值可以直接传入。但是,这变得难以管理。这是配置文件(即 .property 文件)派上用场的地方。
 
Apache Oozie 教程:Oozie 协调器
您可以安排复杂的工作流以及使用 Coordinator 定期安排的工作流。Oozie Coordinators 根据时间、数据或事件谓词触发工作流作业。当满足给定条件时,作业协调器内的工作流开始。
协调员工作所需的定义是:
  • start - 作业的开始日期时间。
  • end - 作业的结束日期时间。
  • timezone - 协调器应用程序的时区。
  • 频率- 执行作业的频率(以分钟为单位)。

更多的属性可用于控制信息:
  • timeout - 动作在被丢弃之前等待满足附加条件的最长时间(以分钟为单位)。0 表示如果在动作实现时所有输入事件都没有得到满足,动作应该立即超时。-1 表示没有超时,动作将永远等待。默认值为 -1。
  • concurrency - 可以并行运行的作业的最大操作数。默认值为 1。
  • 执行- 如果协调器作业的多个实例满足其执行标准,则指定执行顺序。有可能:


    • 先进先出(默认)
    • 后进先出
    • LAST_ONLY

命令: oozie job –oozie http://localhost:11000/oozie -config <path to coordinator.properties file> -run
如果在提交协调器作业时未随作业配置提供定义中使用的配置属性,则作业提交将失败。
  
Apache Oozie 教程:Oozie 捆绑包
Oozie Bundle 系统 允许您定义和执行一组协调器应用程序,通常称为数据管道。在 Oozie 包中,协调器应用程序之间没有明确的依赖关系。但是,您可以使用协调器应用程序的数据依赖性来创建隐式数据应用程序管道。 您可以启动/停止/挂起/恢复/重新运行包。它提供了更好和更容易的操作控制。
Kick-off-time  - 捆绑包应该开始并提交协调器应用程序的时间。