Подтвердить что ты не робот

Сравните в кластерных вычислительных системах

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

4b9b3361

Ответ 1

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

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 сияет при реализации масштабных итерационных алгоритмов машинного обучения, анализа графов, интеллектуального интеллектуального анализа данных и т.д.... при значительном объеме данных.

Обновление: дополнительный вопрос о Storm

Вопрос заключается в сравнении Spark с Storm (см. комментарии ниже).

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

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

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

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

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