Sel*_*ara 6 etl apache-falcon airflow apache-nifi
我正在开发一个Java解决方案,它通过属于不同供应商的REST API与一组设备进行通信.因此,对于每个供应商,我必须在我的解决方案中执行一组流程.但是,这些过程将根据每个供应商进行更改.以下是需要执行的高级过程.
Retrieve an XML file from a folderProcess the XML filePerform some image processingSchedule a job and execute it on the scheduled timeStoring data on a MySQL DB and perform some REST calls to outside APIs因此,对于一个供应商可能具有上述所有过程.但对于另一个,可能没有一些过程(例如:图像处理).以下事情应该能够从所选择的解决方案中获得.
I should be able to create custom workflows for new vendorsNeed to identify any failures that have been occurred within the workflow and perform retry mechanisms.Should be able to execute some functions parallelly (Eg: Image processing)ScalableOpensource因此我被告知要研究像Nifi/Airflow/Falcon这样的工作流程管理器.我对它们进行了一些研究,但无法确定最合适的解决方案.
注意:不需要使用Hadoop或任何其他群集,并且数据流频率不高
目前,我正在考虑使用Nifi.但有人可以就此发表意见吗?什么是我的用例的最佳解决方案?
小智 6
Apache NiFi不是Apache Airflow或Apache Oozie的工作流管理器.它是一种数据流工具 - 它可以路由和转换数据.它不打算安排作业,而是让你收集来自多个位置的数据,定义不连续的步骤来处理数据和路由数据到不同的目的地.
Apache Falcon的不同之处在于它允许您更轻松地定义和管理HDFS数据集.它是HDFS集群内的有效数据管理.
根据您的描述,NiFi可以满足您的要求.它将能够收集您的XML文件,以某种方式处理它,将数据存储在MySQL中,并执行REST调用.它也可以很容易地为新供应商配置,并且可以很好地容忍故障.它可以并行执行大多数功能,并可以扩展为具有多台主机的集群NiFi.它的设计考虑了性能和可靠性.
我不确定的是执行图像处理的能力.有一些处理器(提取图像元数据,调整大小图像),但你需要用Java开发一个新的处理器 - 这是相对容易的.或者,如果图像处理使用Python或其他一些脚本语言,则可以使用其中一个ExecuteScript处理器.
不建议使用NiFi"安排工作".
完全披露:我是Apache NiFi的贡献者.
我正在将 nifi 与 OP 的类似用例一起使用。关于调度,我喜欢nifi与Kafka的配合方式,我有一些脚本计划以crontab频率运行,只需将消息添加到Kafka主题中,nifi监听哪个主题,然后启动编排以进行加载,转换,获取,索引、存储等,而且,您始终可以处理HttpRequest这样您可以制作某种“webhook 接收器”,以便HTTP POST再次从外部触发进程,以进行简单的部署(这些您可以在单台机器中即插即用)任务。对于图像处理,我有一个 OCR 图像阅读器,带有与ExecuteScript处理器连接的 python 和一个opencv与ExecuteCommand处理器连接的面部识别器,自动 nifi 的背压已经解决了我仅运行 python 脚本和命令本身所遇到的许多问题。
| 归档时间: |
|
| 查看次数: |
2442 次 |
| 最近记录: |