<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>简单之美 &#187; Tag &#187; Oozie</title>
	<atom:link href="http://shiyanjun.cn/archives/tag/oozie/feed" rel="self" type="application/rss+xml" />
	<link>http://shiyanjun.cn</link>
	<description>简单之美，难得简单，享受简单的唯美。</description>
	<lastBuildDate>Wed, 04 Mar 2026 07:04:53 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.2</generator>
	<item>
		<title>Oozie Coordinator使用及详解</title>
		<link>http://shiyanjun.cn/archives/684.html</link>
		<comments>http://shiyanjun.cn/archives/684.html#comments</comments>
		<pubDate>Wed, 05 Mar 2014 15:39:29 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Azkaban/Oozie]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[Oozie]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=684</guid>
		<description><![CDATA[<p>Oozie所支持工作流，工作流定义通过将多个Hadoop Job的定义按照一定的顺序组织起来，然后作为一个整体按照既定的路径运行。一个工作流已经定义了，通过启动该工作流Job，就会执行该工作流中包含的多个Hadoop Job，直到完成，这就是工作流Job的生命周期。
那么，现在我们有一个工作流Job，希望每天半夜00:00启动运行，我们能够想到的就是通过写一个定时脚本来调度程序运行。如果我们有多个工作流Job，使用crontab的方式调用可能需要编写大量的脚本，还要通过脚本来控制好各个工作流Job的执行时序问题，不但脚本不好维护，而且监控也不方便。基于这样的背景，Oozie提出了Coordinator的概念，他们能够将每个工作流Job作为一个动作（Action）来运行，相当于工作流定义中的一个执行节点（我们可以理解为工作流的工作流），这样就能够将多个工作流Job组织起来，称为Coordinator Job，并指定触发时间和频率，还可以配置数据集、并发数等。一个Coordinator Job包含了在Job外部设置执行周期和频率的语义，类似于在工作流外部增加了一个协调器来管理这些工作流的工作流Job的运</p>]]></description>
	<p>Oozie所支持工作流，工作流定义通过将多个Hadoop Job的定义按照一定的顺序组织起来，然后作为一个整体按照既定的路径运行。一个工作流已经定义了，通过启动该工作流Job，就会执行该工作流中包含的多个Hadoop Job，直到完成，这就是工作流Job的生命周期。
