【问题标题】:NIFI: limit number of concurrent tasks of a NIFI processor in a NIFI-ClusterNIFI:限制 NIFI 集群中 NIFI 处理器的并发任务数
【发布时间】:2017-08-23 14:32:42
【问题描述】:

问题说明了一切。我该如何做以下事情之一:

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

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

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

我使用的是 NIFI 1.3.0.0

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

【问题讨论】:

  • 以 UUID 后缀或类似名称命名的临时表是否适用于您正在使用的 JDBC 批量上传方法?
  • 类似 UUID 但更短的东西肯定会有所帮助。原样的 UUID 太长,需要重新格式化才能将其用作表名。知道如何将 UUID 缩短到 10 个或更少的字符吗?
  • 我不清楚为什么表名的长度或格式很重要,如果它是一个从不被人或程序查询的临时表,即该表用于批量加载但然后处理所有记录并将其移动到另一个表。如果数据库对名称有格式限制,您总是可以从 uuid 字符串中删除破折号。如果您真的只是更喜欢较短的名称,我想您可以想出一个命名公式来满足您的需求,例如 hostname_threadId 或使用Thread.currentThread().getId() 的类似名称
  • 好点。表名的长度限制为 30 个字符,我必须使用两个不同的连接(一个用于加载,一个用于 ELT),因此临时表不起作用。但你是对的。我现在要做的是生成一个随机数的 10 个字符,其中包含表名中所有允许的字符(这是 0-9 和 a-z)。每次我都会得到一个新号码,为每个节点安排处理器。所以这在大多数情况下应该有效。如果真的两个会话获得相同的数字,那么前面运行的脚本将失败,处理器将屈服并再次重试。谢谢你的想法!
  • 感谢@jboi 的上下文。我认为你在正确的轨道上......随机字符串在表名冲突时重试。表名中是否允许使用大写字母,表名是否区分大小写?如果是这样,您可能会想出一个基于 base64 编码 UUID 的方案。那将是 22 个字符,您必须用字符替换 [+,]

标签: java apache-nifi kylo


【解决方案1】:

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

在您的情况下,每个文件都将包含一系列要从表中提取的值。假设您有 100 行,并且只想要 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

然后节点会从远程进程组或队列(例如 JMS 或 SQS)中获取流文件。只有 3 个流文件,因此从连接加载数据的节点不超过 3 个。

【讨论】:

  • 在我得到这个想法之前必须阅读你的答案两次。您的程序将产生额外的积极影响:我当前的设计需要 Nifi 处理的每秒 20Mio 流文件。意味着,无论如何将它们打包在一起会更有效率。您知道任何可以进行这种打包或分组的处理器吗?值得为社区写一篇吗?
  • 并非如此。您可以获取行 ID 列表,使用 SplitContent 将它们拆分为单独的流文件,然后可以选择使用 MergeContent 重新组合它们。否则你可以使用 ExecuteScript 处理器来生成你需要的流文件。
猜你喜欢
  • 2023-02-14
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多