Apache Spark против Apache Storm

В чем разница между Apache Spark и Apache Storm? Каковы подходящие варианты использования для каждого из них?

Ответ 1

Apache Spark - это платформа анализа распределенных данных в памяти - в первую очередь предназначена для ускорения заданий пакетного анализа, итеративных заданий машинного обучения, интерактивного запроса и обработки графиков.

Одним из основных отличий Spark является использование RDD или Resilient Distributed Datasets. RDD отлично подходят для конвейерной обработки параллельных операторов для вычислений и по определению являются неизменяемыми, что позволяет Spark уникальную форму отказоустойчивости на основе информации о линии. Если вас интересует, например, выполнение задания Hadoop MapReduce намного быстрее, Spark - отличный вариант (хотя необходимо учитывать требования к памяти).

Apache Storm ориентирован на обработку потока или на то, что некоторые называют сложной обработкой событий. Storm реализует отказоустойчивый метод для вычисления или конвейерной обработки нескольких вычислений на событии при его втекании в систему. Можно использовать Storm для преобразования неструктурированных данных, когда он втекает в систему в желаемый формат.

Storm и Spark ориентированы на довольно разные варианты использования. Чем больше "яблок-яблок" будет сравнивать между Storm Trident и Spark Streaming. Поскольку Spark RDD неотъемлемо неизменны, Spark Streaming реализует метод "пакетного" входящего обновления в пользовательские временные интервалы, которые преобразуются в собственные RDD. Параллельные операторы Spark могут выполнять вычисления на этих RDD. Это отличается от Storm, который имеет дело с каждым событием индивидуально.

Одним из ключевых различий между этими двумя технологиями является то, что Spark выполняет Data-Parallel вычислений, в то время как Storm выполняет Task-Parallel вычисления. Любой дизайн делает компромиссы, которые стоит знать. Я бы предложил проверить эти ссылки.

Изменить: обнаружено this сегодня