Назад | Перейти на главную страницу

Nomad от Hashicorp в качестве альтернативы HTCondor?

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

Надеюсь, это поможет.