मैं समझने की कोशिश कर रहा हूं कि स्पार्क स्ट्रीमिंग ऐप को अधिक गलती टोलरेंट (विशेष रूप से डाउनस्ट्रीम निर्भरताओं को लिखने का प्रयास करते समय) कैसे बनाना है, और मुझे नहीं पता कि सबसे अच्छा तरीका क्या है कैसंड्रा, डायनेमो डीबी, आदि जैसे बाहरी स्रोतों को परिणाम लिखने की कोशिश में असफलताओं को संभालने के लिए हैअपाचे स्पार्क स्ट्रीमिंग, डाउनस्ट्रीम निर्भरता विफलताओं को कैसे संभालें
उदाहरण के लिए, मेरे पास स्पार्क स्ट्रीमिंग नौकरी है जो स्ट्रीम (काफ्का, फ्ल्यूम इत्यादि ... से डेटा खींचती है ' टी ने अभी तक किस तकनीक का उपयोग करने के लिए अंतिम रूप दिया है), समान वस्तुओं को एक साथ जोड़ता है, और फिर परिणामों को बाहरी स्टोर में लिखता है। (यानी कैसंड्रा, डायनेमो डीबी, या जो भी मेरे डीस्ट्रीम कंप्यूटेशंस के परिणाम प्राप्त कर रहा है)।
मैं यह समझने की कोशिश कर रहा हूं कि मैं उस मामले को कैसे संभाला हूं जहां बाहरी निर्भरता लिखने के लिए उपलब्ध नहीं है। शायद क्लस्टर नीचे चला गया, शायद अनुमति समस्याएं हैं, आदि, लेकिन मेरा काम बाहरी निर्भरता के परिणाम नहीं लिख सकता है। स्पार्क स्ट्रीमिंग को रोकने का कोई तरीका है ताकि रिसीवर डेटा बैच जारी नहीं रख सकें? क्या मुझे बस वर्तमान बैच सोना चाहिए और रिसीवर बैचों को स्टोर करना जारी रखेगा? यदि समस्या क्षणिक (कुछ सेकंड) है, तो बैच जारी रखना स्वीकार्य हो सकता है, लेकिन क्या होता है यदि निर्भरता कुछ मिनट या 1+ घंटे के लिए नीचे जाती है?
एक विचार था कि मेरे पास एक मॉनिटर प्रक्रिया थी जो पृष्ठभूमि में निर्भरताओं के स्वास्थ्य को देखती है, और यदि यह पता चलता है कि यह "अस्वास्थ्यकर" है, तो यह नौकरी को रोक देगा। फिर, जब सभी निर्भरता स्वस्थ होती है, तो मैं नौकरी का बैक अप ले सकता हूं और बाहरी डेटा पर लिखे गए सभी डेटा को संसाधित नहीं कर सकता।
एक और विचार था कि मैं किसी भी तरह से DStream forEachRdd विधि में सिग्नल करना था, कि कोई समस्या थी। क्या कोई अपवाद है कि मैं डीस्ट्रीम में फेंक सकता हूं जो ड्राइवर को वापस संकेत देगा कि इसे रोकना चाहिए?
अगर किसी को बाहरी गलती सहनशीलता को संभालने के तरीके पर कोई अनुभव है, या मुझे अच्छे लेख/वीडियो पर इंगित कर सकते हैं, तो यह बहुत अच्छा होगा।
धन्यवाद
मुझे यकीन नहीं है, लेकिन डाउनस्ट्रीम डेटा रिसीवर/स्टोरेज को विफलताओं को स्वयं संभालना चाहिए? स्पार्क की ज़िम्मेदारी इसके बारे में चिंता करने की ज़िम्मेदारी से परे है। अगर विफलता होती है तो यह निगरानी और चेतावनी के बारे में अधिक है, ताकि इंजीनियरों को अधिसूचित किया जा सके और तुरंत विफलता की जांच की जा सके। – keypoint