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

Каковы некоторые сценарии, для которых MPI лучше подходит, чем MapReduce?

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

В MapReduce/Hadoop каждый node выполняет некоторые вычисления, обменивается данными с другими узлами и затем сопоставляет их разделение результатов. Кажется простым, но поскольку вы можете повторять этот процесс, даже алгоритмы, подобные K-средствам или PageRank, вполне подходят для модели. В распределенной файловой системе с локальностью планирования производительность, по-видимому, хорошая. В сравнении, MPI дает мне явный контроль над тем, как узлы посылают сообщения друг другу.

Может ли кто-нибудь описать сценарий кластерного программирования, где более общая модель MPI является очевидным преимуществом по сравнению с более простой моделью MapReduce?

4b9b3361

Ответ 1

Почти любой научный код - конечные различия, конечные элементы и т.д. Какой тип приводит к круговому ответу, что любая распределенная программа, которая нелегко отображает MapReduce, будет лучше реализована с более общей моделью MPI. Не уверенный в том, что вам очень поможет, я отвечу на этот вопрос сразу после публикации.

Ответ 2

Хотя на этот вопрос был дан ответ, я хотел бы добавить/повторить один очень важный момент.

MPI лучше всего подходит для проблем, требующих много межпроцессного взаимодействия.

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

Это основная причина того, что у нас что-то вроде Hadoop. Данные также должны быть распределены - распределенная файловая система Hadoop!

Чтобы сказать все это, MPI хорош для задачи parallelism, а Hadoop хорош для Data Parallelism.

Ответ 3

Лучший ответ, который я мог бы придумать, - это то, что MPI лучше, чем MapReduce в двух случаях:

  • Для коротких задач, а не пакетной обработки. Например, MapReduce не может использоваться для ответа на отдельные запросы - ожидается, что каждая работа займет минуты. Я думаю, что в MPI вы можете создать систему ответов на запросы, где машины отправляют сообщения друг другу, чтобы направить запрос и сгенерировать ответ.

  • Для узлов узлов требуется больше, чем то, что повторяется поддержка заданий MapReduce, но не слишком большая, чтобы накладные расходы на связь делали вычисления непрактичными. Я не уверен, как часто такие случаи происходят на практике.

Ответ 4

Когда вычисление и данные, которые вы используете, имеют нерегулярное поведение, которое в основном преобразуется во многие сообщения-проходы между объектами или когда вам требуется доступ к уровню аппаратного уровня низкого уровня, например. RDMA тогда MPI лучше. В некоторых ответах, которые вы видите здесь, упоминается латентность задач или модель согласованности памяти, такие рамки, как Spark или Actor Models, такие как AKKA, показали, что они могут конкурировать с MPI. Наконец, следует подумать о том, что MPI в течение многих лет является основной базой для разработки библиотек, необходимых для научных вычислений (это самые важные недостающие части, отсутствующие в новых рамках с использованием моделей DAG/MapReduce).

В целом, я думаю, что преимущества, которые MapReduce/DAG-модели приносят в таблицу, такие как динамические менеджеры ресурсов, и вычисления отказоустойчивости сделают их возможными для научных вычислительных групп.

Ответ 5

Я ожидаю, что MPI будет легко удалять MapReduce, когда задача выполняет итерацию по набору данных, размер которого сопоставим с кешем процессора, и часто требуется общение с другими задачами. Множество научных подходов к распараллеливанию доменов подходит к этой схеме. Если MapReduce требует последовательной обработки и связи или завершения процессов, тогда потеря вычислительной производительности от решения проблемы размера кэша теряется.