Почему Hadoop не реализован с использованием MPI? - PullRequest
33 голосов
/ 04 января 2011

Поправьте меня, если я ошибаюсь, но я понимаю, что Hadoop не использует MPI для связи между различными узлами.

Каковы технические причины этого?

Я мог бы рискнутьнесколько предположений, но я не знаю достаточно того, как MPI реализован «под капотом», чтобы знать, прав ли я.

Если подумать, я тоже не совсем знаком с внутренностями Hadoop.Я понимаю структуру на концептуальном уровне (сопоставить / объединить / перемешать / уменьшить и как это работает на высоком уровне), но я не знаю подробностей реализации.Я всегда предполагал, что Hadoop передает сериализованные структуры данных (возможно, GPB ) по TCP-соединению, например, во время фазы тасования.Дайте мне знать, если это не так.

Ответы [ 6 ]

24 голосов
/ 04 января 2011

Одной из важных особенностей Hadoop / map-redund является отказоустойчивость. Отказоустойчивость не поддерживается в большинстве (любых?) Текущих реализаций MPI. Обсуждается для будущих версий OpenMPI .

Sandia labs имеет версию Map-Reduction, которая использует MPI, но не имеет отказоустойчивости.

18 голосов
/ 21 октября 2012

MPI - интерфейс передачи сообщений. Прямо там в названии - нет данных о местонахождении. Вы отправляете данные другому узлу для его вычисления. Таким образом, MPI привязан к сети с точки зрения производительности при работе с большими данными.

MapReduce с распределенной файловой системой Hadoop дублирует данные, чтобы вы могли выполнять вычисления в локальном хранилище - передавая данные с диска и прямо на процессор. Таким образом, MapReduce использует преимущества локального хранилища, чтобы избежать узких мест в сети при работе с большими данными.

Это не означает, что MapReduce не использует сеть ... он делает это: а перемешивание часто является самой медленной частью работы! Но он использует его как можно меньше и максимально эффективно.

Подводя итог: Hadoop (и вещи Google до него) не использовали MPI, потому что он не мог использовать MPI и работал. Системы MapReduce были разработаны специально для устранения недостатков MPI в свете тенденций в аппаратном обеспечении: увеличение емкости диска (и данных с ним), скорость стагнации диска, медленная сеть, пиковый гигагерц процессора, многоядерный процессор по закону Мура.

7 голосов
/ 22 марта 2013

Правда в том, что Hadoop может быть реализован с использованием MPI.MapReduce использовался через MPI, пока MPI был вокруг.MPI имеет такие функции, как «bcast» - транслировать все данные, «alltoall» - отправлять все данные на все узлы, «уменьшить» и «все восстановить».Hadoop устраняет требование явной реализации распределения данных и сбора методов результатов, упаковывая исходящую команду связи с командой Reduce.Плюс в том, что вы должны убедиться, что ваша проблема соответствует функции «уменьшить», прежде чем внедрять Hadoop.Возможно, ваша проблема лучше подходит для «разброса» / «сбора», и вы должны использовать Torque / MAUI / SGE с MPI вместо Hadoop.Наконец, MPI не записывает ваши данные на диск, как описано в другом посте, если только вы не используете метод приема с записью на диск.Он работает так же, как Hadoop, отправляя ваш процесс / данные в другое место для выполнения работы.Важной частью является понимание вашей проблемы с достаточной детализацией, чтобы быть уверенным, что MapReduce является наиболее эффективной стратегией распараллеливания, и помнить, что существует множество других стратегий.

3 голосов
/ 29 апреля 2014

Нет ограничений, которые не позволяют программам MPI использовать локальные диски.И, конечно, MPI-программы всегда пытаются работать локально с данными - в ОЗУ или на локальном диске - как и все параллельные приложения.В MPI 2.0 (который не является будущей версией, он здесь уже десять лет) можно динамически добавлять и удалять процессы, что позволяет реализовывать приложения, которые могут восстанавливаться после, например, процесса, умирающего на каком-либо узле.

Возможно, hadoop не использует MPI, потому что MPI обычно требует кодирования на C или Fortran и имеет более научную / академическую культуру разработчиков, в то время как hadoop, похоже, больше ориентируется на ИТ-специалистов с сильным уклоном Java.MPI очень низкоуровневый и подвержен ошибкам.Это позволяет очень эффективно использовать оборудование, оперативную память и сеть.Hadoop старается быть высокоуровневым и надежным, со снижением эффективности.Программирование MPI требует дисциплины и большой осторожности, чтобы быть переносимым, и все же требует компиляции из исходного кода на каждой платформе.Hadoop очень портативен, прост в установке и позволяет довольно быстро и грязно разрабатывать приложения.Это другая сфера применения.

Тем не менее, возможно, за шумихой из-за hadoop последуют более ресурсоэффективные альтернативы, возможно, основанные на MPI.

1 голос
/ 29 июля 2014

Если мы просто посмотрим на шаги Map / Reduce и составление расписания Hadoop, то я бы сказал, что MPI - намного лучшая методология / технология. MPI поддерживает множество различных шаблонов обмена, таких как широковещание, барьер, сбор всего, разброс / сбор (или назовите это уменьшением карты). Но Hadoop также имеет HDFS. При этом данные могут располагаться гораздо ближе к узлам обработки. И если вы посмотрите на проблемное пространство, в котором используются Hadoop-подобные технологии, результаты шагов сокращения были на самом деле довольно большими, и вы не хотели бы, чтобы вся эта информация затопляла вашу сеть. Вот почему Hadoop сохраняет все на диск. Но управляющие сообщения могли использовать MPI, а сообщения MPI могли просто иметь указатели (URL или дескрипторы файлов) на фактические данные на диске ...

1 голос
/ 24 апреля 2012

В MapReduce 2.0 (MRv2) или приложениях YARN можно писать (или переносить для запуска) поверх YARN.

Таким образом, по существу, будет новое поколение Apache Hadoop MapReduce (MAPREDUCE-279) и способ поддержки нескольких парадигм программирования поверх него. Таким образом, можно писать приложения MPI на YARN. Парадигма программирования MapReduce всегда будет поддерживаться по умолчанию.

http://wiki.apache.org/hadoop/PoweredByYarn Должно дать представление о том, что все приложения разрабатываются на основе YARN, включая Open MPI.

...