Сравнение механизмов распределенной аналитики
Здесь мы сделаем выводы из нашего обсуждения механизмов распределенной аналитики для облака, в котором мы представили Hadoop MapReduce, Spark и GraphLab как эффективные и популярные платформы для распределенного программирования. Каждый из этих трех механизмов отвечает за следующие аспекты распределенных вычислений от имени пользователя:
- проектирование и внедрение соответствующей модели программирования (передачи сообщений или общей памяти), а также решение всех связанных проблем синхронизации и согласованности;
- разработку вычислительной модели (синхронной или асинхронной);
- указание модели параллелизма (с параллелизмом графов, с параллелизмом данных, итеративной) и кодирование необходимых алгоритмов секционирования и сопоставления;
- проектирование базовой архитектурной структуры (с использованием модели "главный-подчиненный" или одноранговой модели);
- реализацию эффективной стратегии планирования задач/вершин (протокола отправки или протокола получения).
В следующей таблице приводится сравнение трех механизмов по каждому из этих направлений. MapReduce и Spark используют конструкцию с параллелизмом данных, а программы GraphLab выполняются с использованием параллелизма графов. MapReduce и Spark предлагают модели синхронных вычислений, а GraphLab предоставляет пользователю как синхронные, так и асинхронные обработчики. MapReduce подходит для приложений с довольно слабой связанностью или чрезвычайным параллелизмом (практически без зависимости или связи между параллельными задачами), которые включают неитеративные вычисления с большими объемами данных. Spark оптимизирует модель MapReduce для приложений, которым необходимо итеративно применять функции map и reduce к данным. С другой стороны, GraphLab подходит для более строго связанных приложений (с высокой степенью зависимости между параллельными задачами/вершинами) и приложений, в которых используются итеративные вычисления с небольшим количеством данных на задачу/вершину. GraphLab также включает специальные оптимизации, которые позволяют сбалансированно и эффективно распределять работу между узлами, обрабатывающими графы со степенным распределением, такие как социальные графы и веб-графы.
Далее приведено сравнение механизмов распределенной аналитики.
MapReduce | Spark | GraphLab | |
---|---|---|---|
Модель программирования | Передача сообщений | Передача сообщений | Передача сообщений |
Вычислительная модель | Синхронная | Синхронная | Синхронный и асинхронный |
Модель параллелизма | Параллелизм данных | Итеративный параллелизм данных | Параллелизм графов |
Архитектурная модель | Использующей модель "главный-подчиненный" | Использующей модель "главный-подчиненный" | Одноранговой |
Модель планирования задач или вершин | Протокол получения (pull-протокол) | Протокол получения (pull-протокол) | Протокол отправки (push-протокол) |