是否可以直接从Nifi发送数据到Spark Structured Streaming / Storm而不丢失数据?

问题描述 投票:0回答:2

在我目前的情况下; Nifi收集数据,然后发送给Kafka。然后任何流媒体引擎都会消耗来自kafka的数据并对其进行分析。在这种情况下;我不想在Nifi和Streaming Engine之间使用Kafka。所以,我想直接从Nifi向流媒体发送数据。但是,我不知道这里的一些细节。

例如Spark Structured Streaming;假设我直接从Nifi发送数据到Spark Structured Streaming,Spark收到了这个数据,但是后来spark的节点关闭了。 Spark节点中的数据会发生什么变化? (Spark结构流是否有任何Nifi接收器?),此外,在这种情况下,Spark Structured Streaming的数据保证是什么?

例如Storm;风暴有Nifi Bolt。但是,假设Storm收到了来自Nifi的数据,但随后节点出现故障。数据会发生什么变化?另外,在这种情况下,Storm的数据保证是什么?

很快,我想直接将数据从Nifi发送到SparkStructuredStreaming / Storm(我更可能使用Spark。)。但是如果流媒体集群中的任何节点出现故障,我不想丢失数据。

Spark Structured Streaming有可能吗?

apache-spark apache-storm apache-nifi spark-structured-streaming
2个回答
2
投票

所有与NiFi的流式集成都是使用站点到站点协议完成的,该协议最初是为两个NiFi实例传输数据而制作的。

据我所知,目前有与Storm,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是一种更标准和经过验证的方法。


1
投票

火花有一个NifiReceiver

比较实现与apache-spark documentatation这个接收器是容错的,因为它应该重放未传递的数据。

© www.soinside.com 2019 - 2024. All rights reserved.