Я не смог найти никакой информации об этом за исключением развертывания кластера 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) позволяет ли nomad использовать параметры так же, как condor, что позволяет отправлять задания с n
params, которые затем будут распределены по кластеру в виде нескольких заданий?
# 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 могут решить эту поставленную за вас задачу. Вам нужно будет добавить какую-то логику в сценарии оболочки вашего обработчика заданий для обработки передачи данных перед запуском и завершением самого приложения.
Надеюсь, это поможет.