Как распространить программу на ненадежный кластер? - PullRequest
3 голосов
/ 30 мая 2009

То, что я ищу, это любое / все из следующего:

  • автоматическое обнаружение сбоя работника (например, компьютер выключен)
  • обнаружение всех работающих (linux) компьютеров в заданном диапазоне IP-адресов (компьютер включен)
  • ... и порождение авто работника (ping + ssh?)
  • балансировка нагрузки, чтобы работники не замедляли другие процессы (хорошо?)
  • некоторая форма передачи сообщений

... и не хочу изобретать велосипед.

Библиотека C ++, скрипты bash, отдельная программа ... все приветствуются.

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

Ответы [ 5 ]

4 голосов
/ 30 мая 2009

Ознакомьтесь с Spread Toolkit , системой групповой коммуникации C / C ++. Это позволит вам обнаружить сбой узла / процесса и восстановление / запуск таким образом, чтобы вы смогли сбалансировать распределенную рабочую нагрузку.

2 голосов
/ 30 мая 2009

То, что вы ищете, называется «планировщик заданий». На рынке есть много графиков работы, с которыми я знаком:

  • SGE обрабатывает все вопросы, связанные с планированием заданий на нескольких машинах (восстановление, мониторинг, приоритет, организация очередей). Ваше программное обеспечение не обязательно должно поддерживать SGE, поскольку SGE просто предоставляет среду, в которой вы отправляете пакетные задания.
  • LSF - лучшая альтернатива, но не бесплатная.

Для поддержки передачи сообщений см. Спецификацию MPI . SGE полностью поддерживает распространение на основе MPI.

1 голос
/ 30 мая 2009

Есть Hadoop . У него есть Map Reduce, но я не уверен, есть ли у него какие-либо другие функции, которые мне нужны. Кто-нибудь знает?

1 голос
/ 30 мая 2009

В зависимости от требований вашего приложения я бы проверил инфраструктуру BOINC. Они внедряют форму взаимодействия клиент-сервер в своих последних выпусках, и неясно, какая форма связи вам нужна. Их API находится в C, и мы очень легко написали для него оболочки на C ++.

Другое преимущество BOINC заключается в том, что он был разработан для масштабирования для крупных проектов распределенных вычислений, таких как SETI или Rosetta @ Home, поэтому он поддерживает такие вещи, как проверка, распределение заданий и управление различными версиями приложений для разных платформ.

Вот ссылка:

Веб-сайт BOINC

0 голосов
/ 23 июня 2009

Вы действительно ищете «планировщика заданий». Узлы «статически» зарегистрированы в планировщике заданий. Это позволяет планировщику заданий проверять узлы и определять количество ядер, ОЗУ, доступное место на чистом диске, ОС и многое другое. Вся эта информация может быть использована для выбора необходимых ресурсов для работы.

Планировщики заданий также обеспечивают базовый мониторинг работоспособности кластера. Отключенные узлы автоматически удаляются из списка доступных узлов. Узлы, на которых выполняются задания (через планировщик), также удаляются из списка доступных узлов.

SLURM - менеджер ресурсов и планировщик заданий, которые вы можете рассмотреть. SLURM имеет интеграционные хуки для LSF и PBSPro. Некоторые реализации MPI "SLURM-осведомлены" и могут использовать / устанавливать переменные среды, которые позволят заданию MPI выполняться на узлах, выделенных ему SLURM.

...