在nifi中,firstinfirstoutpriorizer和oldestflowfilefirstpriorizer有什么区别

s6fujrry  于 2021-06-01  发布在  Hadoop
关注(0)|答案(2)|浏览(358)

用户指南https://nifi.apache.org/docs/nifi-docs/html/user-guide.html 有下面的优先顺序的细节,你能帮我理解这些是如何不同的,并提供任何实时的例子。
firstinfirstoutpriorizer:给定两个流文件,首先到达连接的流文件将首先被处理。
oldestflowfilefirstprioritizer:给定两个流文件,将首先处理数据流中最旧的一个这是在未选择优先顺序时使用的默认方案。'

olmpazwi

olmpazwi1#

假设两个处理器a和b都连接到一个漏斗,然后漏斗连接到处理器c。
场景1-漏斗和处理器c之间的连接具有先进先出优先权。
在这种情况下,漏斗和连接c之间的队列中的流文件将严格按照它们到达队列的顺序进行处理。
场景2-漏斗和处理器c之间的连接具有最旧的流文件优先权。
在这种情况下,漏斗和连接c之间的队列中可能已经有流文件,但其中一个处理器将流传输到该队列,该队列比该队列中的所有流文件都旧,它将跳到前面。
您可以想象,一些流文件来自流的不同部分,处理这些流文件所需的时间比其他流文件长,但它们最终都流入同一队列,因此这些来自较长处理部分的流文件被认为是较旧的。

byqmnocz

byqmnocz2#

apachenifi处理来自许多不同来源的数据,并可以通过许多不同的处理器路由数据。让我们使用以下示例(忽略处理器类型,只关注标题):

首先,根据源/摄取点,传入数据的相对速率可能不同。在本例中,数据库轮询每分钟进行一次,而http轮询每5秒进行一次,文件跟踪每秒钟进行一次。因此,即使一个数据库记录比另一个记录“早”59秒,如果它们在处理器的同一执行中被捕获,它们也将同时进入nifi,并且流文件(取决于拆分)将具有相同的起始时间。
如果一些进入系统的数据是“脏的”,它会被路由到一个处理器“清理”它。此处理器需要3秒钟才能执行。
如果“clean data”中的clean关系和success关系都直接转到“process data”,则您将无法控制处理这些流文件的顺序。但是,因为有一个漏斗可以合并这些队列,所以您可以在排队的队列上选择一个优先顺序,并控制该顺序。您是希望第一个流文件进入先处理的队列,还是希望先前进入nifi的流文件先处理,即使它们在较新的流文件之后进入此特定队列?
这是一个人为的示例,但您可以将其应用于灾难恢复情况,其中某些数据在某个时间窗口内丢失,现在正在恢复,或者处理对时间敏感的数据的流在某个时间段后无效。如果使用反压或以大批量(慢批量)获取数据,您可以看到在某些情况下,最早的第一批数据价值较低,反之亦然。

相关问题