मैं कोड है कि फ़ाइलों को प्रोसेस का एक टुकड़ा पर हास्केल वितरित किया जा रहा,एक क्लस्टर
processFiles :: [FilePath] -> (FilePath -> IO()) -> IO()
यह समारोह एक async प्रक्रिया है कि एक आईओ कार्रवाई अमल spawns। यह आईओ क्रिया एक नौकरी शेड्यूलिंग सिस्टम (जैसे Slurm) के माध्यम से क्लस्टर को जमा की जानी चाहिए।
क्योंकि मुझे नौकरी शेड्यूलिंग सिस्टम का उपयोग करना चाहिए, बंद करने के लिए क्लाउड हास्केल का उपयोग करना संभव नहीं है। इसके बजाए कार्यक्रम एक नया मेन.hs लिखता है जिसमें वांछित गणना होती है, जो क्लस्टर नोड को कॉपी करता है, जिसमें सभी मॉड्यूल पर निर्भर करता है और फिर इसे "runhaskell Main.hs [opts]" के साथ दूरस्थ रूप से निष्पादित किया जाता है। फिर एसिंक प्रक्रिया को नौकरी शेड्यूलिंग सिस्टम (थ्रेडडेले का उपयोग करके) समय-समय पर पूछना चाहिए यदि काम पूरा हो जाता है।
क्या कोई नया मुख्य निर्माण करने से बचने का कोई तरीका है? क्या मैं आईओ एक्शन को क्रमबद्ध कर सकता हूं और इसे किसी भी तरह नोड में निष्पादित कर सकता हूं?
एंड्रयू काउए और ओज़गुन अटामान ने मुझे प्रोग्राम को संकलित करने और नोड्स को भेजने के लिए सुझाव दिया, क्योंकि संकलित बाइनरी स्वयं निहित और rsync के लिए आसान है। ओजगुन अतमान द्वारा विकसित, काम पर नोड क्लस्टर करने के लिए हैडोप मैपराइडस कार्यक्रमों का एक उदाहरण हैड्रॉन [1] आधारित हैडोप मैपराइडस प्रोग्राम। [1] https://github.com/soostone/hadron – felipez