Запуск параллельного Python кода на нескольких AWS экземплярах - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть Python алгоритм, который можно довольно легко распараллелить.

У меня нет ресурсов для локального запуска всего процесса в приемлемые сроки.

Для каждого Я хотел бы иметь возможность:

  1. Запустить AWS экземпляр (EC2?)
  2. Отправить входные данные в экземпляр
  3. Запустить Python код с данными в качестве входных данных
  4. Возврат результата и его агрегирование после завершения всех экземпляров

Каков наилучший способ сделать это?

AWS Лямбда используется для этой цели? Можно ли это сделать только с помощью Boto3?

Я полностью потерян здесь.

Спасибо

1 Ответ

0 голосов
/ 10 апреля 2020

Общая архитектура для параллельного выполнения задач:

  • Помещение входных данных в очередь Amazon SQS
  • Запуск работников вкл несколько экземпляров Amazon EC2:
    • Извлечение сообщения из очереди SQS
    • Обработка данных
    • Запись результатов в Amazon S3
    • Удалить сообщение из очереди SQS (для обозначения завершения задания)

Затем вы можете получить все результаты из Amazon S3. В зависимости от их формата, вы даже можете использовать Amazon Athena для одновременного выполнения SQL запросов ко всем выходным файлам.

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

...