Я работаю над вычислительной системой кластеров Spark (Berkeley). В своих исследованиях я узнал о некоторых других системах с памятью, таких как Redis, Memcachedb и т. Д. Было бы здорово, если бы кто-то дал мне сравнение между SPARK и REDIS (и MEMCACHEDB). В каких сценариях Spark имеет преимущество перед этими другими системами памяти?Сравнение вычислительных систем кластера памяти
ответ
Это совершенно разные звери.
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, обеспечивает быстрые возможности сканирования из-за управления в памяти и минимизирует глобальное число операций ввода-вывода для итеративных алгоритмов.
Что относительно Бури? Как вы можете сравнить его с Spark (или Shark)? – void
См. Мое обновление ... –
Спасибо за обновление. Есть еще один вопрос, если вы не возражаете. Spark имеет инструмент «Spark Streaming» для анализа в реальном времени. Это сопоставимо с Storm (другим инструментом анализа в реальном времени)? Есть ли для этого преимущества? – void