Возможно ли реализовать Pregel в Erlang без супершагов? - PullRequest
3 голосов
/ 20 сентября 2011

Допустим, мы реализуем Pregel с Erlang.Зачем нам на самом деле нужны супершагы?Не лучше ли просто отправлять сообщения от одного руководителя процессам, которые представляют узлы?Они могли бы просто применить функцию вычисления к себе, отправлять сообщения друг другу, а затем отправлять «готовое» сообщение супервизору.

Какова вся цель супершагов в параллельной реализации Prelan в Erlang?

1 Ответ

3 голосов
/ 20 сентября 2011
  • Концепцию SuperStep, поддерживаемую моделью Прегеля, можно рассматривать как своего рода барьер для параллельно выполняемых сущностей. В конце каждого супершага каждый работник сбрасывает свое состояние в постоянное хранилище.
  • Алгоритм имеет контрольную точку в конце каждого SuperStep, так что в случае сбоя, когда новый узел должен взять на себя функцию отказавшего партнера, он имеет точку для начала. Pregel гарантирует, что поскольку данные узла были сброшены на диск до запуска SuperStep, он может надежно запускаться именно с этой точки.
  • Это также в некотором смысле означает «прогресс» алгоритма. Алгоритм / задание pregel может быть снабжен «максимальным числом супершагов», после которого алгоритм должен завершиться.

То, что вы указали в своем вопросе (о том, что супервизоры отправляют работнику функцию вычисления и ждут выполнения), безусловно, может быть реализовано (хотя я не думаю, что текущий супервизор, упакованный с OTP, может делать такие вещи из коробки) но я думаю, что концепция SuperStep - это просто требование модели Pregel. Если, с другой стороны, вы реализуете что-то вроде параллельного преобразователя (например, то, что Джо реализует в своей книге), вам не нужны супершагы /

...