Как заставить Condor отправлять задания только на машины в кластере, на которых установлена ​​«numpy»? - PullRequest
11 голосов
/ 26 марта 2012

Я только что понял, как отправлять задания на обработку на компьютерах в кластере, используя Condor .Так как у нас много машин, и не каждая из этих машин настроена одинаково, мне было интересно:

Можно ли сказать condor только для отправки моих заданий (скрипты Python) на машины, чтона них установлен numpy, так как мой скрипт зависит от этого пакета?

Ответы [ 2 ]

7 голосов
/ 30 марта 2012

Как и любой другой атрибут машины, вам просто нужно объявить его в классе машины, а затем сделать так, чтобы ваши задания потребовали его.

Чтобы рекламировать его в классе машины, вы можете либо жестко закодировать его вКонфигурационный файл каждой машины condor, добавив что-то вроде этого:

has_numpy = True
STARTD_EXPRS = $(STARTD_EXPRS) HAS_NUMPY

... или, что еще лучше, вы можете указать Condor динамически обнаруживать его во время выполнения с помощью сценария и объявить результат с помощью startdкрюк класса .Чтобы сделать это, установите простой сценарий has_numpy на каждой машине, например:

#!/usr/bin/env python
try:
   import numpy
except ImportError:
   print "has_numpy = False"
else:
   print "has_numpy = True"

..., а затем скажите Condor запускать его каждые пять минут и вставлять результаты в класс startd, добавляяв конфигурационном файле машины:

HASNUMPY = /usr/libexec/condor/has_numpy
STARTD_CRON_JOBLIST = $(STARTD_CRON_JOBLIST) HASNUMPY
STARTD_CRON_HASNUMPY_EXECUTABLE = $(HASNUMPY)
STARTD_CRON_HASNUMPY_PERIOD = 300

... и затем (после перенастройки) ваши машины будут динамически определять и сообщать, установлена ​​ли numpy и доступна ли она для сценариев Python.

Тогда вам просто нужно добавить соответствующее требование к файлам отправки задания, например:

Requirements = (has_numpy == True)

... и ваша работа будет выполняться только на машинах, на которых установлена ​​numpy.

0 голосов
/ 27 марта 2012

Тебе нужно?Согласно руководству condor :

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

Для меня это означает, что если на машине, отправляющей задание, установлена ​​numpy, она должна работать.

...