2015-03-13 29 views
18

मैं कोड है कि फ़ाइलों को प्रोसेस का एक टुकड़ा पर हास्केल वितरित किया जा रहा,एक क्लस्टर

processFiles :: [FilePath] -> (FilePath -> IO()) -> IO() 

यह समारोह एक async प्रक्रिया है कि एक आईओ कार्रवाई अमल spawns। यह आईओ क्रिया एक नौकरी शेड्यूलिंग सिस्टम (जैसे Slurm) के माध्यम से क्लस्टर को जमा की जानी चाहिए।

क्योंकि मुझे नौकरी शेड्यूलिंग सिस्टम का उपयोग करना चाहिए, बंद करने के लिए क्लाउड हास्केल का उपयोग करना संभव नहीं है। इसके बजाए कार्यक्रम एक नया मेन.hs लिखता है जिसमें वांछित गणना होती है, जो क्लस्टर नोड को कॉपी करता है, जिसमें सभी मॉड्यूल पर निर्भर करता है और फिर इसे "runhaskell Main.hs [opts]" के साथ दूरस्थ रूप से निष्पादित किया जाता है। फिर एसिंक प्रक्रिया को नौकरी शेड्यूलिंग सिस्टम (थ्रेडडेले का उपयोग करके) समय-समय पर पूछना चाहिए यदि काम पूरा हो जाता है।

क्या कोई नया मुख्य निर्माण करने से बचने का कोई तरीका है? क्या मैं आईओ एक्शन को क्रमबद्ध कर सकता हूं और इसे किसी भी तरह नोड में निष्पादित कर सकता हूं?

+1

एंड्रयू काउए और ओज़गुन अटामान ने मुझे प्रोग्राम को संकलित करने और नोड्स को भेजने के लिए सुझाव दिया, क्योंकि संकलित बाइनरी स्वयं निहित और rsync के लिए आसान है। ओजगुन अतमान द्वारा विकसित, काम पर नोड क्लस्टर करने के लिए हैडोप मैपराइडस कार्यक्रमों का एक उदाहरण हैड्रॉन [1] आधारित हैडोप मैपराइडस प्रोग्राम। [1] https://github.com/soostone/hadron – felipez

उत्तर

1

हाँ। packman नामक एक जादुई पुस्तकालय है।

trySerialize :: a -> IO (Serialized a) 
deserialize :: Serialized a -> IO a 
instance Typeable a => Binary (Serialized a) 

हां, उन सटीक प्रकार के होते हैं: यह चीजें आप की आवश्यकता होगी (के रूप में यह IORef या उन में से संबंधित चीजों की जरूरत नहीं है जब तक।) आप डेटा में किसी भी Haskell बात चालू करने के लिए अनुमति देता है यहाँ। आप क्रियाओं को trySerialize का उपयोग करके पैकेज कर सकते हैं, इसे कहीं भी स्थानांतरित करने के लिए Binary का उपयोग करें, और फिर deserialize उपयोग करने के लिए तैयार IO कार्रवाई को प्राप्त करने के लिए।

  • यह Thunks के रूप में चीजों को संग्रहीत करता है:

    packman के लिए

    चेतावनियां है। यह शायद आप जो चाहते हैं, ताकि नोड मूल्यांकन कर सके।

    • यह कहा गया कि, यदि आपका थंक बड़ा है, तो Binary शायद बड़ा होगा। थंक का मूल्यांकन करना इसे ठीक कर सकता है।
    • जैसा कि मैंने कहा, म्यूटेबल संदर्भ एक नो-नो हैं। देखने के लिए एक बात यह है कि उन्हें थंक्स के अंदर यह जानने के बिना है।

उसके अलावा, यह आप क्या चाहते हैं की तरह लगता है!

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