2011-08-29 32 views
8

के साथ foreach/doSNOW/बर्फ स्थानीय मशीन पर श्रमिकों के साथ एक सॉक क्लस्टर का उपयोग कर एक समांतर ऑपरेशन चला रहा हूं। अगर मैं सेट को सीमित करता हूं तो मैं इसे पूर्ण कर रहा हूं (एक पूर्ण परीक्षण के बजाय 70 का उपयोग करके एक परीक्षण में) तो सबकुछ ठीक काम करता है। अगर मैं पूर्ण सेट के लिए जाता हूं, तो मुझे त्रुटि मिलती है "अनसुलझा में त्रुटि (सॉकलिस्ट [[n]]): कनेक्शन से त्रुटि पढ़ने में"।"unserialize में त्रुटि" - सोच (विंडोज़)

  • मैं Windows फ़ायरवॉल में बंदरगाह अनवरोधित करने पर (दोनों/बाहर में) और Rscript/आर के लिए सभी पहुंच अनुमति देते हैं।

  • यह टाइमआउट समस्या नहीं हो सकती है क्योंकि सॉकेट टाइमआउट 365 दिनों पर सेट होता है।

  • इसके किसी विशेष कार्य के साथ नहीं एक मुद्दा है क्योंकि मैं चला सकते हैं क्रमिक रूप से ठीक (अगर मैं छमाही में डाटासेट विभाजित है और कर भी समानांतर में ठीक चलाता है दो अलग-अलग समानांतर रन)

  • सबसे अच्छा मैं आ सकता है

    साथ ही यह है कि सॉकेट पर बहुत अधिक डेटा स्थानांतरित किया जा रहा है। डेटा सीमाओं को थ्रॉटल करने के लिए क्लस्टर विकल्प प्रतीत नहीं होता है।

मुझे आगे बढ़ने के तरीके पर नुकसान हुआ है। क्या किसी ने इस मुद्दे को पहले ठीक किया है या सुझाव दे सकता है?

यहाँ कोड मैं सेटअप करने के लिए क्लस्टर का उपयोग कर रहा है:

cluster = makeCluster(degreeOfParallelism , type = "SOCK" , outfile = "") 
registerDoSNOW(cluster) 

संपादित
इस मुद्दे पूरे डाटासेट साथ constent है, लेकिन यह भी एक कम के साथ-समय-समय पर प्रकट होता है डाटासेट। यह सुझाव दे सकता है कि यह केवल डेटा सीमा मुद्दा नहीं है।

संपादित 2
मैं एक छोटे से गहरा खोदा और यह वास्तव में मेरे समारोह एक यादृच्छिक घटक यह है कि बनाता है ताकि कभी कभी एक कार्य एक त्रुटि बढ़ा देंगे है कि पता चला है। यदि मैं ऑपरेशन के अंत में क्रमशः कार्यों को चलाता हूं तो मुझे बताया गया कि कौन सा कार्य विफल हुआ। यदि मैं समानांतर में चलता हूं, तो मुझे "unserialize" त्रुटि मिलती है। मैंने कोड को लपेटने की कोशिश की जो प्रत्येक कार्य द्वारा त्रुटि = फ़ंक्शन (ई) {स्टॉप (ई)} के साथ tryCatch कॉल में निष्पादित हो जाता है लेकिन यह "unserialize" त्रुटि भी उत्पन्न करता है। मैं उलझन में हूं क्योंकि मैंने सोचा था कि बर्फ वापस मास्टर को पास करके त्रुटियों को संभालता है?

+0

आर 128 एक साथ खुले कनेक्शन तक सीमित है ... शायद यह इसका हिस्सा है? –

+0

मैं 8 कनेक्शन के साथ परीक्षण कर रहा हूँ। – SFun28

+0

लेकिन आपका प्रश्न कहता है कि सब कुछ 70 कार्यों के साथ ठीक काम करता है, इसलिए मैं उलझन में हूं। –

उत्तर

2

मैंने इस मुद्दे को SNOW के लेखक को बताया है लेकिन दुर्भाग्य से कोई जवाब नहीं मिला है।

संपादित करें
मैंने थोड़ी देर में इस मुद्दे को नहीं देखा है। मैं समानांतर/doParallel में चले गए। साथ ही, मैं अब समानांतर में निष्पादित किसी भी कोड को लपेटने के लिए try() का उपयोग कर रहा हूं। मैं मूल मुद्दे को दोबारा नहीं कर सकता।

+0

आप कैसे सकारात्मक हैं यह बर्फ में एक बग है और foreach और/या doNOW नहीं? –

+0

सकारात्मक नहीं है। जब तक मैं एक कामकाजी उदाहरण के साथ नहीं आ सकता, तब तक मेरा जवाब अनचेक कर दिया। – SFun28

+0

ऐसा लगता है कि एकाधिक कार्यकर्ता नोड हार्डड्राइव पर उसी फ़ाइल से पढ़ने की कोशिश कर रहे हैं। मेरे पास समान फ़ाइल में समानांतर ताल में चलने वाले कई मॉडल थे, जो सभी प्रकार की यादृच्छिक त्रुटियों का कारण बनते हैं। हालांकि, अगर आप कड़ी मेहनत का उपयोग करते हैं, तो आप वास्तव में क्या कार्य करता है, इस बारे में अधिक जानकारी प्रदान नहीं करते हैं, इसलिए हम कुछ हद तक अनुमान लगा रहे हैं। –

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