2012-03-25 3 views
11

मैंने अभी पता लगाया है कि Condor का उपयोग करके क्लस्टर पर मशीनों पर संसाधित होने के लिए नौकरियां कैसे भेजी जाएंगी। चूंकि हमारे पास बहुत सारी मशीनें हैं और इनमें से प्रत्येक मशीन को कॉन्फ़िगर नहीं किया गया है, मैं सोच रहा था:कोंडोर को केवल क्लस्टर पर मशीनों को भेजने के लिए कैसे कहें, जिन पर "numpy" स्थापित है?

क्या यह केवल मेरी नौकरियों (पायथन स्क्रिप्ट) को मशीनों को प्रेषित करने के लिए कंडोर को बताना संभव है, जिस पर numpy इंस्टॉल है जब से मेरी स्क्रिप्ट इस पैकेज पर निर्भर करती है?

उत्तर

-2

क्या आपको आवश्यकता है? condor manual के अनुसार:

कंडोर को मशीनों पर एक खाता (लॉगिन) की आवश्यकता नहीं होती है जहां यह नौकरी चलाती है। कोंडोर इसकी रिमोट सिस्टम कॉल तकनीक की वजह से ऐसा कर सकता है, जो लाइब्रेरी को डिस्क फ़ाइलों से पढ़ने या लिखने जैसे कार्यों के लिए कॉल करता है। कॉल मशीन पर किए जाने वाले नेटवर्क पर प्रसारित की जाती है जहां नौकरी सबमिट की गई थी।

मुझे इस के लिए संकेत मिलता है कि अगर मशीन काम प्रस्तुत करने numpy स्थापित है, यह काम करना चाहिए।

+0

आपके उत्तर के लिए धन्यवाद। दुर्भाग्य से मेरा मामला अन्य बुद्धिमान साबित करता है। नौकरियां विभिन्न मशीनों को जमा की जाती हैं। कुछ सबमिशन के परिणामस्वरूप numpy के ImportError में परिणाम होता है। मैंने उन मशीनों की दोबारा जांच की और उन्हें इंस्टॉल पर कोई गड़बड़ नहीं थी। तो कंडोर एक मशीन को नौकरी जमा करने से रोकने के लिए प्रतीत नहीं होता है जो नौकरी की आवश्यकताओं को पूरा नहीं करता है - मेरे मामले में एक numpy स्थापना। हो सकता है कि यह हमारे कंडोर की स्थापना में मामला है, हालांकि। मैंने स्वयं सिस्टम स्थापित नहीं किया था और यह पहली बार है जब मैं कंडोर के साथ काम करता हूं। :-) – Aufwind

+0

कंडक्टर डेवलपर्स से संपर्क करने का समय। या तो उनका मैनुअल सही नहीं है, या पाइथन का अलग जावा जैसा व्यवहार किया जाता है। –

+0

मैनुअल से यह उद्धरण संदर्भ से बाहर है। कोंडोर रिमोट सिस्टम कॉल सुविधा केवल "मानक ब्रह्मांड" नौकरियों के लिए उपलब्ध है।यद्यपि वह ऐसा नहीं कहता है, ओपी को "वेनिला" ब्रह्मांड का उपयोग करना चाहिए क्योंकि मानक ब्रह्मांड उन बाधाओं को लागू करता है जो पाइथन जैसे दुभाषियों को इसके अंतर्गत चलने से रोकते हैं। – Pinko

7

किसी भी अन्य मशीन विशेषता की तरह, आपको बस मशीन क्लास में विज्ञापन करने की आवश्यकता है, और फिर अपनी नौकरियों की आवश्यकता है।

मशीन classad में यह विज्ञापन करने के लिए, आप या तो कुछ इस तरह जोड़कर हार्ड कोड यह प्रत्येक मशीन के कोंडोर कॉन्फ़िग फ़ाइल में कर सकते हैं:

has_numpy = True 
STARTD_EXPRS = $(STARTD_EXPRS) HAS_NUMPY 

... या बेहतर अभी तक, आप कोंडोर को बता सकते हैं गतिशील रूप से इसे एक स्क्रिप्ट के साथ रनटाइम पर खोजें और परिणाम को startd classad hook के माध्यम से विज्ञापन दें। ऐसा करने के लिए, तो तरह प्रत्येक मशीन पर एक सरल has_numpy स्क्रिप्ट स्थापित:

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

... और फिर कोंडोर बता यह हर पाँच मिनट चलाने के लिए और startd classad में परिणाम छड़ी, के लिए निम्न जोड़कर मशीन के कोंडोर कॉन्फ़िग फ़ाइल:

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

... और फिर टा-डा (एक reconfig के बाद) अपने मशीनों गतिशील पता लगाने और रिपोर्ट numpy स्थापित किया है और अजगर स्क्रिप्ट के लिए उपलब्ध है या नहीं होगा।

तो फिर तुम सिर्फ अपने काम करने के लिए एक इसी आवश्यकता फ़ाइलों को सबमिट, इसलिए की तरह जोड़ने की जरूरत:

Requirements = (has_numpy == True) 

... और अपने काम केवल मशीनों जहां numpy स्थापित किया गया है पर चलेंगे।

संबंधित मुद्दे

 संबंधित मुद्दे