【问题标题】:apache nifi - how to execute process group one after the otherapache nifi - 如何一个接一个地执行进程组
【发布时间】:2017-01-30 09:32:12
【问题描述】:

我创建了 3 个进程组。我希望在第一个进程组完成后执行第二个进程组,在第二个进程组完成后执行第三个进程组。

请问有什么解决办法吗?

【问题讨论】:

    标签: hadoop apache-nifi hdf


    【解决方案1】:

    最佳做法是将“Wait”和“Notify”处理器配对在一起,以便在其他流发送 Notify 事件之前,不会释放任何具有严格等待条件的流。

    在您的示例中,“进程组 1”将负责发送通知消息,而“进程组 2 和 3”将各自具有相应的等待处理器,这些处理器基本上循环,直到第一个进程组发送它已完成的通知。

    【讨论】:

      【解决方案2】:

      Apache NiFi 是围绕连续流假设设计的。使连续流适应作业调度可能会很尴尬和困难,因为它取决于您提供一个进程组何时“完成”的定义。 NiFi 本身没有进程组的概念,它永远不会完成,只会停止或运行。您可能可以做一些事情:

      • 将每个进程组的输出合并到一个单独的流文件中,然后传递给下一个进程组(例如,使用MergeContent)。
      • 使用 CRON 调度在每个组的入口处调度一个处理器,具体取决于同步流的时间。
      • 构建一个自定义处理器(或ExecuteScript),轮询前一个进程组的已完成条件。

      所有这些都归结为同一个问题 - 你怎么知道上一组“完成”了?

      【讨论】:

        【解决方案3】:

        每个进程组都有与其他进程组连接的关系。

        尝试将关系从第一个进程组拖到第二个进程组,从第二个进程组拖到第三个进程组。

        它要求您在第一个进程组中创建输出端口以连接第二个处理器的输入端口。如果您不想在第二个进程组中使用第一个进程组的输出,那么只需在第二个进程组中使用“putFile”处理器将其写入某个目录,并为我们的第二个进程组创建一个独立的流程。

        试试这个,如果我能找到其他方法,我会告诉你。

        【讨论】:

        • apache-nifi 用户指南中明确提到了端口的使用: 端口:使用一个或多个进程组构建的数据流需要一种将进程组连接到其他数据流组件的方法。这是通过使用端口来实现的。 DFM 可以将任意数量的输入端口和输出端口添加到进程组并适当地命名这些端口。 nifi.apache.org/docs/nifi-docs/html/user-guide.html
        猜你喜欢
        • 2023-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-03
        • 1970-01-01
        • 2014-07-15
        • 1970-01-01
        • 2020-03-13
        相关资源
        最近更新 更多