2014-06-25 8 views
16

यह एक प्रश्न है कि तूफान के अधिकतम स्पॉट लंबित कार्यों के बारे में एक सवाल है। मेरे पास वर्तमान में एक स्पॉट है जो फ़ाइल को पढ़ता है और फ़ाइल में प्रत्येक पंक्ति के लिए एक टुपल उत्सर्जित करता है (मुझे पता है कि फाइलों से निपटने के लिए तूफान सबसे अच्छा समाधान नहीं है लेकिन मेरे पास इस समस्या का कोई विकल्प नहीं है)। मैंने अधिकतम स्पॉट को 50k तक लंबित करने के लिए सेट किया है ताकि प्रोसेस किए जाने के लिए टोपोलॉजी में कितने टुपल आ जाए। हालांकि, मुझे लगता है कि इस संख्या को टोपोलॉजी में कोई प्रभाव नहीं पड़ता है। मैं हर बार उत्सर्जित फाइल में सभी रिकॉर्ड देखता हूं। मेरा अनुमान है कि यह एक लूप के कारण हो सकता है जो मेरे पास अगली टुपल विधि में है जो फ़ाइल में सभी रिकॉर्ड्स को उत्सर्जित करता है। तो मेरा सवाल यह है कि जब अधिकतम स्पॉट लंबित हो जाता है तो तूफान कार्य के लिए अगले टुपल को कॉल करना बंद कर देता है? क्या इसका मतलब यह है कि मुझे हर बार एक टुपल उत्सर्जित करना चाहिए जब अगले को बुलाया जाता है?तूफान अधिकतम स्पॉट

उत्तर

18

बिल्कुल! तूफान केवल अगले आदेश के साथ अपने स्पॉट को सीमित कर सकता है, इसलिए यदि आप अगली बार प्राप्त करते समय सबकुछ ट्रांसमिट करते हैं, तो स्टॉर्म को आपके स्पॉट को थ्रॉटल करने का कोई तरीका नहीं है।

तूफान डेवलपर्स एक ही अगली कमांड के साथ एक एकल ट्यूपल उत्सर्जित करने की सलाह देते हैं। तूफान ढांचा "अधिकतम स्पॉट लंबित" आवश्यकता को पूरा करने के लिए आवश्यकतानुसार आपके स्पॉट को थ्रॉटल करेगा। यदि आप बड़ी संख्या में ट्यूपल्स उत्सर्जित कर रहे हैं, तो तूफान को थ्रोटल करने का मौका देने के लिए, अपने अधिकतम स्पॉट लंबित के दसवें हिस्से में अपने उत्सर्जन को बैच कर सकता है।

+0

क्या आप इस stackoverflow.com/questions/34327617/.. पर मदद कर सकते हैं? topology.max.spout.pending 50000000 एक समस्या है? – user5520049

14

तूफान टोपोलॉजीज में अधिकतम स्पॉट लंबित पैरामीटर है। एक टोपोलॉजी के लिए अधिकतम टोंटी मूल्य लंबित "topology.max.spout.pending" टोपोलॉजी विन्यास YAML फ़ाइल में स्थापित करने के माध्यम से विन्यस्त किया जा सकता। यह मान कितनी टुपल्स उड़ान में हो सकता है, इस पर एक सीमा डालता है, यानी किसी भी समय तूफान टोपोलॉजी में अभी तक नक़्क़ाशी या विफल नहीं हुई है। इस पैरामीटर की आवश्यकता इस तथ्य से आती है कि तूफान एक कार्य से दूसरे कार्य में टपल्स भेजने के लिए ज़ीरोएमक्यू का उपयोग करता है। यदि का उपभोक्ता पक्ष ज़ीरोएमक्यू टुपल दर के साथ बनाए रखने में असमर्थ है, तो ज़ीरोएमक्यू कतार का निर्माण शुरू होता है। आखिरकार स्पॉट पर टाइमआउट को टुपल करता है और कतारों पर अधिक दबाव जोड़ने के कारण टोपोलॉजी में फिर से चलाया जाता है। इस रोगजनक विफलता के मामले से बचने के लिए, तूफान उपयोगकर्ता को टोपल्स की संख्या पर सीमा डालने की अनुमति देता है जो टोपोलॉजी में उड़ान में हैं। यह सीमा प्रति स्पॉट कार्य आधार पर लागू होती है न कि टोपोलॉजी स्तर पर। उन मामलों के लिए जब spouts अविश्वसनीय हैं, यानी वे अपने tuples में एक संदेश आईडी उत्सर्जित नहीं करते हैं, यह मान का कोई प्रभाव नहीं पड़ता है। तूफान उपयोगकर्ताओं को लगातार सामना करने वाली समस्याओं में से एक पैरामीटर लंबित इस अधिकतम स्पॉट के लिए सही मान के साथ आ रहा है। एक बहुत छोटा मूल्य आसानी से टोपोलॉजी को भूखा कर सकता है और पर्याप्त रूप से बड़ा मूल्य टोपोलॉजी को एक बड़ी विफलताओं और प्रतिलिपि बनाने की सीमा तक टोपल्स की संख्या के साथ अधिभारित कर सकता है। उपयोगकर्ता मूल्य है कि उनके लिए सबसे अच्छा काम करता है खोजने के लिए टोपोलॉजी की कई पुनरावृत्तियों दूसरी अधिकतम टोंटी लंबित मूल्यों के साथ की तैनाती के माध्यम से जाना है।

+0

क्या आप इस http://stackoverflow.com/questions/34327617/supervsior-still-hasnt-start पर सहायता कर सकते हैं? topology.max.spout.pending \t 50000000 कोई समस्या है? –

0

एक समाधान nextTuple विधि और nextTuple में करने के लिए केवल एक चीज बाहर इनपुट कतार का निर्माण करना है कतार पोल और फेंकना है। यदि आप एकाधिक फ़ाइलों को संसाधित कर रहे हैं, तो आपकी अगली टुपल विधि को यह भी जांचना चाहिए कि कतार मतदान का नतीजा शून्य है, और यदि हां, तो आपकी कतार को पॉप्युलेट करने वाली स्रोत फ़ाइल को परमाणु रूप से रीसेट करें।

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