有关Apache NiFi的5大常见问题

发布日期:2021-01-15 15:02
u=1574350876,3040417420&fm=11&gp=0

MiNiFi和NiFi有什么区别?

MiNiFi是用于从远程位置的传感器和设备上收集数据子集的代理。目的是帮助进行数据的“第一英里收集”,并获取尽可能接近其来源的数据。 
这些设备可以是服务器、工作站和便携式计算机,也可以是传感器、自动驾驶汽车、工厂中的机器等,您希望在其中使用MiNiFi中的某些NiFi功能来收集特定数据。在将数据发送到目的地之前,可以对其进行过滤、选择和分类。MiNiFi的目标是使用Edge Flow Manager大规模管理整个流程,以便运营或IT团队可以部署不同的流程定义并根据业务需要收集任何数据。以下是一些需要考虑的细节:
  • NiFi被设计为通常位于数据中心或云中的中央位置,以在已知的外部系统(如数据库、对象存储等)中移动数据或从中收集数据。NiFi应该被视为将数据移回的网关在异构环境或混合云体系结构中来回切换。
  • MiNiFi在主机上本地运行,进行一些计算和逻辑运算,并且仅将您关心的数据发送到外部系统以进行数据分发。这样的系统当然可以是NiFi,但也可以是MQTT代理、云提供商服务等。MiNiFi还支持一些用例,在这些用例中,网络带宽可能受到限制,需要减少通过网络发送的数据量。  
  • MiNiFi代理有两个版本:C ++和Java。MiNiFi C ++选项的占用空间非常小(几MB的内存,很少的CPU),但是可用的处理器却更少。MiNiFi Java选项是轻量级的NiFi单节点实例,是NiFi的无头版本,他没有用户界面也没有集群功能。尽管如此,它仍要求Java在主机上可用。

如果可以使用Kafka作为群集的入口点,为什么还要使用NiFi?

这是一个很好的问题,许多参加我的Live NiFi Demo Jam的人都问了这个问题。您可以通过以下方式确定何时使用NiFi和何时使用Kafka。 
  • Kafka设计用于主要针对较小文件的面向流的用例,然而摄取大文件不是一个好主意。NiFi完全与数据大小无关,因为文件大小与NiFi无关。
  • Kafka就像一个将数据存储在Kafka主题中的邮箱,等待应用程序发布和/或使用它。NiFi就像邮递员一样,将数据传递到邮箱或其他目的地。
  • NiFi提供了广泛的协议(MQTT、Kafka协议、HTTP、Syslog、JDBC、TCP / UDP等)可以在数据导入时进行交互。NiFi是一款出色、一致且独特的软件,可以管理您的所有数据提取。您可能要考虑将数据发送到Kafka,以用于多个下游应用程序。但是,NiFi应该成为获取数据的网关,因为它支持多种协议,并且可以在相同的简单拖放界面中满足数据需求,从而使ROI很高。  
  • 使用NiFi将数据安全地移动到多个位置,尤其是采用多云策略时。
  • Kafka Connect可以回答一些问题,但是当您在移动数据时需要复杂的过滤、路由、扩充和转换时,这不是通用的解决方案。
  • NiFi还基于可扩展框架构建,该框架为用户提供了简便的方法来扩展NiFi的功能并快速构建非常自定义的数据移动流。

大规模公开用于实时数据收集的REST API的最佳方法是什么?

我们的客户使用NiFi公开REST API,供外部来源将数据发送到目的地。最常见的协议是HTTP。
  • 如果您的目标是获取数据,则可以在NIFi中使用ListenHTTP处理器,让它侦听HTTP请求的给定端口,然后可以向其发送任何数据。
  • 如果要使用NiFi提供Web服务,请查看HandleHTTPRequest和HandleHTTPResponse处理器。通过使用两个处理器的组合,您将通过HTTP接收来自外部客户端的请求。您将能够对请求中的数据进行处理,并将自定义答案/结果发送回客户端。例如,您可以使用NiFi通过HTTP访问外部系统,例如FTP服务器。您将使用两个处理器并通过HTTP发出请求。当您在NIFi中收到查询时,NiFi会针对FTP服务器进行查询以获取文件,然后将文件发送回客户端。
  • 使用NiFi,所有这些独特的请求都可以很好地扩展。在这种用例中,NiFi将根据需求进行水平扩展,并在NiFi实例的前面设置负载均衡器,以平衡集群中NiFi节点之间的负载。 

是否可以根据用户的访问权限和安全策略阻止或共享NiFi数据流?

NiFi提供了非常细粒度的多租户和策略模型。设置正确的策略以在多租户环境中提供NiFi很容易。您可以轻松地在NiFi中使用不同的策略集定义多个流程组,因此您有一个专用于处理用例1的团队A的流程组,以及一个专用于用例2的团队B的流程组。考虑:
  • NiFi确保不同的团队不应该访问其他流程组。使用Apache Ranger或NiFi中的内部策略可以轻松进行设置。您可以让多个团队在同一个NiFi环境中处理大量用例。  
  • 在NiFi集群中,所有资源均由所有现有流共享,并且没有资源隔离。例如,NiFi无法为用例#1分配60%的资源,而为用例#2分配40%的资源。对于关键用例,大多数客户将拥有专用的NiFi群集,以确保满足SLA。NiFi提供了监视功能,以确保在群集内正确使用资源并在群集过小时发出警报。   
  • 在2021年,Cloudera将发布新解决方案,使客户能够在大小合适的专用NiFi群集中运行NiFi流,并在自动缩放(上下)的k8上运行。此选项可确保每个用例在一段时间内使用所需的内容,而不会影响其他用例。

NiFi是否可以很好地替代ETL和批处理?

对于某些用例,NiFi当然可以代替ETL,也可以用于批处理。但是,应该考虑用例所需的处理/转换类型。在NiFi中,流文件是描述流过事件、对象和数据的方式。虽然您可以在NiFi中为每个Flow File执行任何转换,但您可能不想使用NiFi将Flow File基于公共列连接在一起或执行某些类型的窗口聚合。在这种情况下,Cloudera建议使用其他解决方案。
那么有什么建议呢?
  • 在流使用情况下,最好的选择是使用NiFi中的记录处理器将记录发送到一个或多个Kafka主题。然后,基于我们对Eventador的收购,您可以让Flink使用Continuous SQL对数据进行所有想要的处理(加入流或执行窗口操作)。  
  • 在批处理用例中,您会将NiFi视为ELT而不是ETL(E =提取,T =转换,L =加载)。NiFi会捕获各种数据集,对每个数据集进行所需的转换(模式验证、格式转换、数据清理等),然后将数据集发送到由Hive支持的数据仓库中。将数据发送到那里后,NiFi可能会触发Hive查询以执行联合操作。
分享到:
推荐精彩博文