Oozie工作流引擎详解:从安装到商品订单处理

需积分: 9 2 下载量 123 浏览量 更新于2024-09-07 收藏 4.66MB PPTX 举报
"09.大数据工作流引擎Oozie.pptx.pptx" Oozie是由Cloudera公司贡献给Apache的开源工作流引擎,专为Hadoop平台设计,用于管理和调度Hadoop作业。它是一个Web应用程序,提供了一个集中式服务来管理Hadoop生态系统中的各种作业,如Hadoop MapReduce、Pig、Hive、Sqoop等。Oozie的核心功能是工作流调度,即根据预设的规则和逻辑自动化作业的执行。 ### 第一部分:什么是Oozie与安装配置 Oozie的工作流(WorkFlow)是工作流程的计算模型,它定义了工作如何按照特定顺序和逻辑进行。工作流的主要目的是通过计算机系统在多个参与者之间自动传递工作,以实现某个业务目标。例如,员工请假流程可以通过Oozie自动化处理。 Oozie的安装配置涉及配置Hadoop环境、设置Oozie服务器、创建数据库连接以及配置Oozie服务。在配置过程中,需要确保Oozie能够访问到Hadoop集群,并且在运行时可以正确调度和监控作业。 ### 第二部分:定义Oozie的节点 Oozie工作流由不同类型的节点组成,包括: 1. **启动控制节点(start)**:工作流的起始点。 2. **末端控制节点(end)**:工作流的结束点。 3. **停止控制节点(kill)**:当工作流遇到错误时,执行的节点,通常用于终止工作流。 4. **决策控制节点(decision)**:根据条件分支执行不同的任务。 5. **分支-联接控制节点(fork/join)**:允许工作流并发执行多个任务,然后在join节点汇合。 6. **动作节点**:执行实际任务,如Fs(HDFS操作)、JavaAction(执行Java程序)、MapReduce、Hive、Sqoop和Pig等。 例如,Fs节点可以用于读写HDFS上的文件,而JavaAction则能执行自定义的Java程序。当使用SqoopAction导入数据时,需要注意将相应的JDBC驱动添加到工作流应用的库目录中,避免可能导致死锁的问题。为解决这类问题,可以在`yarn-site.xml`中配置YARN使用公平调度器(FairScheduler)。 ### 第三部分:综合案例——处理商品订单 在实际应用中,Oozie可以处理复杂的业务流程。比如,处理商品订单的过程可能包括以下步骤: 1. **Sqoop Import**:从Oracle数据库中使用Sqoop导入订单数据到HDFS。 2. **MapReduce计算**:对导入的数据进行处理,例如统计销售额、用户行为分析等。 3. **Sqoop Export**:将处理后的结果再次导出到Oracle数据库,供后续业务系统使用。 这个案例展示了Oozie如何将不同组件(如数据库和大数据处理工具)集成到一个统一的工作流中,实现数据的高效处理和分析。 Oozie作为Hadoop生态系统的重要组成部分,为企业提供了强大的作业管理和工作流调度能力,简化了大数据处理的复杂性,提高了工作效率。在实际应用中,需要根据具体业务需求灵活配置和使用Oozie节点,确保工作流的顺畅执行。

Stdoutput Warning: /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/bin/../lib/sqoop/../accumulo does not exist! Accumulo imports will fail. Stdoutput Please set $ACCUMULO_HOME to the root of your Accumulo installation. Exit code of the Shell command 1 <<< Invocation of Shell command completed <<< java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.oozie.action.hadoop.LauncherAM.runActionMain(LauncherAM.java:410) at org.apache.oozie.action.hadoop.LauncherAM.access$300(LauncherAM.java:55) at org.apache.oozie.action.hadoop.LauncherAM$2.run(LauncherAM.java:223) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875) at org.apache.oozie.action.hadoop.LauncherAM.run(LauncherAM.java:217) at org.apache.oozie.action.hadoop.LauncherAM$1.run(LauncherAM.java:153) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875) at org.apache.oozie.action.hadoop.LauncherAM.main(LauncherAM.java:141) Caused by: org.apache.oozie.action.hadoop.LauncherMainException at org.apache.oozie.action.hadoop.ShellMain.run(ShellMain.java:76) at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:104) at org.apache.oozie.action.hadoop.ShellMain.main(ShellMain.java:63) ... 16 more Failing Oozie Launcher, Main Class [org.apache.oozie.action.hadoop.ShellMain], exit code [1] Oozie Launcher, uploading action data to HDFS sequence file: hdfs://nameservice0/user/admin/oozie-oozi/0000118-230724100647793-oozie-oozi-W/shell-af10--shell/action-data.seq Stopping AM Callback notification attempts left 0 Callback notification trying http://nn.hdfs.offline:11000/oozie/callback?id=0000118-230724100647793-oozie-oozi-W@shell-af10&status=FAILED Callback notification to http://nn.hdfs.offline:11000/oozie/callback?id=0000118-230724100647793-oozie-oozi-W@shell-af10&status=FAILED succeeded Callback notification succeeded

2023-07-25 上传