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

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

Другие вопросы по тегам