Apache Spark Structured Streaming vs Apache Flink: в чем разница?

Мы обсудили следующие вопросы:

Но Spark Structured Streaming был добавлен в Spark2.2, он вносит много изменений для потоковой передачи, и это замечательно.

Можно ли сказать, что Spark Strutured Streaming это потоковая обработка или все еще пакетная обработка?

В чем разница между Apache Flink и Apache Spark Structured Streaming?


person ShuMing Li    schedule 01.09.2017    source источник


Ответы (1)


В настоящее время:

В Spark Structured Streaming все еще используются микропакеты в фоновом режиме. Однако он поддерживает обработку во время события, довольно низкую задержку (но не такую ​​низкую, как Flink), поддерживает SQL и типобезопасные запросы к потокам в одном API; без разницы, каждый набор данных можно запрашивать как с помощью SQL, так и с помощью операторов безопасного типа. У него сквозная ровно одна семантика (по крайней мере, они так говорят;)). Пропускная способность лучше, чем в Flink (были тесты с разными результатами, но посмотрите публикация Databricks о результатах).

В ближайшем будущем:

Режим непрерывной обработки Spark находится в процессе, и он дает задержку Spark ~ 1 мс, сравнимую с таковой у Flink. Однако, как я уже сказал, он все еще продолжается. API готов для не-пакетных заданий, поэтому это проще сделать, чем в предыдущей потоковой передаче Spark.

Основное отличие:

Spark теперь полагается на микропакетирование, а у Flink есть заранее запланированные операторы. Это означает, что задержка Flink ниже, но Spark Community работает в режиме непрерывной обработки, который будет работать аналогично (насколько я понимаю) приемникам.

person T. Gawęda    schedule 01.09.2017
comment
Я бы не сказал, что он поддерживает полное время события, поскольку единственный водяной знак, который вы можете предоставить, - это статическая задержка. - person Dawid Wysakowicz; 01.09.2017
comment
Также утверждение, что пропускная способность лучше, не соответствует действительности. См., Например, этот слайд: slideshare.net/JamieGrier/ Flink также может обеспечить пропускную способность ›70 млн сообщений / сек. В сообщении, которое вы предоставили, они не объяснили свои настройки, поэтому я не поверил бы ни одному из этих чисел. - person Dawid Wysakowicz; 01.09.2017
comment
Databricks предоставили информацию, на каком тесте они его тестировали. Так что это полностью воспроизводимо. Они даже предоставили информацию, какие экземпляры использовали. Так что я бы поверил им, а не тесту, запускаемому на пользовательских узлах без каких-либо изменений для репликации. - person T. Gawęda; 01.09.2017
comment
Они использовали AWS, вы можете просто пересчитать эти тесты. Тест Flink выполняется в пользовательской среде, без возможности воспроизвести его. Извините, я не могу им доверять, если они делают тест, который невозможно воспроизвести - воспроизводимость должна быть первой точкой теста - person T. Gawęda; 01.09.2017
comment
AWS имеет сеть ~ 10Gi, поэтому мы должны использовать результат Flink 15M, не лучший, если мы хотим сравнить эти результаты. - person T. Gawęda; 01.09.2017
comment
Голосование против без комментариев - почему, я сказал вам, почему тесты Flink не воспроизводятся, и что они сделали для повышения производительности. Они использовали лучшую сеть, по аналогии они медленнее - person T. Gawęda; 19.09.2017
comment
Извините, я забыл представить свои аргументы, и, честно говоря, перечитав ответ и комментарии, я не могу вспомнить, чего, как я думал, не хватало. Поэтому я отзову свой голос против (когда я смогу отредактировать свой голос через несколько часов). Извинения. - person Jicaar; 19.09.2017
comment
@Jicaar Нет проблем :) И спасибо за голосование "за". Я действительно хочу писать только правдивые и воспроизводимые данные, как того требует мой академический фон :) Одно предложение уже было изменено, потому что оно не было очень строгим, но теперь я думаю, что написал все, что мог, без сомнения, что кто-то жульничал. Если у вас есть информация, которая поможет - обязательно предоставьте, и я воспользуюсь ею :) Но, как я уже писал, мне нужна только воспроизводимая и стабильная информация :) - person T. Gawęda; 19.09.2017
comment
Единственное, что я могу добавить, - это отметить, что тесты проводились на кластерах с разными типами процессоров. Задание Spark выполняется на 10 машинах r3.xlarge, которые в соответствии с типами экземпляров aws, то есть на 10 процессорах Intel Xeon E5-2670 v2 (Ivy Bridge). Задание flink выполняется на 10 процессорах Xeon E3-1230-V2 (не отображаются в типах инстансов AWS). По данным Intel, Xeon E5-2670 v2 имеет 10 ядер (и намного дороже). Таким образом, различия в кластерах очень разные, и Spark сказал в видео, что они просто взяли тестовый тест, предоставленный Flink, который использует менее мощный кластер. - person Jicaar; 19.09.2017
comment
Кроме того, похоже, что задание Flink должно было использовать вычислительную мощность для генерации данных, а затем их потребления, в отличие от задания искры. Так что это тоже может быть фактором. И я не являюсь экспертом в том, что в процессоре более важно, чтобы повлиять на эти тесты, но различий достаточно, чтобы сравнительное сравнение технологий в лучшем случае вводило в заблуждение. Вот ссылки, которые я нашел на два типа процессоров: ark.intel.com/products/65732/ ark.intel.com/products/75275/ - person Jicaar; 19.09.2017
comment
@Jicaar - спасибо. Я тогда свой ответ отредактирую, но, наверное, завтра;) Ага, разницы не заметил - person T. Gawęda; 19.09.2017
comment
Позвольте нам продолжить это обсуждение в чате. - person T. Gawęda; 19.09.2017
comment
Хорошо, у нас есть четкое сообщение от Databricks: databricks.com/blog/2017/10/11/ - person T. Gawęda; 11.10.2017
comment
В то время как Flink предлагает гарантии ровно один раз, структурированная обработка Spark предлагает только гарантии отказоустойчивости хотя бы один раз, в отличие от Spark Streaming, который предлагает гарантии только один раз, но не масштабируется так хорошо и увеличивает задержку из-за пакетной обработки. - person Hermes; 21.05.2019
comment
@Hermes Не могли бы вы написать какую-нибудь ссылку, в которой говорится, что SSP использует хотя бы один раз? Потому что в большинстве режимов он использует ровно один раз, поэтому я не понимаю, что вы имеете в виду. - person T. Gawęda; 22.05.2019
comment
@ T.Gawęda Извините за неточность. Вы можете получить гарантию ровно один раз вместо стандартной по крайней мере один раз, если вы не используете Kafka Sink и согласны с более высокой задержкой. Непрерывная обработка - это новый экспериментальный режим потокового выполнения, представленный в Spark 2.3, который обеспечивает низкую (~ 1 мс) сквозную задержку с гарантией отказоустойчивости как минимум один раз. Сравните это с механизмом микропакетной обработки по умолчанию, который может гарантировать только один раз, но в лучшем случае обеспечивает задержку ~ 100 мс. spark.apache.org/docs/latest/ - person Hermes; 03.06.2019