是否可以直接从nifi向spark structured streaming/storm发送数据而不丢失数据?

wfveoks0  于 2021-06-24  发布在  Storm
关注(0)|答案(2)|浏览(604)

在我目前的情况下;nifi收集数据,然后发送给Kafka。然后,任何流引擎都会使用来自Kafka的数据,并对其进行分析。在这种情况下;我不想在nifi和流媒体引擎之间使用kafka。所以,我想把数据从nifi直接发送到流引擎。但是,我不知道一些细节。
例如,spark结构化流媒体;假设我直接从nifi发送数据到spark structured streaming,spark收到了这些数据,但是spark的节点坏了。spark节点中的数据会发生什么变化(spark结构化流媒体是否有nifi接收器?),在这种情况下,spark结构化流媒体的数据保证是什么?
例如风暴;暴风雪袭击了尼菲·博尔特。但是,假设storm已经收到了来自nifi的数据,但随后节点关闭了。数据怎么了?另外,在这种情况下,storm的数据保证是什么?
简而言之,我想将数据从nifi直接发送到sparkstructuredstream/storm(我更可能使用spark)。但如果流引擎集群中有任何节点宕机,我不想丢失数据。
spark结构化流媒体是否可以这样做?

neskvpey

neskvpey1#

有一个Spark接收器。
与apachespark文档相比,这个接收器是容错的,因为它应该重放未传递的数据。

r8uurelv

r8uurelv2#

所有与nifi的流式集成都是使用site-to-site协议完成的,该协议最初是为两个nifi示例传输数据而设计的。
据我所知,目前有风暴,Spark流,和Flink集成。我不熟悉spark结构化流媒体,但我可以想象您可以构建类似于其他流媒体的集成。
https://github.com/apache/nifi/tree/master/nifi-external/nifi-spark-receiver
https://github.com/apache/nifi/tree/master/nifi-external/nifi-storm-spout
https://github.com/apache/flink/tree/master/flink-connectors/flink-connector-nifi
尽管nifi不是一个可重放的数据源。数据在事务中从nifi传输到流系统,以确保在目的地确认事务之前不会从nifi端删除数据。但是,如果在提交之后流媒体系统中出现故障,那么数据就不再在nifi中,这是流媒体系统的问题。
我不知道你为什么不想使用Kafka,但是nifi->kafka->streaming是一种更标准、更成熟的方法。

相关问题