Я не смог найти никакой информации об этом за исключением развертывания кластера Nomad и экспериментов, поэтому, возможно, кто-то здесь сможет помочь.
Допустим, вы хотите выполнить 100 итераций пакетного java-задания, каждая с другим набором параметров, и получить обратно полученные выходные файлы.
1) принимает ли Nomad концепцию input_files
, где вы указать на локальный файл на вашем компьютере, и он будет распространять такой файл?
# in HTCondor would be something like this
transfer_input_files = MyCalculator.jar,logback.xml
2) Возвращает ли Nomad результаты таких вычислений, скажем, * .csv
файлы, которые были созданы?
# this would do it in HTCondor
should_transfer_files = YES
when_to_transfer_output = ON_EXIT
transfer_output_files = /output_dir
3) позволяет ли кочевник использовать параметры так, как это делает кондор, позволяет вам отправить задание с параметрами n
, которое затем будет распределено как несколько заданий в кластер?
# this would do it in HTCondor
Arguments = x=1
Queue
(...)
Arguments = x=100
Queue
Контейнеры считаются не имеющими состояния, что означает, что вам потребуются дополнительные шаги для вашего процесса, чтобы это работало. Condor добавляет эту функцию для вас, но я никогда не считал ее полезной и никогда не работал должным образом, когда я ее использовал (последний раз в 2009 году). Чтобы обойти это, я отделил передачу данных от Condor. Для этого вам необходимо сделать следующее:
Файлы выходных данных должны храниться в каком-либо постоянном хранилище данных, а не в самом контейнере. Некоторые контейнеры позволяют монтировать прямой диск хоста или даже монтировать удаленный диск по сети (NFS, Samba, SSHFS и т. Д.). В прошлом я использовал распределенную файловую систему (или монтируемую в сети), такую как AWS-S3, для выполнения этого требования.
Когда я работал с Condor в 2009 году над своей магистерской диссертацией, я справился с этим требованием, создав сценарии оболочки BASH для Приложения Java, которые я запускал в пакетном режиме. Сценарий будет обрабатывать отправку соответствующих входных отклонений (загрузка из ресурса распределенной файловой системы), и когда задание будет завершено, сценарий затем начнет передачу данных выходных файлов в тот же распределенный файловый ресурс (с именем задания, номером задания , имя хоста, на котором было выполнено задание, и отметка даты и времени в имени выходного файла).
HTCondor, Nomad или даже Kubernetes могут решить эту поставленную вами задачу. Вам нужно будет добавить какую-то логику в сценарии оболочки вашего обработчика заданий для обработки передачи данных перед запуском и закрытием самого приложения.
Надеюсь, это поможет.