Сравнение механизмов распределенной аналитики

Завершено

Здесь мы сделаем выводы из нашего обсуждения механизмов распределенной аналитики для облака, в котором мы представили Hadoop MapReduce, Spark и GraphLab как эффективные и популярные платформы для распределенного программирования. Каждый из этих трех механизмов отвечает за следующие аспекты распределенных вычислений от имени пользователя:

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

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

Далее приведено сравнение механизмов распределенной аналитики.

MapReduce Spark GraphLab
Модель программирования Передача сообщений Передача сообщений Передача сообщений
Вычислительная модель Синхронная Синхронная Синхронный и асинхронный
Модель параллелизма Параллелизм данных Итеративный параллелизм данных Параллелизм графов
Архитектурная модель Использующей модель "главный-подчиненный" Использующей модель "главный-подчиненный" Одноранговой
Модель планирования задач или вершин Протокол получения (pull-протокол) Протокол получения (pull-протокол) Протокол отправки (push-протокол)

Проверьте свои знания

1.

Какая из следующих платформ лучше всего подходит для вычисления кратчайших путей всех пар (APSP) на взвешенном, полностью связном графе?