use*_*645 4 concurrency throttling oozie
假设我们有一个Oozie工作流,它有一个复制操作节点,然后是一个Shell操作节点.我可以启动这样一个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
Run Code Online (Sandbox Code Playgroud)
由于Shell操作由one-mapper-zero-reducer MR作业运行,因此您将无法获得比集群上的映射插槽数更高的Oozie工作流并发性.
如果您有许多工作流实例,那么最好的机制是使用Oozie协调器.这将跟踪每个实例的完成情况并轻松管理并发性.Oozie协调器有一个<concurrency>标签,用于控制工作流的并行执行的实例数,以及一个<throttle>标签,用于控制在有一个开始的自由并发之前,有多少实例进入等待状态.
请参阅:https://oozie.apache.org/docs/3.1.3-incubating/CoordinatorFunctionalSpec.html#a6.3._Synchronous_Coordinator_Application_Definition
请注意,Oozie协调器的默认行为是在每次轮询是否应创建新实例之间等待5分钟.如果您的工作流程在不到5分钟的时间内运行,那么该过程将在此时间间隔内出现瓶颈.您可以使用文件中的oozie.service.CoordMaterializeTriggerService.lookup.interval属性(以秒为单位)更改此值oozie-site.xml.
| 归档时间: |
|
| 查看次数: |
9823 次 |
| 最近记录: |