Возможна ли прямая передача данных из Nifi в Spark Structured Streaming / Storm без потери данных? - PullRequest
0 голосов
/ 14 февраля 2019

В моем текущем сценарии;Нифи собирает данные, затем отправляет в Кафку.Тогда любой потоковый движок потребляет данные из кафки и анализирует их.В этой ситуации; Я не хочу использовать Кафку между Nifi и Streaming Engine .Итак, я хочу отправить данные из Nifi в потоковый движок напрямую.Но я не знаю некоторых деталей здесь.

Например, Spark Structured Streaming ;Предположим, что я отправляю данные из Nifi в Spark Structured Streaming напрямую, Spark получил эти данные, но затем узел spark не работает.Что происходит с данными в узле Spark?(Есть ли у Spark Structured Streaming какой-либо приемник Nifi?) Кроме того, какова в этом случае гарантия данных для Spark Structured Streaming?

Например, Storm ;У Шторма есть Нифи Болт.Но предположим, что Storm получил данные от Nifi, но затем узел был недоступен.Что происходит с данными?Кроме того, что в данном случае является гарантией данных в Storm?

В скором времени я хочу отправить данные из Nifi в SparkStructuredStreaming / Storm (я, скорее всего, использовал Spark.) Напрямую.Но если какой-либо узел не работает в кластере потокового движка, Я не хочу терять данные.

Возможно ли это для структурированной потоковой передачи Spark?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Вся потоковая интеграция с NiFi выполняется с использованием протокола site-to-site, который изначально был сделан для двух экземпляров NiFi для передачи данных.

Насколько я знаю, в настоящее время есть интеграции со Storm, Spark Streaming и 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, и это является проблемой потоковой системы.

Я не уверен, почему вы не хотите использоватьКафка, но NiFi -> Кафка -> Потоковая передача - более стандартный и проверенный подход.

0 голосов
/ 14 февраля 2019

Существует NifiReceiver для искры.

Сравнение реализации с apache-spark документацией этот приемник отказоустойчив, так как должен данные воспроизведения не передаются.

...