Сейчас у меня есть Python Приложение, которое запускает 50 потоков для обработки данных. Он берет файл xlsx, обрабатывает список значений и выводит простое csv.
Я сказал себе, поскольку это простое приложение Python с 50 потоками. Как я могу создать кластер? распределить обработку данных еще больше? ПРИМЕР: пусть каждый рабочий узел обрабатывает подмножество, данное ему мастером. Ну, это звучит просто, просто возьмите мастер-приложение и срежьте созданный набор данных, а затем отправьте его sh рабочим с балансировкой нагрузки.
Как мне получить результаты? Я хотел бы взять все результаты (в данном случае out.csv) и вернуть их мастеру и объединить их, чтобы создать 1 master_out.csv
Сначала я думал о рое Docker, но никто я знаю, использует их, все, кроме простого docker контейнера выгружается в K8.
Сейчас у меня есть простая файловая структура:
app/
__init__.py (everything is in this file)
dataset.xlxs
out.csv
Я думал создать docker образа, чтобы я мог переместить это приложение в образ, обновить / обновить, установить python3, если это еще не сделано, а затем просто запустить это приложение.
Я начал углубляться в обработку и понял, что, вероятно, есть некоторые встроенные способы справиться с этим. создайте приложение flask для обработки проглатывания, а затем приложение flask на главном компьютере для приема файлов по завершении и т. д. c .... Но тогда ведущему необходимо знать всех рабочих и т. д. c.
- Я думал о создании кластера.
- Главный узел имеет доступ к тому, который содержит файл, который мне нужно обработать.
- Балансировка нагрузки выдвигает части каждого файла ( ROWS / NUM_WORKERS) к каждому узлу.
- После окончания WORKERS FINI SH мастер объединяет полученные CSV-файлы, чтобы создать мастер-файл.
- Master_OUT.csv будет существовать в папке для использования.
Таким образом, кластер включится, и когда все будет готово, все запустится, а затем завершится. Поскольку они хотят, чтобы кластер, вероятно, был распределен, я не уверен, как это будет работать, хотя обработка имеет ограничения IP-адресов. Кажется, что это не будет работать в локальном кластере, потому что машины, используемые для ссылки, будут сталкиваться с облачной вспышкой (или подобной) после достаточного количества запросов, поэтому я пытаюсь придумать УНИКАЛЬНОЕ IP-решение.
У меня есть идея для архитектуры, но я не уверен, должен ли я создать dockerfile для этого, а затем выяснить, как kube может справиться со всем этим для меня. Хотя я думаю, что в конфигурационных файлах kube мы можем поместить удаленные aws экземпляры для входа в систему, чтобы он раскручивал все удаленные серверы.
Пока я что-то делал с Swarms, кажется, что kube - это где настоящая работа сделана, поскольку рои, кажется, лучше подходят для других вещей.
Я пытаюсь придумать, как бы я подошел к этому с точки зрения куба (или роя).
Учитывая информация, эта концепция напоминает мне меньше о балансировке нагрузки из-за агрегации данных и больше напоминает Kubeflow, где вы создаете CLOUD специально для ML, но вместо ML это будет ЛЮБОЙ распределенная обработка.