hadoop - 使用 NiFi 调度 Hadoop 批处理

标签 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 中的批处理”不同的意义

最佳答案

您是正确的,如果流程 Canvas 上存在计划触发器,您将对流程中的所有步骤有一个简洁的可视化表示,但 NiFi 并非设计为计划程序/协调程序。 Here is a comparison of some scheduler options .

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

关于hadoop - 使用 NiFi 调度 Hadoop 批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43408179/

相关文章:

c# - RabbitMQ 批量消费消息并一次性确认

java - 在MapReduceBase中的configure方法中初始化多输出实例

hadoop - 如何保证MapReduce任务之间相互独立?

hadoop - Microstrategy - HBase 连接

python - 批量下载带有标签的谷歌图片

hadoop - 用于 sqoop 导入的 Oozie 工作流在 Amazon emr hue 中失败

intellij-idea - 通过Gradle构建获取oozie-client依赖性

hadoop - 如何部署和运行 oozie 作业?

hadoop - 是否可以只用一个协调器启动一些 oozie 工作流?

hadoop - 小型数据集上的 Hive 查询永远不会完成(或 OOM)