NIFI:限制NIFI群集中NIFI处理器的并发任务数

时间:2017-08-23 14:32:42

标签: java apache-nifi kylo

这个问题说明了一切。我怎样才能做以下事情之一:

  • 如何限制群集范围内一个处理器运行的并发任务数?
  • 节点是否有任何唯一且短的ID,我运行?我可以使用这些ID附加到要加载的database-table-name(请参阅下面的详细信息),并为每个连接添加一个独占表。

我有一个NIFI集群和一个自编写的专用处理器,它通过JDBC将大量数据加载到数据库中(每秒最多20Mio行)。它使用了一些特定于数据库供应商的调优技巧,在我的特定情况下非常快。其中一个技巧需要为每个连接加载一个独占的空表。

目前,我的处理器在NIFI-Cluster中为每个节点打开一个连接(它从DBCPConnectionPool获取连接)。在群集中有大约90-100个节点,我可以获得90-100个连接 - 所有这些连接都是同时批量加载数据。

我使用的是NIFI 1.3.0.0

非常感谢任何帮助或评论。很抱歉没有显示任何代码。大约有700行没有真正帮助解决这个问题。但我打算把它放在Git上,作为开源项目Kylo的一部分。

1 个答案:

答案 0 :(得分:4)

在NiFi中分解任务的常用方法是将流文件拆分为主节点上的多个文件。然后其他节点将拉出其中一个流文件并进行处理。

在您的情况下,每个文件都包含从表中提取的一系列值。让我们说你有一百行,只想要3个节点来提取数据。因此,您要创建3个流文件,每个文件都有不同的属性值:

  1. start-row-id = 1,end-row-id = 33
  2. start-row-id = 34,end-row-id = 66
  3. start-row-id = 67,end-row-id = 100
  4. 然后,节点将从远程进程组或队列(例如JMS或SQS)中获取流文件。只有3个流文件,因此从连接加载数据不超过3个节点。