2014-02-06 75 views
4

让我们说我们有一个Oozie工作流程,它有一个复制操作节点,然后是一个Shell操作节点。我可以启动这种OOzie工作流程的多个实例并同时运行它们吗?并发数如何能够达到数千甚至数百万的水平。这是可能的,甚至Oozie支持高级并发性?运行Oozie工作流的并发性:多少以及如何节流

如果不是,那么我们将不得不考虑限制并强制限制Oozie工作流实例的数量。我们希望在服务器/ Oozie方面(基本上使用Oozie的所有软件功能)进行节流,而不是在客户端/被调用方。例如,我们有一个像这样的线条的巨大启动脚本。我们想要一次性运行它,然后让Oozie找出如何将所有这些实例限制在自己身上。我们不想将它分成多个小块,然后一次开始一块。

oozie job -oozie http://myhost.com:11000/oozie -config job1.properties -run 
oozie job -oozie http://myhost.com:11000/oozie -config job2.properties -run 
...... 
oozie job -oozie http://myhost.com:11000/oozie -config job1000000.properties -run 

回答

6

因为一个Shell操作由一个映射器,零减速MR作业中运行你将不能够有较高的Oozie的工作流并发比地图的时隙数群集上。

如果您有很多工作流程需要通过,那么最好的机制就是使用Oozie协调器。这将跟踪每个实例的完成情况并轻松管理并发。 Oozie协调员有一个控制工作流程并行执行多少个实例的<concurrency>标记,以及一个用于控制有多少实例进入等待状态的标记,用于控制有多少实例在有空闲并发的情况下启动。

参见:https://oozie.apache.org/docs/3.1.3-incubating/CoordinatorFunctionalSpec.html#a6.3._Synchronous_Coordinator_Application_Definition

注意的Oozie的协调器的默认行为是等待的新实例是否应该创建每个轮询之间的5分钟。如果您的工作流程运行时间少于5分钟,则此过程将在此间隔内出现瓶颈。您可以使用oozie-site.xml文件中的oozie.service.CoordMaterializeTriggerService.lookup.interval属性(以秒为单位)更改此属性。

+0

伟大的工作杰里米!非常感谢!我也发现了这两个配置,节流和并发,以及试验都讲述了同样的故事。 最后一个问题,你确定协调员可以在秒级别上进行配置吗?从这个链接https://oozie.apache.org/docs/3.1.3-incubating/CoordinatorFunctionalSpec.html#a4.4._Frequency_and_Time-Period_Representation,1分钟是我们可以走的最快的频率? – user908645

+0

分钟是最低限度...我尝试了秒,但没有运气。 – ChikuMiku