oozie可以用fork和join节点进行多任务并行处理,同时fork和join也是同时出现,缺一不可.

语法:

  1. <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">
  2. ...
  3. <fork name="[FORK-NODE-NAME]">
  4. <path start="[NODE-NAME]" />
  5. ...
  6. <path start="[NODE-NAME]" />
  7. </fork>
  8. ...
  9. <join name="[JOIN-NODE-NAME]" to="[NODE-NAME]" />
  10. ...
  11. </workflow-app>

官网给出的例子:

  1. <workflow-app name="sample-wf" xmlns="uri:oozie:workflow:0.1">
  2. ...
  3. <fork name="forking">
  4. <path start="firstparalleljob"/>
  5. <path start="secondparalleljob"/>
  6. </fork>
  7. <action name="firstparallejob">
  8. <map-reduce>
  9. <job-tracker>foo:8021</job-tracker>
  10. <name-node>bar:8020</name-node>
  11. <job-xml>job1.xml</job-xml>
  12. </map-reduce>
  13. <ok to="joining"/>
  14. <error to="kill"/>
  15. </action>
  16. <action name="secondparalleljob">
  17. <map-reduce>
  18. <job-tracker>foo:8021</job-tracker>
  19. <name-node>bar:8020</name-node>
  20. <job-xml>job2.xml</job-xml>
  21. </map-reduce>
  22. <ok to="joining"/>
  23. <error to="kill"/>
  24. </action>
  25. <join name="joining" to="nextaction"/>
  26. ...
  27. </workflow-app>

工作时写的:

  1. <workflow-app name="java-example1" xmlns="uri:oozie:workflow:0.5">
  2. <start to="forking"/>
  3. <fork name="forking">
  4. <path start="firstparalleljob"/>
  5. <path start="secondparalleljob"/>
  6. </fork>
  7. <action name="firstparalleljob">
  8. <shell xmlns="uri:oozie:shell-action:0.1">
  9. <job-tracker>${jobTracker}</job-tracker>
  10. <name-node>${nameNode}</name-node>
  11. <configuration>
  12. <property>
  13. <name>mapred.job.queue.name</name>
  14. <value>${queueName}</value>
  15. </property>
  16. </configuration>
  17. <exec>java</exec>
  18. <argument>-cp</argument>
  19. <argument>test1.OzzieTest1</argument>
  20. <argument>-jar</argument>
  21. <argument>test.jar</argument>
  22. </shell>
  23. <ok to="joining"/>
  24. <error to="fail"/>
  25. </action>
  26. <action name="secondparalleljob">
  27. <shell xmlns="uri:oozie:shell-action:0.1">
  28. <job-tracker>${jobTracker}</job-tracker>
  29. <name-node>${nameNode}</name-node>
  30. <configuration>
  31. <property>
  32. <name>mapred.job.queue.name</name>
  33. <value>${queueName}</value>
  34. </property>
  35. </configuration>
  36. <exec>java</exec>
  37. <argument>-cp</argument>
  38. <argument>test1.OzzieTest</argument>
  39. <argument>-jar</argument>
  40. <argument>test.jar</argument>
  41. </shell>
  42. <ok to="joining"/>
  43. <error to="fail"/>
  44. </action>
  45. <join name="joining" to="end"/>
  46. <kill name="fail">
  47. <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
  48. </kill>
  49. <end name="end"/>
  50. </workflow-app>

fork节点把任务切分成多个并行任务,join则合并多个并行任务。fork和join节点必须是成对出现的。join节点合并的任务,必须是通一个fork出来的子任务才行。

oozie fork join结点的更多相关文章

  1. JAVA中的Fork/Join框架

    看了下Java Tutorials中的fork/join章节,整理下. 什么是fork/join框架 fork/join框架是ExecutorService接口的一个实现,可以帮助开发人员充分利用多核 ...

  2. JAVA并行框架:Fork/Join

    一.背景 虽然目前处理器核心数已经发展到很大数目,但是按任务并发处理并不能完全充分的利用处理器资源,因为一般的应用程序没有那么多的并发处理任务.基于这种现状,考虑把一个任务拆分成多个单元,每个单元分别 ...

  3. 聊聊并发(八)——Fork/Join框架介绍

      作者 方腾飞 发布于 2013年12月23日 | 被首富的“一个亿”刷屏?不如定个小目标,先把握住QCon上海的优惠吧!2 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件分享 ...

  4. fork/join使用示例

    fork/join框架是用多线程的方式实现分治法来解决问题.fork指的是将问题不断地缩小规模,join是指根据子问题的计算结果,得出更高层次的结果. fork/join框架的使用有一定的约束条件: ...

  5. Java Concurrency - Fork/Join Framework

    Normally, when you implement a simple, concurrent Java application, you implement some Runnable obje ...

  6. Java 7 Fork/Join 并行计算框架概览

    应用程序并行计算遇到的问题 当硬件处理能力不能按摩尔定律垂直发展的时候,选择了水平发展.多核处理器已广泛应用,未来处理器的核心数将进一步发布,甚至达到上百上千的数量.而现在 很多的应用程序在运行在多核 ...

  7. JDK7新特性之fork/join框架

    The fork/join framework is an implementation of the ExecutorService interface that helps you take ad ...

  8. Java并发——Fork/Join框架

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/4631466. ...

  9. 转:聊聊并发(八)——Fork/Join框架介绍

    1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架. 我们再通过 ...

随机推荐

  1. pyquery的简单操作

    一.初始化 1.html初始化 html = ''' <div> <ul> <li class="item-0">first item</ ...

  2. python爬虫之User-Agent用户信息

    python爬虫之User-Agent用户信息 爬虫是自动的爬取网站信息,实质上我们也只是一段代码,并不是真正的浏览器用户,加上User-Agent(用户代理,简称UA)信息,只是让我们伪装成一个浏览 ...

  3. C++ GUI Qt4编程(09)-3.3spreadsheet-toolbar

    1. C++ GUI Qt4编程第三章,增加工具栏.状态栏和快捷键. 2. mainwindow.h /**/ #ifndef MAINWINDOW_H #define MAINWINDOW_H #i ...

  4. PIE SDK矢量透明度、标注控制

    1. 功能简介 透明度和标注是矢量图层的相关属性:图层透明值是0-100间的整数,标注是显示在地图上的文字信息,它是出图中不可或缺的重要元素.标注的样式丰富,并且放置位置灵活. 2. 功能实现说明 2 ...

  5. css布局,面试时经常问的布局

    左侧宽固定200,高度自适应,右侧的框宽度都自适应<style> * { margin: 0; padding: 0; } html { height: auto; } body { ma ...

  6. (转)shell--read命令的选项及用法

    shell--read命令 原文:https://www.cnblogs.com/lottu/p/3962921.html http://blog.csdn.net/skdkjzz/article/d ...

  7. 求入栈顺序为1234……N的序列的所有可能的出栈序列

    class Program { private static void Fun(int x, int n, Stack<int> stack, List<int> outLis ...

  8. 6个Unity 开源项目分享!

    http://gad.qq.com/article/detail/38279?sessionUserType=BFT.PARAMS.249034.TASKID&ADUIN=991655778& ...

  9. 动态替换animator的研究

    http://blog.csdn.net/tonnychu/article/details/49903657 http://blog.csdn.net/tlrainty/article/details ...

  10. 安装 fedora 之后

    下载zsh,并安装oh-my-zsh dnf install zsh -y 到github的oh-my-zsh上按照教程安装oh-my-zsh,配置主题为minimal,这个是个人比较喜欢的主题,因为 ...