12

我刚刚弄清楚如何使用Condor发送要在集群上的机器上处理的作业。由于我们有很多机器,而且不是每台机器都配置相同,我想知道:

是否可以告诉 condor 只将我的作业(python 脚本)分派到机器上,因为我的脚本依赖于这个包,所以机器上安装了 numpy?

4

2 回答 2

8

与任何其他机器属性一样,您只需在机器类中宣传它,然后让您的工作需要它。

要在机器类中宣传它,您可以通过添加如下内容将其硬编码到每台机器的 condor 配置文件中:

has_numpy = True
STARTD_EXPRS = $(STARTD_EXPRS) HAS_NUMPY

...或者更好的是,您可以告诉 Condor 在运行时使用脚本动态发现它,并通过startd classad hook公布结果。为此,请has_numpy在每台机器上安装一个简单的脚本,如下所示:

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

...然后告诉 Condor 每五分钟运行一次,并将结果粘贴到 startd 类中,方法是将以下内容添加到机器的 condor 配置文件中:

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

...然后 ta-da(重新配置后)您的机器将动态检测并报告 numpy 是否已安装并可用于 python 脚本。

然后,您只需在作业提交文件中添加相应的要求,如下所示:

Requirements = (has_numpy == True)

...并且您的工作只会在安装了 numpy 的机器上运行。

于 2012-03-30T02:13:23.723 回答
-2

你需要吗?根据秃鹰手册

Condor 在运行作业的机器上不需要帐户(登录)。Condor 可以做到这一点是因为它的远程系统调用技术,该技术捕获库调用以执行诸如从磁盘文件读取或写入等操作。调用通过网络传输以在提交作业的机器上执行。

对我来说,这意味着如果提交作业的机器安装了 numpy,它应该可以工作。

于 2012-03-26T20:47:10.057 回答