2017-04-14 92 views
0

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

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

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

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

在NiFi上完成所有工作的好处是可以在一个地方从源代码到目的地直观地呈现整个数据过程。在流量复杂的情况下,对维护非常重要。

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


PS - 我读过这样的:“Is Nifi having batch processing?” - 但我的问题的目的是“在NiFi批量处理”不同的感觉比一个在附加问题提出

回答

0

你是正确的您将会在流程画布上显示时间表触发器,但是NiFi并不是作为调度器/协调器设计的。 Here is a comparison of some scheduler options

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

+0

感谢您的回答。我会尽力澄清我的问题:我知道NiFi的优势(以及为获得数据而通过NiFi流动的数据),并打算在相关时使用它们。但是,在许多使用情况下,我想运行批处理流程,并想知道我会错过什么,如果我这样做,我会在哪里失败。 – giladovich