使用NiFi来安排Hadoop批处理过程

时间:2017-04-14 08:44:49

标签: hadoop batch-processing oozie apache-nifi

根据NiFi's homepage,它“支持强大且可扩展的数据路由,转换和系统中介逻辑的有向图”。

我在过去几个月里一直在玩NiFi,不禁想知道为什么不用它来安排批处理过程。

假设我有一个用例,其中数据流入Hadoop,由一系列Hive \ MapReduce作业处理,然后导出到某些外部NoSql数据库以供某些系统使用。

使用NiFi将数据摄取并流入Hadoop是NiFi的用例。
然而,使用Nifi来安排Hadoop上的作业(“Oozie-like”)是一个我没有遇到其他人实现的用例,并且由于它似乎完全可以实现,我试图了解是否有原因不这样做。

在NiFi上做到这一切的好处是,人们将在一个地方获得从源到目的地的整个数据过程的直观表示。在流量复杂的情况下,维护非常重要。

换句话说 - 我的问题是:是否有理由不将NiFi用作批处理过程的调度程序\协调员?如果是这样 - 在这种用例中可能出现什么问题?

PS - 我读过这个:“Is Nifi having batch processing?” - 但我的问题是针对“NiFi中的批处理”的不同意义而不是附带问题中提出的意义

1 个答案:

答案 0 :(得分:0)

您是正确的,如果流程画布上存在计划触发器,您将拥有流程中所有步骤的简明直观表示,但NiFi并未设计为调度程序/协调程序。 Here is a comparison of some scheduler options

使用NiFi控制日程安排感觉就像是一个寻找问题的“锤子”解决方案。它将减少以编程方式定义这些计划或从外部工具与它们交互的难易程度。从理论上讲,您可以定义计划格式,从文件,数据源,端点等将其读入NiFi,并使用ExecuteStreamCommandExecuteScriptInvokeHTTP处理器启动批处理处理。然而,这感觉就像引入了不必要的中间步骤。如果合并&可视化就是您的目标,您可以让监控流程段从其原始格式(Oozie,XML等)中获取这些计划定义,并在NiFi中显示它们,而不会让NiFi负责定义和执行计划。