【Oozie笔记】1. Oozie简介及其功能模块介绍

Oozie简介

Oozie英文翻译为:驯象人。一个基于工作流引擎的开源框架,由Cloudera公司贡献给Apache,提供对hadoop Mapreduce,pig Jobs的任务调度与协调。Oozie需要部署到Java Servlet容器中运行。主要用于定时调度任务,多任务可以按照执行的逻辑顺序调度。

在任务开发中,最方便的就是使用linux自带的crond定时启动任务,因为Oozie的框架体量比较大,功能比较强,部署不是很容易。这之间还有一个Az调度任务框架,比Oozie体量小,比crond功能强。

模块

在Oozie中有三个模块分别为:

  1. Workflow
    顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个),workflow没有定时启动的功能,提交就运行任务(多用于一次行任务)
  2. Coordinator
    定时触发workflow,周期性任务
  3. Bundle Job
    绑定多个Coordinator

查看官方文档就会发现:
在这里插入图片描述
在最重要的第三章里只有两个章节,就是Oozie最常用的两个节点,分别为控制流节点(Control Flow Nodes)工作流动作节点(Workflow Action Nodes)

  1. 控制流节点
    控制流节点一般都是定义在工作流开始或者结束的位置,比如start,end,kill等。以及提供工作流的执行路径控制,如decision,fork,join等。
  2. 动作节点
    负责执行具体动作的节点,其实就是我们的任务代码,执行某个shel脚本等,具体的行为动作。
从错误信息来看,`java.lang.Exception: DB schema exists` 表示数据库模式已经存在。这通常发生在尝试初始化 Oozie 数据库时,如果数据库中已经有对应的表结构,则会抛出这个异常。 以下是解决问题的步骤: --- ### 1. **确认当前状态** - 确认是否确实需要重新创建数据库。 - 如果不需要重新创建(即只需要启动 Oozie 而不是初始化),则无需执行 `oozie-setup db create ...` 命令。 - 如果你需要重新初始化数据库,请先清理旧的数据。 --- ### 2. **解决方法** #### 方法一:跳过数据库初始化 如果你只是想启动 Oozie,并且现有的数据库模式已经是正确的版本,可以忽略此错误并直接启动服务: ```bash $ oozie-admin.sh start ``` #### 方法二:删除现有数据库并重新创建 如果你希望彻底清除现有的数据并重新创建数据库,请按照以下步骤操作: 1. 执行以下命令以删除现有数据库模式: ```sql DROP SCHEMA IF EXISTS OOZIE CASCADE; ``` (注意:这将导致所有已有的任务记录丢失) 2. 再次运行 Oozie 的数据库初始化脚本: ```bash $ oozie-setup db create ... ``` 3. 启动 Oozie: ```bash $ oozie-admin.sh start ``` #### 方法三:升级而不是覆盖 如果有已有数据并且不想完全重建数据库,可以选择升级而非销毁再新建: ```bash $ oozie-setup db upgrade ... ``` 这样可以在保留现有数据的同时更新到最新版的数据库模式。 --- ### 3. **验证结果** 完成上述任一步骤之后,请检查日志文件 `/var/log/oozie/oozie.log` 或类似路径下的日志,确保没有其他异常提示。 --- **重要提醒**: 在生产环境中切勿随意删除或修改数据库内容,除非明确了解潜在风险! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值