NIFI-调度器详解
1.简介
NIFI每个处理器有多种调度规则,这里进行一下详细的介绍和说明。
2.调度器设置界面
image3.模式介绍
3.1 Timer driven
这是默认模式。处理器将安排定期运行。运行处理器的时间间隔由“运行时间表”选项定义(见下文)。
3.2 Event driven
选择此模式时,将触发处理器以由事件运行,并且当FlowFiles进入连接此处理器的Connections时,将发生该事件。此模式目前被认为是实验性的,并非所有处理器都支持。选择此模式时,“运行计划”选项不可配置,因为处理器未被触发定期运行,而是作为事件的结果。此外,这是“并发任务”选项可以设置为0的唯一模式。在这种情况下,线程数仅受管理员配置的事件驱动线程池的大小限制。
3.3 CRON驱动
当使用CRON驱动的调度模式时,处理器被安排定期运行,类似于定时器驱动的调度模式。然而,CRON驱动模式以增加配置的复杂性为代价提供了显着更大的灵活性。CRON驱动的调度值是由六个必需字段和一个可选字段组成的字符串,每个字段由空格分隔。这些字段是:
Field | Valid values |
---|---|
Seconds | 0-59 |
Minutes | 0-59 |
Hours | 0-23 |
Day of Month | 1-31 |
Month | 1-12 or JAN-DEC |
Day of Week | 1-7 or SUN-SAT |
Year (optional) | empty, 1970-2099 |
通常通过以下方式之一指定值:
- 数字:指定一个或多个有效值。您可以使用逗号分隔列表输入多个值。
- 范围:使用 <number>-<number> 语法指定范围。
- 增量:使用 <start value>/<increment>语法指定增量。例如,在“分钟”字段中,0/15表示分钟 0,15,30 和 45。
- * - 表示所有值对该字段都有效。
- ? - 表示未指定特定值。此特殊字符在“星期几”和“星期几”字段中有效。
- L - 您可以将L附加到星期几值中的一个,以指定该月中该日的最后一次出现。例如,1L表示该月的最后一个星期日。
4.Concurrent Tasks
Scheduling选项卡提供名为'Concurrent Tasks'的配置选项。这可以控制处理器将使用的线程数。换句话说,它控制此处理器应同时处理多少个FlowFiles。增加此值通常会使处理器在相同的时间内处理更多数据。但是,它通过使用其他处理器无法使用的系统资源来实现此目的。这基本上提供了处理器的相对权重 - 它控制应该将多少系统资源分配给此处理器而不是其他处理器。该字段适用于大多数处理器。但是,某些类型的处理器只能使用单个“并发”任务进行调度。
5.Run Schedule
"运行计划”指示应该安排处理器运行的频率。此字段的有效值取决于所选的调度策略(参见上文)。如果使用事件驱动的调度策略,则此字段不可用。使用定时器驱动的调度策略时,该值是由数字后跟时间单位指定的持续时间。例如,1 second
或5 mins
。默认值0 sec
表示处理器应尽可能频繁地运行,只要它有要处理的数据即可。这适用于0任何持续时间,而不管时间单位(即,0 sec
,0 mins
,0 days
)。有关适用于CRON驱动的调度策略的值的说明,请参阅CRON驱动的调度策略本身的说明。
6.Execution
执行设置用于确定处理器将被调度执行的节点。选择“所有节点”将导致在集群中的每个节点上调度此处理器。选择“主节点”将导致此处理器仅在主节点上进行调度。已为“主节点”执行配置的处理器由处理器图标旁边的“P”标识:
7.Run Duration
“调度”选项卡的右侧包含一个用于选择“运行持续时间”的滑块。这可以控制处理器每次触发时应安排运行的时间。在滑块的左侧,标记为“较低延迟”,而右侧标记为“较高吞吐量”。处理器完成运行后,必须更新存储库才能将FlowFiles传输到下一个Connection。更新存储库的成本很高,因此在更新存储库之前可以立即完成的工作量越多,处理器可以处理的工作量就越多(吞吐量越高)。但是,这意味着在上一个Process更新此存储库之前,下一个Processor无法开始处理这些FlowFiles。结果是,延迟时间会更长(从开始到结束处理FlowFile所需的时间会更长)。因此,滑块提供了一个频谱,DFM可以从中选择支持较低延迟或较高吞吐量。