Аннотация
У меня есть обработка осуществляется с помощью двух консольных приложений (Stage-estimate
, Stage-step
), каждое приложение обрабатывает файлы на диске, файлы в папках. Каждая папка представляет собой один шаг обработки, который считается завершенным, когда оцениваются все файлы.Запуск приложения на кластере
В качестве примера давайте рассмотрим, что мы находимся в Step 0
и папка 0
содержит следующие файлы:
Папка 0
содержит:
000.data
001.data
002.data
...
999.data
У нас есть data
файлы, теперь мы должны оценить их , мы запускаем Stage-estimate
применение 1000 раз, что приводит к следующей структуре каталогов:
Папка 0
c ontains:
000.data
000.estimate
001.data
001.estimate
002.data
002.estimate
...
999.data
999.estimate
Step 0
завершен у нас есть все data
/estimate
пара. Чтобы перейти на Step 1
, мы запускаем Stage-step
приложение 1000 раз на каждые data
/estimate
пару файлов, и это приводит к появлению нового набора из 1000 *.data
файлов в папку 1
. После завершения Stage-step
приложения, мы имеем папку 1
с такой же структурой, как у нас было на Step 0
:
Папка 1
содержит:
000.data
001.data
002.data
...
999.data
С этого момента процесс повторяется до тех пор, пока не будет отменено.
Проблема
Применение Stage-estimate
делает некоторые довольно сложные вычисления он потребляет 99% от общей мощности обработки по сравнению с Stage-step
применения.
Я планировал использовать AWS, чтобы ускорить процесс. Я не хочу начинать изобретать специальные командные файлы, которые бы назвали мои приложения так, как описано выше, я знаю, что есть специальное программное обеспечение, которое делает некоторые высокоуровневые процессы планирования и другие связанные с кластером.
Вопрос
Я никогда не имеет дело с кластерной вычислительной техникой, от верхней части моей головы, я вижу, что приложение распараллеливается очень приятно, и это вписывается в инфраструктуру AWS. С другой стороны, я полный новичок в мире кластерных вычислений, и я не знаю, с чего начать. Я имел дело с AWS, но ничего не связал с кластерными вычислениями, я не знаю, как организовать поток, который я описал, и как заставить его работать эффективно, поэтому я был бы признателен, если бы вы указали мне в правильном направлении или предоставили некоторые ссылки на демонстрации/лучшие практики.
Спасибо заранее!
Вы не могли бы дать некоторую информацию о программном обеспечении? На каком языке вы используете? Являются ли команды оценки на одном этапе независимыми (так что вы можете запускать оценочные функции параллельно?) Должен ли этап 0 быть полностью готов, прежде чем начнется этап 1? или если 000.data обработано и 000.estimate готов на этапе 0, вы можете создать 000.data на первом этапе и оценить его, независимо от каких-либо других файлов данных? –
Это написано на C++, «Stage-evaluation» берет один файл и выдает другой файл, поэтому он полностью не зависит от других файлов, «Stage-step» имеет частичную зависимость от других файлов (в действительности может потребоваться несколько файлов в качестве ввода) , Этап 1 может быть запущен, когда в исходной директории достаточно оценок. Таким образом, это означает, что вы можете получить что-то вроде 50% от этапа 1, вычисленного при выполнении только 90% этапа 0, но в конечном итоге лучше сначала выполнить «этап 0», а затем перейти к «Этапу 1» – Lu4