【问题标题】:Is possible send data from Nifi to Spark Structured Streaming/Storm directly without loss data?是否可以直接将数据从 Nifi 发送到 Spark Structured Streaming/Storm 而不会丢失数据?
【发布时间】:2019-02-14 11:10:21
【问题描述】:

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

例如 Spark Structured Streaming;假设我直接将数据从 Nifi 发送到 Spark Structured Streaming,Spark 已收到此数据,但随后 spark 的节点已关闭。 Spark 节点中的数据会发生什么变化? (Spark Structured Streaming 有 Nifi 接收器吗?),另外,在这种情况下,Spark Structured Streaming 的数据保证是什么?

例如风暴; Storm有Nifi Bolt。但是,假设 Storm 已经从 Nifi 接收到数据,但随后节点已关闭。数据会发生什么?还有,在这种情况下,Storm上的数据保证是什么?

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

这对于 Spark 结构化流式处理是否可行?

【问题讨论】:

    标签: apache-spark apache-storm apache-nifi spark-structured-streaming


    【解决方案1】:

    与 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 -> 流式传输是一种更标准且经过验证的方法。

    【讨论】:

    • 我将检查结构化流的存储级别(在 Spark 集群内复制接收到的数据)。我不想用kafka,因为kafka现在有点没用了。
    • 我明白了,使用 kafka 的主要原因是您可以通过将消费者偏移量重置到某个时间点来使用流式作业重新处理数据,并且如果您有多个作业/消费者,那么他们可以所有人都关注同一个主题。
    • 事实上,原始数据同时进入了 cassandra 和 kafka。在这种情况下,我使用 kafka 进行 1-10 秒的处理(到流引擎),并使用 cassandra 进行 1-2 小时间隔的报告。所以,我想直接将数据发送到流引擎。
    【解决方案2】:

    spark 有一个NifiReceiver

    将实现与apache-spark documentatation 进行比较,此接收器具有容错性,因为它应该重播未传递的数据。

    【讨论】:

    • 我知道 NifiReceiver。但我正在使用 Spark Structured Streaming。但是没有任何图书馆。我可以在 Spark Structured Streaming 中通过容错接收和处理来自 Nifi 的数据吗?
    猜你喜欢
    • 2020-12-24
    • 2020-03-19
    • 1970-01-01
    • 2017-02-07
    • 2017-04-25
    • 2019-04-03
    • 1970-01-01
    • 2023-03-13
    • 2019-02-28
    相关资源
    最近更新 更多