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

Почему Hadoop не реализован с использованием MPI?

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

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

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

Подумайте об этом, я не совсем знаком с внутренними частями Hadoop. Я понимаю структуру на концептуальном уровне (map/comb/shuffle/reduce и как это работает на высоком уровне), но я не знаю подробных подробностей реализации nitty. Я всегда предполагал, что Hadoop передавал сериализованные структуры данных (возможно

4b9b3361

Ответ 1

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

Лаборатории Sandia имеют версию сокращения карт, которая использует MPI, но не обладает отказоустойчивостью.

Ответ 2

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

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

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

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

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

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

Тем не менее, возможно, хаоп-реклама будет сопровождаться более экономичными альтернативами, возможно, на основе MPI.

Ответ 7

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