2016-03-10 19 views
7

हम एडब्ल्यूएस किनेसिस स्ट्रीम से जुड़े स्पार्क स्ट्रीमिंग का उपयोग कर रहे हैं ताकि हम जो मीट्रिक्स प्राप्त कर रहे हैं उन्हें एकत्रित (प्रति मिनट) और उन्हें उपलब्ध कराने के लिए influxdb को समेकन लिखने के लिए एक वास्तविक समय डैशबोर्ड।Kinesis स्पार्क स्ट्रीमिंग रिसीवर काम करता है

सब कुछ ठीक काम कर रहा है, लेकिन अब हम इस बात पर विचार कर रहे हैं कि हमें तैनाती और सिस्टम की अंतिम विफलताओं के लिए विरामों को कैसे प्रबंधित करना चाहिए।

दस्तावेज़ कहते हैं कि किनेसिस एकीकरण पुस्तकालय विफलताओं, चेकपॉइंट आदि के लिए पहले ही तैयार है, लेकिन मैं यह स्पष्ट करना चाहता हूं कि चेकपॉइंट कैसे काम कर रहा है।

Kinesis रिसीवर अमेज़न सॉफ्टवेयर लाइसेंस (एएसएल) के तहत अमेज़न द्वारा प्रदान की Kinesis क्लाइंट लाइब्रेरी (KCl) का उपयोग कर एक इनपुट DStream पैदा करता है। केसीएल अपाचे 2.0 लाइसेंस प्राप्त एडब्लूएस जावा एसडीके के शीर्ष पर बनाता है और श्रमिकों, चेकपॉइंट्स और शार्ड लीज़ की अवधारणाओं के माध्यम से भार संतुलन, गलती सहनशीलता, चेकपॉइंटिंग प्रदान करता है।

हम किनेसिस के लिए चेकपॉइंट अंतराल को परिभाषित कर सकते हैं, लेकिन जहां तक ​​मैं समझता हूं कि स्ट्रीम के किस बिंदु तक हमने मेट्रिक्स का उपभोग किया है, तब तक यह चिह्नित करने के लिए उपयोग किया जाता है। तो, हमें अभी भी स्पार्क स्ट्रीमिंग से चेकपॉइंटिंग सुविधा का उपयोग करने की आवश्यकता है, है ना?

चूंकि हम प्रति मिनट डेटा एकत्र कर रहे हैं, हमारे बैच अंतराल 60 सेकंड है लेकिन उन 60 सेकंड के दौरान हम लगातार स्ट्रीम से डेटा प्राप्त कर रहे हैं।

  • जब मैं (आदेश काम का एक नया संस्करण को तैनात करने में) JavaStreamingContext.stop (...) पर अमल, रिसीवर बंद कर दिया और हो जाएगा चौकी करेंगे:

    यहाँ मेरी सवाल कर रहे हैं अंत में अद्यतन किया जाना चाहिए?

  • स्पार्क स्ट्रीमिंग चेकपॉइंट कब होगा? नौकरी के हर निष्पादन के बाद? इससे पहले?
  • मानते हैं कि हमारे पास चेकपॉइंट दोनों काम कर रहे हैं, हम विफलता के मामले में स्थिरता की गारंटी कैसे दे सकते हैं? ऐसा लगता है कि हर बार चेकपॉइंटिंग स्ट्रीमिंग हो रही है, इसे एक ही समय में किनेसिस को चेकपॉइंट करने की आवश्यकता है, अन्यथा हम एक ही डेटा को फिर से पढ़ सकते हैं। हम इसे कैसे संभालेंगे?
  • यदि अंतर्निहित सेवा (इस मामले में influxdb) नीचे है, तो मुझे क्या करना चाहिए? एक पुनः प्रयास तंत्र कार्यान्वित करें? यदि ऐसा है, तो इसे थोड़ी देर बाद पुनः प्रयास करना बंद करना होगा, अन्यथा हम आउट ऑफ़ मेमोरी चलाएंगे।

अग्रिम धन्यवाद!

उत्तर

0

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

  • checkpointing DStream स्तर पर काम करता है, तो इसका मतलब है कि आप अपने पाइप लाइन के विभिन्न चरणों पर चौकियों प्रदर्शन कर सकते हैं। यह वह बिंदु हो सकता है जब स्पार्क रिसीवर द्वारा उत्पन्न ब्लॉकों से आपका पहला आरडीडी बनाता है या यह आपके रूपांतरित आरडीडी हो सकता है जिसे आप अपने मीट्रिक की गणना के बाद बाद के चरणों में प्राप्त कर सकते हैं।तो जब आप (यदि आप इसे शान से बंद) बंद फोन आप पिछले RDD संसाधित अपने रिसीवर बिंदु जो आप अपने पाइप लाइन में चुन लिया है

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

  • हर बार स्पार्क आपके आवेदन को चलाने के दौरान कुछ विलंबता की अपेक्षा करेगा, यह आपके चेकपॉइंट डेटा से स्ट्रीमिंग संदर्भ बनाएगा। तो आइए कहें कि अगर आपके राज्य में 7 से आपकी मेट्रिक्स है, उदाहरण के लिए आपके केनेसिस रिसीवर बंद होने के बाद अंतिम स्पार्क बंद हो गया है, तो जब आपका स्ट्रीमिंग संदर्भ पुनर्प्राप्त किया जाएगा, तो यह फिर से राज्य 7 में होगा और केवल नए बैनेज को नए केनेसिस डेटा से उत्पन्न होगा इसे 8

  • अच्छी तरह से बताएगा, यह आपके लिए है कि आप अपने उत्पाद को कैसे आर्किटेक्ट करेंगे। शायद आपकी निर्भरता से सफलतापूर्वक आपके डेटा को संभालने के बाद ही चेकपॉइंटिंग करना समझदारी है (कारण मैं अल्पकालिक कनेक्टिविटी मुद्दों से बचने के लिए पुनः प्रयास तंत्र लागू करने का सुझाव दूंगा)। लेकिन उस

पर आपको पूरा उत्तर देने के लिए बहुत कम जानकारी है
संबंधित मुद्दे