Связь между мастером и работниками: лучше ли использовать http-запросы или файлы scp и контролировать создание файлов? - PullRequest
0 голосов
/ 20 сентября 2019

[Background]:

Я реализую упрощенную версию каркаса mapreduce в python.В основном master назначит файл каждому worker, а worker обработает файл и отправит результат обратно.После получения всех результатов от workers master будут агрегироваться результаты, т.е. выступать в качестве одного редуктора.

[Мой вопрос]:

Мы с моим колледжем придерживались разных мнений о том, как реализовать связь между master и workers.

Мой путьэто открыть http-серверы на master и workers (Python имеет встроенный http-сервер SimpleHttpServer).Обычно master отправляет запрос post с файлом в качестве данных, а worker подтверждает файл.После обработки файла worker отправит еще один запрос post с результатом (объект json) на master.

Но мой колледж считает, что я должен использовать scp для передачи файла из master в workers и позволить workers записать результат в файл. workers следует использоватьscp для передачи файла результатов в master (например, в определенном каталоге) и пусть master периодически проверяет этот каталог на наличие файла результатов.

[My Reasoning]:

Причины, по которым http-сервер является лучшим решением, следующие:

  • Можно использовать временную папку и не нужно указывать работнику конкретный каталог для размещения файлов.
  • Если выполняется мониторинг при создании файла, необходимо убедиться, что файл результата из worker скопирован в master после запуска watchdog.
  • Возможно, создание файла мониторинга имеетиметь дело с устаревшими файлами, например файлами с последнего запуска.Для этого может потребоваться какая-то временная метка, которая, на мой взгляд, немного хакерская.

Я полагаю, что основным недостатком использования http-серверов является то, что в python нет очень хорошего встроенного http-сервера.Но я все еще чувствую, что передача файла и создание файла мониторинга не так чисты, как использование http requests.

Любые предложения будут оценены!А также, если возможно, не помечайте это как " в основном основанное на мнении ".Я пытался предоставить как можно больше информации, и я думаю, по крайней мере, для этого конкретного сценария одно решение лучше, чем другое.

[Подробнее]

  • Каждый файл имеет размер менее 100 МБ.(Большинство из них составляют примерно 40 МБ)
  • Передача файлов осуществляется в частной сети, и содержимое файла не является конфиденциальным.Я думаю, что нет необходимости шифровать их.
  • Результаты намного меньше, чем входной файл.
  • Здесь примерно 20 рабочих, а номера файлов примерно 40.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...