2014-05-07 16 views
10

मान लें कि मेरे पास स्पार्क स्ट्रीमिंग एप्लिकेशन में 2 या अधिक एक्जिक्यूटर्स हैं।स्पार्क स्ट्रीमिंग में निष्पादकों को नौकरी कैसे सौंपी जाती है?

मैंने 10 सेकेंड का बैच टाइम सेट किया है, इसलिए मेरे एचडीएफएस से इनपुट पढ़ने के हर 10 सेकंड में नौकरी शुरू हो जाती है।

यदि प्रत्येक नौकरी 10 सेकंड से अधिक समय तक चलती है, तो शुरू की गई नई नौकरी एक नि: शुल्क निष्पादक को सौंपी जाती है?

भले ही पिछला कोई पूरा न हो?

मुझे पता है कि यह एक स्पष्ट उत्तर की तरह लगता है लेकिन मुझे वेबसाइट में या स्पार्क स्ट्रीमिंग से संबंधित पेपर पर नौकरी शेड्यूलिंग के बारे में कुछ भी नहीं मिला है।

यदि आप कुछ लिंक जानते हैं जहां उन सभी चीजों को समझाया गया है, तो मैं वास्तव में उन्हें देखने की सराहना करता हूं।

धन्यवाद।

उत्तर

20

वास्तव में, स्पार्क स्ट्रीमिंग के वर्तमान कार्यान्वयन और डिफ़ॉल्ट कॉन्फ़िगरेशन के तहत, केवल नौकरी सक्रिय है (यानी निष्पादन के तहत) किसी भी समय। तो यदि एक बैच की प्रसंस्करण 10 सेकंड से अधिक समय लेती है, तो अगली बैच की नौकरियां कतारबद्ध रहेंगी।

इसे एक प्रायोगिक स्पार्क संपत्ति "स्पार्क.स्ट्रीमिंग.कॉनक्रूरेंट जॉब्स" के साथ बदला जा सकता है जो डिफ़ॉल्ट रूप से 1 पर सेट होता है। वर्तमान में यह दस्तावेज नहीं है (शायद मुझे इसे जोड़ना चाहिए)।

कारण 1 पर सेट होने का कारण यह है कि समवर्ती नौकरियां संभावित रूप से संसाधनों के अजीब साझाकरण का कारण बन सकती हैं और इससे सिस्टम को पर्याप्त संसाधनों को पर्याप्त रूप से संसाधित करने के लिए सिस्टम में पर्याप्त संसाधन हैं या नहीं, यह डीबग करना मुश्किल हो सकता है। एक समय में केवल 1 नौकरी चलने के साथ, यह देखना आसान है कि बैच प्रसंस्करण समय < बैच अंतराल, तो सिस्टम स्थिर रहेगा। यह माना जाता है कि यह कुछ शर्तों के तहत संसाधनों का सबसे कुशल उपयोग नहीं हो सकता है। हम निश्चित रूप से भविष्य में इसे सुधारने की उम्मीद करते हैं।

इस meetup स्लाइड्स (क्षमा करें, लापरवाह स्वयं विज्ञापन के बारे में :)) में स्पार्क स्ट्रीमिंग के आंतरिक संबंधों के बारे में थोड़ी सी सामग्री है। यह आपके लिए उपयोगी हो सकता है।

+0

हम इस चीज से संबंधित एक परियोजना पर काम कर रहे हैं, इसलिए मैं इसे और अधिक समझने के लिए खुशी से स्लाइड में देखूंगा। धन्यवाद। – gprivitera

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