那么，现在我们有一个工作流Job，希望每天半夜00:00启动运行，我们能够想到的就是通过写一个定时脚本来调度程序运行。如果我们有多个工作流Job，使用crontab的方式调用可能需要编写大量的脚本，还要通过脚本来控制好各个工作流Job的执行时序问题，不但脚本不好维护，而且监控也不方便。基于这样的背景，Oozie提出了Coordinator的概念，他们能够将每个工作流Job作为一个动作（Action）来运行，相当于工作流定义中的一个执行节点（我们可以理解为工作流的工作流），这样就能够将多个工作流Job组织起来，称为Coordinator Job，并指定触发时间和频率，还可以配置数据集、并发数等。一个Coordinator Job包含了在Job外部设置执行周期和频率的语义，类似于在工作流外部增加了一个协调器来管理这些工作流的工作流Job的运</p>			<content:encoded><![CDATA[<p>Oozie所支持工作流，工作流定义通过将多个Hadoop Job的定义按照一定的顺序组织起来，然后作为一个整体按照既定的路径运行。一个工作流已经定义了，通过启动该工作流Job，就会执行该工作流中包含的多个Hadoop Job，直到完成，这就是工作流Job的生命周期。
那么，现在我们有一个工作流Job，希望每天半夜00:00启动运行，我们能够想到的就是通过写一个定时脚本来调度程序运行。如果我们有多个工作流Job，使用crontab的方式调用可能需要编写大量的脚本，还要通过脚本来控制好各个工作流Job的执行时序问题，不但脚本不好维护，而且监控也不方便。基于这样的背景，Oozie提出了Coordinator的概念，他们能够将每个工作流Job作为一个动作（Action）来运行，相当于工作流定义中的一个执行节点（我们可以理解为工作流的工作流），这样就能够将多个工作流Job组织起来，称为Coordinator Job，并指定触发时间和频率，还可以配置数据集、并发数等。一个Coordinator Job包含了在Job外部设置执行周期和频率的语义，类似于在工作流外部增加了一个协调器来管理这些工作流的工作流Job的运</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/684.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Oozie工作流程定义详解</title>
		<link>http://shiyanjun.cn/archives/664.html</link>
		<comments>http://shiyanjun.cn/archives/664.html#comments</comments>
		<pubDate>Tue, 04 Mar 2014 11:21:02 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Azkaban/Oozie]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[Oozie]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=664</guid>
		<description><![CDATA[<p>Oozie工作流程定义是一个DAG（Directed Acyclical Graphs）图，它由控制流节点（Control Flow Nodes）或动作节点（Action Nodes）组成，各个节点又是通过表征转移的箭线（transitions
arrows）互相连通。对于工作流一般对应存在流程定义语言，例如jBPM是jPDL，大多数都是基于XML定义的，Oozie流程定义语言也是基于XML定义的，称为hPDL（Hadoop Process Definition Language）。
下面，我们详细说明工作流定义相关的内容：
工作流生命周期
在Oozie中，工作流的状态可能存在如下几种：




				状态
			

				含义说明
			



				PREP
			

				一个工作流Job第一次创建将处于PREP状态，表示工作流Job已经定义，但是没有运行。
			



				RUNNING
			

				当一个已经被创建的工作流Job开始执行的时候，就处于RUNNING状态。它不会达到结束状态，只能因为出错而结束，或者被挂起。
			



				SUSPENDED
			

				一个RUNNING状态的工作流Job会变成SUSPENDED状态，而且它会一直处于该状态，除非这个工作流Job被重新开始执行或者被杀死。
			



				SUCCEEDED
			

	</p>]]></description>
	<p>Oozie工作流程定义是一个DAG（Directed Acyclical Graphs）图，它由控制流节点（Control Flow Nodes）或动作节点（Action Nodes）组成，各个节点又是通过表征转移的箭线（transitions
arrows）互相连通。对于工作流一般对应存在流程定义语言，例如jBPM是jPDL，大多数都是基于XML定义的，Oozie流程定义语言也是基于XML定义的，称为hPDL（Hadoop Process Definition Language）。
下面，我们详细说明工作流定义相关的内容：
工作流生命周期
在Oozie中，工作流的状态可能存在如下几种：




				状态
			

				含义说明
			



				PREP
			

				一个工作流Job第一次创建将处于PREP状态，表示工作流Job已经定义，但是没有运行。
			



				RUNNING
			

				当一个已经被创建的工作流Job开始执行的时候，就处于RUNNING状态。它不会达到结束状态，只能因为出错而结束，或者被挂起。
			



				SUSPENDED
			

				一个RUNNING状态的工作流Job会变成SUSPENDED状态，而且它会一直处于该状态，除非这个工作流Job被重新开始执行或者被杀死。
			



				SUCCEEDED
			

	</p>			<content:encoded><![CDATA[<p>Oozie工作流程定义是一个DAG（Directed Acyclical Graphs）图，它由控制流节点（Control Flow Nodes）或动作节点（Action Nodes）组成，各个节点又是通过表征转移的箭线（transitions
arrows）互相连通。对于工作流一般对应存在流程定义语言，例如jBPM是jPDL，大多数都是基于XML定义的，Oozie流程定义语言也是基于XML定义的，称为hPDL（Hadoop Process Definition Language）。
下面，我们详细说明工作流定义相关的内容：
工作流生命周期
在Oozie中，工作流的状态可能存在如下几种：




				状态
			

				含义说明
			



				PREP
			

				一个工作流Job第一次创建将处于PREP状态，表示工作流Job已经定义，但是没有运行。
			



				RUNNING
			

				当一个已经被创建的工作流Job开始执行的时候，就处于RUNNING状态。它不会达到结束状态，只能因为出错而结束，或者被挂起。
			



				SUSPENDED
			

				一个RUNNING状态的工作流Job会变成SUSPENDED状态，而且它会一直处于该状态，除非这个工作流Job被重新开始执行或者被杀死。
			



				SUCCEEDED
			

	</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/664.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oozie-3.3.2安装配置运行实践</title>
		<link>http://shiyanjun.cn/archives/644.html</link>
		<comments>http://shiyanjun.cn/archives/644.html#comments</comments>
		<pubDate>Sat, 01 Mar 2014 12:24:30 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Azkaban/Oozie]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[Oozie]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=644</guid>
		<description><![CDATA[<p>Oozie是一个开源的工作流调度系统，它能够管理逻辑复杂的多个Hadoop作业，按照指定的顺序将其协同运行起来。例如，我们可能有这样一个需求，某个业务系统每天产生20G原始数据，我们每天都要对其进行处理，处理步骤如下所示：

通过Hadoop先将原始数据同步到HDFS上；
借助MapReduce计算框架对原始数据进行转换，生成的数据以分区表的形式存储到多张Hive表中；
需要对Hive中多个表的数据进行JOIN处理，得到一个明细数据Hive大表；
将明细数据进行复杂的统计分析，得到排序后的报表信息；
需要将统计分析得到的结果数据同步到业务系统中，供业务调用使用。

上述过程可以通过工作流系统来编排任务，最终生成一个工作流实例，然后每天定时启动运行这个实例即可。在这种依赖于Hadoop存储和处理能力要求的应用场景下，Oozie可能能够简化任务调度和执行。
这里，我们在CentOS 6.2系统下安装Oozie-3.3.2，需要安装相关的依赖软件包，下面我们一步一步地进行安装，包括安装配置依赖软件包。这里，我们使用MySQL数据库存储Oozie数据，Hadoop使用的是1.2.1版本。
安装Oozie Ser</p>]]></description>
	<p>Oozie是一个开源的工作流调度系统，它能够管理逻辑复杂的多个Hadoop作业，按照指定的顺序将其协同运行起来。例如，我们可能有这样一个需求，某个业务系统每天产生20G原始数据，我们每天都要对其进行处理，处理步骤如下所示：

通过Hadoop先将原始数据同步到HDFS上；
借助MapReduce计算框架对原始数据进行转换，生成的数据以分区表的形式存储到多张Hive表中；
需要对Hive中多个表的数据进行JOIN处理，得到一个明细数据Hive大表；
将明细数据进行复杂的统计分析，得到排序后的报表信息；
需要将统计分析得到的结果数据同步到业务系统中，供业务调用使用。

上述过程可以通过工作流系统来编排任务，最终生成一个工作流实例，然后每天定时启动运行这个实例即可。在这种依赖于Hadoop存储和处理能力要求的应用场景下，Oozie可能能够简化任务调度和执行。
这里，我们在CentOS 6.2系统下安装Oozie-3.3.2，需要安装相关的依赖软件包，下面我们一步一步地进行安装，包括安装配置依赖软件包。这里，我们使用MySQL数据库存储Oozie数据，Hadoop使用的是1.2.1版本。
安装Oozie Ser</p>			<content:encoded><![CDATA[<p>Oozie是一个开源的工作流调度系统，它能够管理逻辑复杂的多个Hadoop作业，按照指定的顺序将其协同运行起来。例如，我们可能有这样一个需求，某个业务系统每天产生20G原始数据，我们每天都要对其进行处理，处理步骤如下所示：

通过Hadoop先将原始数据同步到HDFS上；
借助MapReduce计算框架对原始数据进行转换，生成的数据以分区表的形式存储到多张Hive表中；
需要对Hive中多个表的数据进行JOIN处理，得到一个明细数据Hive大表；
将明细数据进行复杂的统计分析，得到排序后的报表信息；
需要将统计分析得到的结果数据同步到业务系统中，供业务调用使用。

上述过程可以通过工作流系统来编排任务，最终生成一个工作流实例，然后每天定时启动运行这个实例即可。在这种依赖于Hadoop存储和处理能力要求的应用场景下，Oozie可能能够简化任务调度和执行。
这里，我们在CentOS 6.2系统下安装Oozie-3.3.2，需要安装相关的依赖软件包，下面我们一步一步地进行安装，包括安装配置依赖软件包。这里，我们使用MySQL数据库存储Oozie数据，Hadoop使用的是1.2.1版本。
安装Oozie Ser</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/644.html/feed</wfw:commentRss>
		<slash:comments>47</slash:comments>
		</item>
		<item>
		<title>Oozie简介与快速入门</title>
		<link>http://shiyanjun.cn/archives/57.html</link>
		<comments>http://shiyanjun.cn/archives/57.html#comments</comments>
		<pubDate>Wed, 21 Aug 2013 12:39:25 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Azkaban/Oozie]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[Hadoop/Hive/ZooKeeper]]></category>
		<category><![CDATA[Oozie]]></category>

		<guid isPermaLink="false">http://shirdrn.org/?p=57</guid>
		<description><![CDATA[<p>Oozie是一个基于工作流引擎的开源框架，是由Cloudera公司贡献给Apache的，它能够提供对Hadoop MapReduce和Pig Jobs的任务调度与协调。Oozie需要部署到Java Servlet容器中运行。
Oozie工作流定义，同JBoss jBPM提供的jPDL一样，也提供了类似的流程定义语言hPDL，通过XML文件格式来实现流程的定义。对于工作流系统，一般都会有很多不同功能的节点，比如分支、并发、汇合等等，Oozie也有类似的一些概念，不做过多解释，更多信息可以参考相关文档。
这里，简单描述一下，Oozie定义了控制流节点（Control Flow Nodes）和动作节点（Action Nodes），其中控制流节点定义了流程的开始和结束，以及控制流程的执行路径（Execution Path），如decision、fork、join等；而动作节点包括Hadoop map-reduce、Hadoop文件系统、Pig、SSH、HTTP、eMail和Oozie子流程。
下面我们看一下，官方文档中给出的定义流程的例子，流程定义示例如图所示：

这个流程图表达了WordCount统计词频的流程编排功能，非常简单，启动执行一个MapReduce任务，如果成功则正常结束，如果失败则取消该任务。
</p>]]></description>
	<p>Oozie是一个基于工作流引擎的开源框架，是由Cloudera公司贡献给Apache的，它能够提供对Hadoop MapReduce和Pig Jobs的任务调度与协调。Oozie需要部署到Java Servlet容器中运行。
Oozie工作流定义，同JBoss jBPM提供的jPDL一样，也提供了类似的流程定义语言hPDL，通过XML文件格式来实现流程的定义。对于工作流系统，一般都会有很多不同功能的节点，比如分支、并发、汇合等等，Oozie也有类似的一些概念，不做过多解释，更多信息可以参考相关文档。
这里，简单描述一下，Oozie定义了控制流节点（Control Flow Nodes）和动作节点（Action Nodes），其中控制流节点定义了流程的开始和结束，以及控制流程的执行路径（Execution Path），如decision、fork、join等；而动作节点包括Hadoop map-reduce、Hadoop文件系统、Pig、SSH、HTTP、eMail和Oozie子流程。
下面我们看一下，官方文档中给出的定义流程的例子，流程定义示例如图所示：

这个流程图表达了WordCount统计词频的流程编排功能，非常简单，启动执行一个MapReduce任务，如果成功则正常结束，如果失败则取消该任务。
</p>			<content:encoded><![CDATA[<p>Oozie是一个基于工作流引擎的开源框架，是由Cloudera公司贡献给Apache的，它能够提供对Hadoop MapReduce和Pig Jobs的任务调度与协调。Oozie需要部署到Java Servlet容器中运行。
Oozie工作流定义，同JBoss jBPM提供的jPDL一样，也提供了类似的流程定义语言hPDL，通过XML文件格式来实现流程的定义。对于工作流系统，一般都会有很多不同功能的节点，比如分支、并发、汇合等等，Oozie也有类似的一些概念，不做过多解释，更多信息可以参考相关文档。
这里，简单描述一下，Oozie定义了控制流节点（Control Flow Nodes）和动作节点（Action Nodes），其中控制流节点定义了流程的开始和结束，以及控制流程的执行路径（Execution Path），如decision、fork、join等；而动作节点包括Hadoop map-reduce、Hadoop文件系统、Pig、SSH、HTTP、eMail和Oozie子流程。
下面我们看一下，官方文档中给出的定义流程的例子，流程定义示例如图所示：

这个流程图表达了WordCount统计词频的流程编排功能，非常简单，启动执行一个MapReduce任务，如果成功则正常结束，如果失败则取消该任务。
</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/57.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
