2013-05-22 4 views
10

Я работаю над вычислительной системой кластеров Spark (Berkeley). В своих исследованиях я узнал о некоторых других системах с памятью, таких как Redis, Memcachedb и т. Д. Было бы здорово, если бы кто-то дал мне сравнение между SPARK и REDIS (и MEMCACHEDB). В каких сценариях Spark имеет преимущество перед этими другими системами памяти?Сравнение вычислительных систем кластера памяти

ответ

30

Это совершенно разные звери.

Redis и memcachedb - это распределенные магазины. Redis - это чистая система с памятью с дополнительной устойчивостью с различными структурами данных. Memcachedb предоставляет API memcached поверх Berkeley-DB. В обоих случаях они, скорее всего, будут использоваться приложениями OLTP или, в конечном счете, для простой аналитики в реальном времени («агрегирование данных на лету»).

Как Redis, так и memcachedb не имеют механизмов для эффективной итерации сохраненных данных параллельно. Вы не можете легко отсканировать и применить некоторую обработку к сохраненным данным. Они не предназначены для этого. Кроме того, за исключением использования ручного сканирования на стороне клиента, их нельзя масштабировать в кластере (хотя реализация кластера Redis продолжается).

Spark - это система, которая ускоряет крупномасштабные аналитические задания (и особенно итерационные) путем предоставления распределенных наборов данных в памяти. С помощью Spark вы можете реализовать эффективные итеративные работы с картами/сокращениями на кластере машин.

Redis и Spark оба полагаются на управление данными в памяти. Но Redis (и memcached) играют на одном и том же этапе, как и другие OLTP-файлы NoSQL, в то время как Spark похож на систему Hadoop map/reduce.

Redis хорошо работает в многочисленных операциях быстрого хранения/поиска с высокой пропускной способностью с задержкой в ​​миллисекундах. Spark сияет при реализации масштабных итерационных алгоритмов машинного обучения, анализа графов, интерактивного интеллектуального анализа данных и т. Д. ... при значительном объеме данных.

Update: Еще один вопрос о штормовых

Вопрос заключается в том, чтобы сравнить искру Бури (см комментарии ниже).

Spark по-прежнему основан на идее, что, когда существующий объем данных огромен, дешевле переместить процесс в данные, а не перемещать данные в процесс. Каждый узел хранит (или кэширует) его набор данных, а задания отправляются на узлы. Таким образом, процесс переходит к данным. Он очень похож на карту/сокращение Hadoop, за исключением того, что память используется для предотвращения ввода-вывода, что делает ее эффективной для итеративных алгоритмов (когда выход предыдущего шага является входом следующего шага). Shark - это всего лишь механизм запросов, построенный поверх Spark (поддерживающий специальные аналитические запросы).

Вы можете увидеть Шторм как полную архитектурную противоположность Искры. Storm - это распределенный потоковый движок. Каждый узел реализует базовый процесс, а элементы данных перемещаются в/из сети взаимосвязанных узлов (в отличие от Spark). С помощью Storm данные переходят к процессу.

Обе структуры используются для параллелизации вычислений огромного количества данных.

Тем не менее, Storm умеет динамически обрабатывать многочисленные сгенерированные/собранные небольшие элементы данных (например, вычисление некоторой функции агрегации или аналитики в реальном времени в потоке Twitter).

Spark применяется к корпусу существующих данных (например, Hadoop), который был импортирован в кластер Spark, обеспечивает быстрые возможности сканирования из-за управления в памяти и минимизирует глобальное число операций ввода-вывода для итеративных алгоритмов.

+2

Что относительно Бури? Как вы можете сравнить его с Spark (или Shark)? – void

+0

См. Мое обновление ... –

+0

Спасибо за обновление. Есть еще один вопрос, если вы не возражаете. Spark имеет инструмент «Spark Streaming» для анализа в реальном времени. Это сопоставимо с Storm (другим инструментом анализа в реальном времени)? Есть ли для этого преимущества? – void