Apache Oozie 是一个分布式工作流调度程序,用于执行和控制 Hadoop 任务。使用此工具可以轻松安排 MapReduce、Sqoop、Pig 和 Hive 作业。它允许顺序执行几个困难的任务来完成更大的任务。还可以设置一个作业序列,以便多个作业可以同时运行。通过启动工作流,它指示 Hadoop 执行引擎执行它们。当前的 Hadoop 基础架构可能被 Oozie 用于负载平衡、故障转移等。它分为两个部分:
MapReduce、Pig 等 Hadoop 作业在工作流引擎中用于存储和运行工作流。协调器引擎使用预定义的时间表和数据可用性来执行工作流作业。Oozie 使用回调和轮询来识别作业完成。一旦启动 Oozie 作业,就会分配一个唯一的 URL,并在工作完成时通知。无论回调 URL 是否没有被调用,Oozie 都可以轮询作业以查看它是否已完成。
Oozie 工作流程
Apache Oozie Workflow 中有控制流节点和动作节点。
动作节点:动作节点是执行计算活动的触发器。Oozie 为多种 Hadoop 活动提供了开箱即用的支持,包括 Hadoop MapReduce、Hadoop 文件系统、Pig 等。此外,Oozie 还为特定于系统的任务提供支持,如 SSH、HTTP 和电子邮件。
控制流节点:-控制流节点是告诉工作流从哪里开始和在哪里结束(开始、结束、失败)的东西。此外,控制流节点提供了一种控制工作流执行路径(决策、分叉和连接)的方法
以下控制流节点启动或终止 Apache Oozie 进程中的工作流强制执行:
- 启动控制节点——启动节点是 Oozie 工作流作业切换到的初始节点,也是工作流作业的入口点。Apache Oozie 中的每个工作流定义都必须包含一个起始节点。
- 结束控制节点– 结束节点是 Oozie 工作流作业移动到的最后一个节点,它表示工作流作业已成功完成。当工作流作业到达结束节点时,它成功完成并且其状态更新为 SUCCESSFUL。Apache Oozie 中的每个工作流定义都必须包含一个结束节点。
- 终止控制节点– 终止节点使工作流作业能够自行终止。当工作流作业到达终止节点时,它会因错误而终止,并且其状态会更改为 KILLED。
Apache Oozie 面试问题
1. Apache Oozie 的关键特性是什么?
Apache Oozie 的主要特点是:
- Oozie 有一个客户端 API 和命令行界面,Java 应用程序可以使用它来开始、管理和监视任务。
- 使用其 Web 服务 API,可以从任何地方管理作业。
- Oozie 提供了执行定期运行的作业的能力。
- Oozie 能够在任务完成时发送电子邮件提醒。
2. Oozie 工作流程中有哪些重要的 EL 功能可用?
Oozie 的工作流程包括以下重要的 EL 功能。
- wf: name()此函数用于返回工作流应用程序的名称。
- wf:id()该函数返回活动工作流作业的作业id。
- wf:errorCode (String node)这个函数返回当前执行的动作节点的错误代码。
- wf:lastErrorNod()该函数返回最近完成的动作节点的名称。
3. Apache Oozie 工作流提供了哪些指导工作流执行的控制流节点?
以下控制流节点在 Apache Oozie 工作流中调节工作流的执行路径。
- 决策控制节点——与 switch-case 语句一样,决策控制节点让工作流选择采用哪条执行路线。
- 分叉和连接控制节点– 如下图所示,分叉和连接控制节点成对使用和功能。fork 节点将单个执行路径划分为多个并发执行路径。加入节点等待来自适当分叉节点的所有并发执行路径的到达。
4. Oozie 支持哪些动作?
Apache Oozie 支持以下操作节点类型。
- MapReduce 操作
- Java 动作
- 猪行动
- FS 行动
- 子工作流操作
- 蜂巢行动
- DistCp 动作
- 电子邮件操作
- 壳牌行动
- SSH 操作
- Sqoop 行动
5. Apache Oozie 服务于什么目的?
Apache Oozie 提供了一种管理许多任务的绝妙方法。客户希望为以后的执行或需要特定执行顺序的活动计划多种作业。使用 Apache Oozie,可以简化这些类型的执行。使用 Apache Oozie,管理员或用户可以并行执行多个独立进程,按顺序运行作业,或从任何地方控制它们,使其成为宝贵的工具。
6. 解释 Oozie 协调器?
Oozie Coordinator 作业是由时间和数据可用性触发的周期性 Oozie Workflow 作业。此外,Oozie 协调员可能会监督取决于未来工作流程结果的几个流程。一个过程的结果成为下一个工作流程的输入。此序列代表“数据应用程序管道”。
Oozie 在定义的时区处理协调员工作,没有夏令时(通常是 UTC);该时区被称为“Oozie 处理时区”。Oozie 处理时区确定协调器任务开始/结束时间、作业暂停时间和数据集的初始实例。此外,每个协调器数据集实例 URI 模板都被解析为 Oozie 处理时区内的 DateTime。
Oozie Coordinator 的使用通常分为三个不同的类别。
- 小型:一个协调器应用程序,包括嵌入式数据集定义。
- 中:由单个通用数据集描述和一些协调器应用程序组成
- 大:由许多标准数据集定义和各种协调器应用程序组成。
7. 描述 Oozie 工作流支持的不同动作节点。
Apache Oozie 工作流支持和辅助计算任务的动作节点列表如下所示。 Map Reduce Action:该动作节点在 Hadoop 中启动 Map-Reduce 作业。
Pig 操作:此节点从 Apache Oozie 启动 Pig 进程。
FS 行动 (HDFS)。此操作节点有助于 Oozie 进程管理与 HDFS 关联的所有文件和目录。此外,它还支持 mkdir、moves、chmod、delete、chgrp 和 touchz 命令。
Java 动作:在 Oozie 工作流中,子工作流动作节点有助于执行主要 java 类的 public static void main(String[] args) 函数。
8.命名Oozie默认使用的存储job ids和job status的数据库?
Oozie 使用 Derby 数据库来存储作业 ID 和作业状态。
9. 你能解释一下 Apache Oozie 工作流工作的不同阶段吗?
Apache Oozie 工作流作业经历以下状态。
- 准备:准备是 Oozie 工作流作业的基本前提。在此状态下,工作流作业已定义但尚未继续。
- RUNNING:当 Oozie 工作流继续进行时,它会进入 RUNNING 状态。当工作流处于 RUNNING 状态时,它不会达到其结束状态、以错误结束或暂时暂停。
- SUSPENDED:当 Oozie 工作流作业不再处于活动状态时,它们会进入 SUSPENDED 状态。一旦停止,工作流将一直保持,直到它重新启动或终止。
- SUCCEDED:当正在运行的 Oozie 作业到达结束节点时,它会变为 SUCCEEDED 状态。
- KILLED:当管理员终止正在运行、创建或暂停的工作流作业时,该作业将切换到 KILLED 状态。
- FAILED: RUNNING Oozie 作业如果工作流作业在执行过程中因意外错误而失败,则会变为 FAILED。
10. 简要描述 Oozie Bundle。
Oozie Bundle 可能是对一组协调器应用程序进行批处理的更高级别的 Oozie 抽象。用户可以在捆绑包级别启动/停止/暂停/恢复/重新运行,从而实现更精简和有效的操作控制。特别是,Oozie Bundle 系统使用户能够设计和执行一组协调器应用程序,有时被描述为知识管道。在捆绑期间,协调器应用程序之间没有明确的依赖关系。然而,用户可能会使用协调器应用程序的信息依赖来创建隐式数据应用程序管道。
Oozie 支持工作流强制。
o 时间相关性(频率)
o 数据依赖
结论
本文讨论了一个名为 Apache Oozie 的调度程序系统,用于运行和管理 Hadoop 的分布式作业。
这些 Apache Oozie 面试问题可以帮助您为后续的个人面试做准备。这些是面试官在 Oozie 相关面试中最常问的问题。在参加面试之前,您必须查看这些 Apache Oozie 面试问题,因为它们将帮助您查看想法并增强您的信心。
本文还解决了以下附加要点:
- Oozie 的工作流和 Apache Oozie Workflow 提供的许多节点。
- Oozie 工作流程中的 EL 功能。
- Apache Oozie 的特性和目的。
- Apache Oozie 等执行各种操作