Hashicorp's Nomad в качестве альтернативы 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) позволяет ли кочевник использовать параметры так, как это делает кондор, позволяет вам отправить задание с параметрами n , которое затем будет распределено как несколько заданий в кластер?

# this would do it in HTCondor
Arguments    = x=1
Queue 
(...)
Arguments    = x=100
Queue
4
задан 10 October 2018 в 12:26
1 ответ

Контейнеры считаются не имеющими состояния, что означает, что вам потребуются дополнительные шаги для вашего процесса, чтобы это работало. Condor добавляет эту функцию для вас, но я никогда не считал ее полезной и никогда не работал должным образом, когда я ее использовал (последний раз в 2009 году). Чтобы обойти это, я отделил передачу данных от Condor. Для этого вам необходимо сделать следующее:

Файлы выходных данных должны храниться в каком-либо постоянном хранилище данных, а не в самом контейнере. Некоторые контейнеры позволяют монтировать прямой диск хоста или даже монтировать удаленный диск по сети (NFS, Samba, SSHFS и т. Д.). В прошлом я использовал распределенную файловую систему (или монтируемую в сети), такую ​​как AWS-S3, для выполнения этого требования.

Когда я работал с Condor в 2009 году над своей магистерской диссертацией, я справился с этим требованием, создав сценарии оболочки BASH для Приложения Java, которые я запускал в пакетном режиме. Сценарий будет обрабатывать отправку соответствующих входных отклонений (загрузка из ресурса распределенной файловой системы), и когда задание будет завершено, сценарий затем начнет передачу данных выходных файлов в тот же распределенный файловый ресурс (с именем задания, номером задания , имя хоста, на котором было выполнено задание, и отметка даты и времени в имени выходного файла).

HTCondor, Nomad или даже Kubernetes могут решить эту поставленную вами задачу. Вам нужно будет добавить какую-то логику в сценарии оболочки вашего обработчика заданий для обработки передачи данных перед запуском и закрытием самого приложения.

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

2
ответ дан 3 December 2019 в 03:54

Теги

Похожие вопросы