`

Oozie工作流程定义详解

 
阅读更多

 

 

 

 

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 当一个RUNNING状态的工作流Job到达了end节点,它就变成了SUCCEEDED最终完成状态。
KILLED 当一个工作流Job处于被创建后的状态,或者处于RUNNING、SUSPENDED状态时,被杀死,则工作流Job的状态变为KILLED状态。
FAILED 当一个工作流Job不可预期的错误失败而终止,就会变成FAILED状态。

上述各种状态存在相应的转移(工作流程因为某些事件,可能从一个状态跳转到另一个状态),其中合法的状态转移有如下几种,如下表所示:

转移前状态 转移后状态集合
未启动 PREP
PREP RUNNING、KILLED
RUNNING SUSPENDED、SUCCEEDED、KILLED、FAILED
SUSPENDED RUNNING、KILLED

明确上述给出的状态转移空间以后,可以根据实际需要更加灵活地来控制工作流Job的运行。

控制流节点(Control Flow Nodes)

工作流程定义中,控制工作流的开始和结束,以及工作流Job的执行路径的节点,它定义了流程的开始(start节点)和结束(end节点或kill节点),同时提供了一种控制流程执行路径的机制(decision决策节点、fork分支节点、join会签节点)。通过上面提到的各种节点,我们大概应该能够知道它们在工作流中起着怎样的作用。下面,我们看一下不同节点的语法格式:

    • start节点
1 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
2     ...
3     <start to="[NODE-NAME]" />
4     ...
5 </workflow-app>

上面start元素的to属性,指向第一个将要执行的工作流节点。

    • end节点
1 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
2     ...
3     <end name="[NODE-NAME]" />
4     ...
5 </workflow-app>

达到该节点,工作流Job会变成SUCCEEDED状态,表示成功完成。需要注意的是,一个工作流定义必须只能有一个end节点。

    • kill节点
1 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
2     ...
3     <kill name="[NODE-NAME]">
4         <message>[MESSAGE-TO-LOG]</message>
5     </kill>
6     ...
7 </workflow-app>

kill元素的name属性,是要杀死的工作流节点的名称,message元素指定了工作流节点被杀死的备注信息。达到该节点,工作流Job会变成状态KILLED。

    • decision节点
01 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
02     ...
03     <decision name="[NODE-NAME]">
04         <switch>
05             <case to="[NODE_NAME]">[PREDICATE]</case>
06             ...
07             <case to="[NODE_NAME]">[PREDICATE]</case>
08             <default to="[NODE_NAME]" />
09         </switch>
10     </decision>
11     ...
12 </workflow-app>

decision节点通过预定义一组条件,当工作流Job执行到该节点时,会根据其中的条件进行判断选择,满足条件的路径将被执行。decision节点通过switch…case语法来进行路径选择,只要有满足条件的判断,就会执行对应的路径,如果没有可以配置default元素指向的节点。

    • fork节点和join节点
01 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
02     ...
03     <fork name="[FORK-NODE-NAME]">
04         <path start="[NODE-NAME]" />
05         ...
06         <path start="[NODE-NAME]" />
07     </fork>
08     ...
09     <join name="[JOIN-NODE-NAME]" to="[NODE-NAME]" />
10     ...
11 </workflow-app>

for元素下面会有多个path元素,指定了可以并发执行的多个执行路径。fork中多个并发执行路径会在join节点的位置会合,只有所有的路径都到达后,才会继续执行join节点。

动作节点(Action Nodes)

工作流程定义中,能够触发一个计算任务(Computation Task)或者处理任务(Processing Task)执行的节点。所有的动作(
Action)都有一些基本的特性,我先首先来看一下:

    • 远程执行

对Oozie来说,动作节点的执行都是远程的,因为Oozie可能部署在一个单独的服务器上,而工作流Job是在Hadoop集群的节点上执行的。即使Oozie在Hadoop集群的某个节点上,它也是处于与Hadoop进行独立无关的JVM示例之中(Oozie部署在Servlet容器当中)。

    • 异步性

动作节点的执行,对于Oozie来说是异步的。Oozie启动一个工作流Job,这个工作流Job便开始执行。Oozie可以通过两种方式来探测工作流Job的执行情况:一种是基于回调机制,对每个任务的执行(可以看成是动作节点的执行)都对应一个唯一的URL,如果任务执行结束或者执行失败,会通过回调这个URL通知Oozie已经完成;另一种就是轮询,Oozie不停地去查询任务执行的完成状态,如果由于网络故障回调机制失败,也会使用轮询的方式来处理。

    • 执行结果要么成功,要么失败

如果动作节点执行成功,则会转向ok节点;如果失败则会转向error节点。

    • 可恢复性

如果一个动作节点执行失败,Oozie提供了一些恢复执行的策略,这个要根据失败的特点来进行:如果是状态转移过程中失败,Oozie会根据指定的重试时间间隔去重新执行;如果不是转移性质的失败,则只能通过手工干预来进行恢复;如果重试恢复执行都没有解决问题,则最终会跳转到error节点。

下面详细介绍Oozie内置支持的动作节点类型,如下所示:

  • Map-Reduce动作

map-reduce动作会在工作流Job中启动一个MapReduce Job任务运行,我们可以详细配置这个MapReduce Job。另外,可以通过map-reduce元素的子元素来配置一些其他的任务,如streaming、pipes、file、archive等等。
下面给出包含这些内容的语法格式说明:

01 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
02     ...
03     <action name="[NODE-NAME]">
04         <map-reduce>
05             <job-tracker>[JOB-TRACKER]</job-tracker>
06             <name-node>[NAME-NODE]</name-node>
07             <prepare>
08                 <delete path="[PATH]" />
09                 ...
10                 <mkdir path="[PATH]" />
11                 ...
12             </prepare>
13             <streaming>
14                 <mapper>[MAPPER-PROCESS]</mapper>
15                 <reducer>[REDUCER-PROCESS]</reducer>
16                 <record-reader>[RECORD-READER-CLASS]</record-reader>
17                 <record-reader-mapping>[NAME=VALUE]</record-reader-mapping>
18                 ...
19                 <env>[NAME=VALUE]</env>
20                 ...
21             </streaming>
22             <!-- Either streaming or pipes can be specified for an action, not both -->
23             <pipes>
24                 <map>[MAPPER]</map>
25                 <reduce>
26                     [REDUCER]
27                 </reducer>
28                     <inputformat>[INPUTFORMAT]</inputformat>
29                     <partitioner>[PARTITIONER]</partitioner>
30                     <writer>[OUTPUTFORMAT]</writer>
31                     <program>[EXECUTABLE]</program>
32             </pipes>
33             <job-xml>[JOB-XML-FILE]</job-xml>
34             <configuration>
35                 <property>
36                     <name>[PROPERTY-NAME]</name>
37                     <value>[PROPERTY-VALUE]</value>
38                 </property>
39                 ...
40             </configuration>
41             <file>[FILE-PATH]</file>
42             ...
43             <archive>[FILE-PATH]</archive>
44             ...
45         </map-reduce>
46         <ok to="[NODE-NAME]" />
47         <error to="[NODE-NAME]" />
48     </action>
49     ...
50 </workflow-app>
  • Hive动作

Hive主要是基于类似SQL的HQL语言的,它能够方便地操作HDFS中数据,实现对海量数据的分析工作。HIve动作的语法格式如下所示:

01 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.2">
02     ...
03     <action name="[NODE-NAME]">
04         <hive xmlns="uri:oozie:hive-action:0.2">
05             <job-tracker>[JOB-TRACKER]</job-tracker>
06             <name-node>[NAME-NODE]</name-node>
07             <prepare>
08                 <delete path="[PATH]" />
09                 ...
10                 <mkdir path="[PATH]" />
11                 ...
12             </prepare>
13             <configuration>
14                 <property>
15                     <name>[PROPERTY-NAME]</name>
16                     <value>[PROPERTY-VALUE]</value>
17                 </property>
18                 ...
19             </configuration>
20             <script>[HIVE-SCRIPT]</script>
21             <param>[PARAM-VALUE]</param>
22             ...
23         </hive>
24         <ok to="[NODE-NAME]" />
25         <error to="[NODE-NAME]" />
26     </action>
27     ...
28 </workflow-app>
  • Sqoop动作

Sqoop是一个能够在Hadoop和结构化存储系统之间进行数据的导入导出的工具,Sqoop动作的语法格式如下:

01 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.2">
02     ...
03     <action name="[NODE-NAME]">
04         <sqoop xmlns="uri:oozie:sqoop-action:0.2">
05             <job-tracker>[JOB-TRACKER]</job-tracker>
06             <name-node>[NAME-NODE]</name-node>
07             <prepare>
08                 <delete path="[PATH]" />
09                 ...
10                 <mkdir path="[PATH]" />
11                 ...
12             </prepare>
13             <configuration>
14                 <property>
15                     <name>[PROPERTY-NAME]</name>
16                     <value>[PROPERTY-VALUE]</value>
17                 </property>
18                 ...
19             </configuration>
20             <command>[SQOOP-COMMAND]</command>
21             <file>[FILE-PATH]</file>
22             ...
23         </sqoop>
24         <ok to="[NODE-NAME]" />
25         <error to="[NODE-NAME]" />
26     </action>
27     ...
28 </workflow-app>
  • Pig动作

pig动作可以启动运行pig脚本实现的Job,在工作流定义中配置的语法格式说明如下:

01 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.2">
02     ...
03     <action name="[NODE-NAME]">
04         <pig>
05             <job-tracker>[JOB-TRACKER]</job-tracker>
06             <name-node>[NAME-NODE]</name-node>
07             <prepare>
08                 <delete path="[PATH]" />
09                 ...
10                 <mkdir path="[PATH]" />
11                 ...
12             </prepare>
13             <job-xml>[JOB-XML-FILE]</job-xml>
14             <configuration>
15                 <property>
16                     <name>[PROPERTY-NAME]</name>
17                     <value>[PROPERTY-VALUE]</value>
18                 </property>
19                 ...
20             </configuration>
21             <script>[PIG-SCRIPT]</script>
22             <param>[PARAM-VALUE]</param>
23             ...
24             <param>[PARAM-VALUE]</param>
25             <argument>[ARGUMENT-VALUE]</argument>
26             ...
27             <argument>[ARGUMENT-VALUE]</argument>
28             <file>[FILE-PATH]</file>
29             ...
30             <archive>[FILE-PATH]</archive>
31             ...
32         </pig>
33         <ok to="[NODE-NAME]" />
34         <error to="[NODE-NAME]" />
35     </action>
36     ...
37 </workflow-app>
  • Fs动作

Fs动作主要是基于HDFS的一些基本操作,如删除路径、创建路径、移动文件、设置文件全乡等等。
语法格式:

01 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
02     ...
03     <action name="[NODE-NAME]">
04         <fs>
05             <delete path='[PATH]' />
06             ...
07             <mkdir path='[PATH]' />
08             ...
09             <move source='[SOURCE-PATH]' target='[TARGET-PATH]' />
10             ...
11             <chmod path='[PATH]' permissions='[PERMISSIONS]' dir-files='false' />
12             ...
13             <touchz path='[PATH]' />
14         </fs>
15         <ok to="[NODE-NAME]" />
16         <error to="[NODE-NAME]" />
17     </action>
18     ...
19 </workflow-app>
  • SSH动作

该动作主要是通过ssh登录到一台主机,能够执行一组shell命令,它在Oozie schema 0.2中已经被删除。
语法格式:

01 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
02     ...
03     <action name="[NODE-NAME]">
04         <ssh>
05             <host>[USER]@[HOST]</host>
06             <command>[SHELL]</command>
07             <args>[ARGUMENTS]</args>
08             ...
09             <capture-output />
10         </ssh>
11         <ok to="[NODE-NAME]" />
12         <error to="[NODE-NAME]" />
13     </action>
14     ...
15 </workflow-app>
  • Java动作

Java动作,是执行一个具有main入口方法的应用程序,在Oozie工作流定义中,会作为一个MapReduce Job执行,这个Job只有一个Map任务。我们需要指定NameNode、JobTracker的信息,还有配置一个Java应用程序的JVM选项参数(java-opts),以及传给主函数(arg)。
语法格式:

01 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
02     ...
03     <action name="[NODE-NAME]">
04         <java>
05             <job-tracker>[JOB-TRACKER]</job-tracker>
06             <name-node>[NAME-NODE]</name-node>
07             <prepare>
08                 <delete path="[PATH]" />
09                 ...
10                 <mkdir path="[PATH]" />
11                 ...
12             </prepare>
13             <job-xml>[JOB-XML]</job-xml>
14             <configuration>
15                 <property>
16                     <name>[PROPERTY-NAME]</name>
17                     <value>[PROPERTY-VALUE]</value>
18                 </property>
19                 ...
20             </configuration>
21             <main-class>[MAIN-CLASS]</main-class>
22             <java-opts>[JAVA-STARTUP-OPTS]</java-opts>
23             <arg>ARGUMENT</arg>
24             ...
25             <file>[FILE-PATH]</file>
26             ...
27             <archive>[FILE-PATH]</archive>
28             ...
29             <capture-output />
30         </java>
31         <ok to="[NODE-NAME]" />
32         <error to="[NODE-NAME]" />
33     </action>
34     ...
35 </workflow-app>
  • Sub-workflow动作

Sub-workflow动作是一个子流程的动作,主流程执行过程中,遇到子流程节点执行时,会一直等待子流程节点执行完成后,才能继续跳转到下一个要执行的节点。
语法格式:

01 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
02     ...
03     <action name="[NODE-NAME]">
04         <sub-workflow>
05             <app-path>[WF-APPLICATION-PATH]</app-path>
06             <propagate-configuration />
07             <configuration>
08                 <property>
09                     <name>[PROPERTY-NAME]</name>
10                     <value>[PROPERTY-VALUE]</value>
11                 </property>
12                 ...
13             </configuration>
14         </sub-workflow>
15         <ok to="[NODE-NAME]" />
16         <error to="[NODE-NAME]" />
17     </action>
18     ...
19 </workflow-app>
  • Shell动作

Shell动作可以执行Shell命令,并通过配置命令所需要的参数。它的语法格式:

01 <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.4">
02     ...
03     <action name="[NODE-NAME]">
04         <shell xmlns="uri:oozie:shell-action:0.2">
05             <job-tracker>[JOB-TRACKER]</job-tracker>
06             <name-node>[NAME-NODE]</name-node>
07             <prepare>
08                 <delete path="[PATH]" />
09                 ...
10                 <mkdir path="[PATH]" />
11                 ...
12             </prepare>
13             <configuration>
14                 <property>
15                     <name>[PROPERTY-NAME]</name>
16                     <value>[PROPERTY-VALUE]</value>
17                 </property>
18                 ...
19             </configuration>
20             <exec>[SHELL-COMMAND]</exec>
21             <argument>[ARGUMENT-VALUE]</argument>
22             <capture-output />
23         </shell>
24         <ok to="[NODE-NAME]" />
25         <error to="[NODE-NAME]" />
26     </action>
27     ...
28 </workflow-app>

表达式语言函数(Expression Language Functions)

Oozie除了可以使用Properties文件定义一些属性之外,还提供了一些内置的EL函数,能够方便地实现流程的定义和控制,下面我们分组列表说明:

  • 基本EL常量
常量名称 含义说明
KB 1KB,类型为long。
MB 1MB,类型为long。
GB 1GB,类型为long。
TB 1TB,类型为long。
PB 1PB,类型为long。
  • 基本EL函数
函数声明 含义说明
String firstNotNull(String value1, String value2) 返回value1和value2中不为null的值,若都为null则返回null
String concat(String s1, String s2) 连接字符串s1和s2,如果s1或s2为null值,则使用空字符串替换null值
String replaceAll(String src, String regex, String replacement) 满足正则表达式regex,则使用replace替换src字符串中匹配上的部分
String appendAll(String src, String append, String delimeter) 将src中的分隔符delimeter替换为append
String trim(String s) 去掉字符串两边的空格,如果s为null则返回空字符串
String urlEncode(String s) 对字符串s使用URL UTF-8进行编码
String timestamp() 返回UTC当前时间字符串,格式为YYYY-MM-DDThh:mm:ss.sZ
String toJsonStr(Map) Oozie 3.3支持,将Map转转成一个XML编码的JSON表示形式
String toPropertiesStr(Map) Oozie 3.3支持,将Map转转成一个XML编码的Properties表示形式
String toConfigurationStr(Map) Oozie 3.3支持,将Map转转成一个XML编码的Configuration表示形式
  • 工作流EL函数
函数声明 含义说明
String wf:id() 返回当前的工作流Job的ID
String wf:name() 返回当前的工作流Job的名称
String wf:appPath() 返回当前的工作流Job的应用路径
String wf:conf(String name) 返回当前的工作流Job的配置属性
String wf:user() 返回启动当前的工作流Job的用户名称
String wf:group() 返回当前的工作流Job的的用户组名称
String wf:callback(String stateVar) 返回当前的工作流Job的当前动作节点的回调URL
String wf:transition(String node) 返回转移节点,该节点是一个工作流动作节点触发的
String wf:lastErrorNode() 返回最后一个以ERROR状态退出的节点名称
String wf:errorCode(String node) 返回指定动作节点执行的错误码,如果没有则返回空
String wf:errorMessage(String message) 返回指定动作节点执行的错误信息,如果没有则返回空
int wf:run() 返回当前工作流Job的运行编号,正常的话返回0,如果执行过re-run则返回非0
Map wf:actionData(String node) 返回当前动作节点完成时输出的信息
int wf:actionExternalId(String node) 返回动作节点的外部ID
int wf:actionTrackerUri(String node) 返回跟踪一个动作节点的URI
int wf:actionExternalStatus(String node) 返回一个动作节点的状态
  • Hadoop EL常量
常量名称 含义说明
RECORDS Hadoop Record计数器组名称
MAP_IN Hadoop Mapper输入Record计数器名称
MAP_OUT Hadoop Mapper输出Record计数器名称
REDUCE_IN Hadoop Reducer输入Record计数器名称
REDUCE_OUT HadoopReducer输出Record计数器名称
GROUPS 1024 * Hadoop Mapper/Reducer输入Record组计数器名称
  • Hadoop EL函数
函数声明 含义说明
Map < String, Map > hadoop:counters(String node) 返回工作流Job某个动作节点的统计计数器信息,例如,MR的动作统计集合内容:
{
“ACTION_TYPE”: “MAP_REDUCE”,
“org.apache.hadoop.mapred.JobInProgress$Counter”: {
“TOTAL_LAUNCHED_REDUCES”: 1,
“TOTAL_LAUNCHED_MAPS”: 1,
“DATA_LOCAL_MAPS”: 1
},
“FileSystemCounters”: {
“FILE_BYTES_READ”: 1746,
“HDFS_BYTES_READ”: 1409,
“FILE_BYTES_WRITTEN”: 3524,
“HDFS_BYTES_WRITTEN”: 1547
},
“org.apache.hadoop.mapred.Task$Counter”: {
“REDUCE_INPUT_GROUPS”: 33,
“COMBINE_OUTPUT_RECORDS”: 0,
“MAP_INPUT_RECORDS”: 33,
“REDUCE_SHUFFLE_BYTES”: 0,
“REDUCE_OUTPUT_RECORDS”: 33,
“SPILLED_RECORDS”: 66,
“MAP_OUTPUT_BYTES”: 1674,
“MAP_INPUT_BYTES”: 1409,
“MAP_OUTPUT_RECORDS”: 33,
“COMBINE_INPUT_RECORDS”: 0,
“REDUCE_INPUT_RECORDS”: 33
}
}
则${hadoop:counters(“mr-node”)["FileSystemCounters"]["FILE_BYTES_READ"]},得到名称为mr-node的动作节点组的FILE_BYTES_READ计数器的值
  • HDFS EL函数
选项 含义说明
boolean fs:exists(String path) path是否存在
boolean fs:isDir(String path) path是否是目录
long fs:dirSize(String path) 如果path不是目录或者path是一个文件,则返回-1,否则返回该path下所有文件的字节数
long fs:fileSize(String path) 如果path是目录,则返回-1,否则返回该path下所有文件的字节数
long fs:blockSize(String path) 如果path不是文件或者不存在则返回-1,否则返回文件的块大小字节数

参考链接

分享到:
评论

相关推荐

    oozie介绍及使用详解

    Oozie工作流是以XML格式定义的,称为WDL(Workflow Definition Language)。一个工作流通常由一系列动作组成,这些动作可以是Hadoop作业,也可以是控制流程的动作,如决策节点、分支和合并节点。 1. **控制节点**:...

    hue平台oozie工作流操作sqoop,把mysql.pdf

    Oozie是一种用于管理和调度Hadoop作业的工作流调度系统,它允许用户通过定义一个工作流,将多个Hadoop任务组合起来按顺序执行,也可以设置条件触发执行。Oozie工作流由一系列的action节点组成,每个节点代表执行一个...

    oozie使用整理

    1. **定义语言**:Oozie 使用 hPDL(Hadoop Process Definition Language)语言来定义工作流,这是一种基于 XML 的流程定义语言。 2. **节点类型**: - **OozieAction**:支持各种类型的 Hadoop 任务(如 MapReduce...

    OozieWeb界面需要的组件

    **OozieWeb界面及其组件详解** 在大数据处理领域,Oozie是一个非常重要的工作流管理系统,主要用于协调Hadoop生态系统中的各种任务。OozieWeb界面是Oozie的用户交互部分,允许用户通过Web浏览器进行工作流的提交、...

    工作流oozie文档

    ### Oozie工作流引擎详解 #### 一、Oozie基本介绍 Oozie是一款由Apache基金会维护的开源工作流调度管理系统,主要用于管理和编排Hadoop生态系统中的各种任务。通过对不同类型的任务进行编排和调度,Oozie帮助...

    oozie-branch-4.1.zip

    《Apache Oozie 4.1 源码解析与Hadoop集成详解》 Apache Oozie 是一个工作流调度系统,用于管理 Hadoop 生态系统中的作业执行。它允许用户定义、调度和协调各种类型的任务,如 MapReduce、Pig、Hive、Spark 等,...

    oozie 可视化插件ext-2.2

    **Oozie可视化插件Ext-2.2详解** Oozie是Apache Hadoop生态中的一个工作流调度系统,用于管理Hadoop作业。它能够协调Hadoop生态系统中的各种任务,如MapReduce、Pig、Hive、Sqoop等。而Ext-2.2则是Oozie的一个可视...

    Oozie之JavaAction测试实例

    Oozie是一款开源的工作流调度系统,它允许用户定义复杂的Hadoop工作流,并以图形化的方式进行管理和监控。Oozie支持多种类型的Hadoop任务,包括MapReduce、Pig、Hive、Sqoop等,同时也支持通过Java Action执行自定义...

    尚硅谷大数据技术之azkaban1

    【Azkaban 大数据工作流调度系统详解】 在大数据处理领域,工作流调度系统扮演着至关重要的角色,它能够有效地管理和协调复杂的数据处理任务。本文将深入探讨Azkaban,一个由LinkedIn开发的批量工作流任务调度器,...

    面试大数据岗位 spark相关问题汇总

    - **Oozie/Azkaban**:用于构建工作流和任务调度,实现自动化数据处理流程。 **3.2 Spark与数据库的交互** - **OGG CDC**:Oracle GoldenGate for Big Data (OGG) 可以捕获Oracle数据库的变更数据,并将其发送到...

    coordinator设置定时任务

    Coordinator 可以帮助用户定义复杂的依赖关系,并且能够自动化地运行一系列的工作流程(workflows)。Coordinator 通过定义一个或多个工作流来实现这一目标,这些工作流可以被安排在特定的时间点运行,从而实现周期性...

    大数据开发指南(实际项目)

    ### 大数据开发指南知识点详解 #### 一、Hue 开发指南 ##### 1.1 上传数据文件 在大数据处理中,首先需要解决的是数据的上传问题。按照文档中的描述,数据文件通常存储在特定目录下并通过 Linux NFS 共享给其他...

    Shell执行/调用Java/Jar程序例子的实例详解

    本文主要介绍了如何使用Shell执行/调用Java/Jar程序的实例详解,通过三个步骤:Java程序、Shell脚本和ANT Xml代码,实现了一个独立的Java程序去监控Hadoop和Oozie。 一、Java程序 在Java程序中,我们可以编写一个...

    大数据经验分享

    9. **Apache Oozie**:Oozie是一个用于管理工作流程的调度系统,它可以定义、编排和管理Hadoop上的复杂工作流。通过Oozie,用户可以轻松地设置和监控一系列依赖任务的执行顺序和状态。 以上就是关于大数据的基本...

    hadoop-2.7.7-centos-6.7.tar.gz

    此外,Hadoop的生态系统还包括HBase(分布式数据库)、Hive(数据仓库工具)、Pig(数据流处理)、Oozie(工作流调度器)等,它们共同构建了一个强大的大数据处理平台。理解并掌握这些组件的使用,对于提升大数据...

    Hadoop概述&集群搭建.md

    - **数据交换和工作流管理系统**:如Chukwa、Flume、Sqoop(数据导入导出工具)以及Oozie(工作流调度器)等。 #### 三、环境准备 为了搭建Hadoop集群,需要先准备好必要的软件环境。 - **安装虚拟机软件**:...

    Hadoop实战+教程

    8. **Oozie**:工作流调度系统,可以定义复杂的Hadoop作业依赖关系。 #### 四、Hadoop安装与配置 1. **环境准备**:安装Java,配置SSH免密码登录等。 2. **单机模式安装**:适用于测试和开发环境,仅运行在一个...

    hadoop基础入门

    - **Oozie**:一个工作流调度框架,用于自动化执行复杂的任务流程。 - **Sqoop**:用于在Hadoop和传统的关系型数据库之间进行数据传输。 - **Flume**:一个高可靠、高性能的日志采集系统。 #### 三、分布式系统概述...

    hadoop开发者 共三期

    Hadoop生态系统包括许多相关项目,如HBase(分布式数据库)、Hive(数据仓库工具)、Pig(数据流处理)、Oozie(工作流调度器)和Zookeeper(分布式协调服务)。这些工具与Hadoop紧密配合,提供更丰富的功能。 5. ...

Global site tag (gtag.js) - Google Analytics