Кочевник Хашикорпа как альтернатива HTCondor?
Я не смог найти никакой информации о том, как раскрутить кластер кочевников и поэкспериментировать, поэтому, возможно, кто-то здесь сможет помочь.
Скажем, вы хотите запустить 100 итераций пакетного Java-задания, каждое с разным набором параметров, и получить полученные выходные файлы обратно.
1) принимает ли кочевник концепцию input_files
где вы указываете локальный файл на вашем компьютере, и он будет распространять такой файл?
# in HTCondor would be something like this
transfer_input_files = MyCalculator.jar,logback.xml
2) возвращает ли Номад результаты такого расчета, скажем, *.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
1 ответ
Контейнеры считаются не имеющими состояния, что означает, что вам понадобятся дополнительные шаги в вашем процессе, чтобы это работало. Кондор добавляет эту функцию для вас, но я никогда не находил ее полезной, и она никогда не работала должным образом, когда я использовал ее (в последний раз как 2009). Чтобы обойти это, я выделил передачу данных вместе с Condor. Для этого вам нужно будет сделать следующее:
Ваши файлы выходных данных должны храниться в каком-то постоянном хранилище данных, а не в самом контейнере. Некоторые контейнеры позволяют монтировать прямой диск хоста или даже монтировать удаленный диск по сети (NFS, Samba, SSHFS и т. Д.). В прошлом я использовал распределенную файловую систему (или монтируемую в сети), такую как AWS-S3, для выполнения этого требования.
Когда я работал с Condor в 2009 году над магистерской диссертацией, я выполнил это требование, создав сценарии-оболочки BASH для приложений Java, которые я выполнял в пакетных заданиях. Сценарий будет обрабатывать отправку с соответствующими входными отклонениями (загрузка из ресурса распределенной файловой системы), а когда задание будет выполнено, сценарий начнет передачу данных выходных файлов в тот же распределенный файловый ресурс (с именем задания, номером задания)., имя хоста, запустившего задание, и метка даты и времени в имени выходного файла).
HTCondor, Nomad или даже Kubernetes могут решить эту проблему для вас. Вам нужно будет добавить какую-то логику в свои сценарии оболочки для запуска работы, чтобы обрабатывать передачу данных перед запуском и закрытием самого приложения.
Надеюсь, это поможет.