स्पार्क 3.0 और डेल्टा लेक के साथ डेटा प्रोसेसिंग में सुधार

स्रोत नोड: 1013539

संग्रह करना, प्रसंस्करण करना और विश्लेषण करना स्ट्रीमिंग डेटाविज्ञापन-तकनीक जैसे उद्योगों में गहन डेटा इंजीनियरिंग शामिल है। प्रतिदिन उत्पन्न होने वाला डेटा बहुत बड़ा है (100 जीबी डेटा) और बाद के चरणों के लिए डेटा को संसाधित करने के लिए महत्वपूर्ण प्रसंस्करण समय की आवश्यकता होती है।

एक अन्य चुनौती अंतर्दृष्टि प्राप्त करने के लिए डेटासेट को जोड़ना है। प्रत्येक प्रक्रिया में औसतन 10 से अधिक डेटासेट और एकाधिक कुंजियों के साथ समान संख्या में जोड़ होते हैं। प्रत्येक कुंजी के लिए विभाजन का आकार प्रत्येक रन पर अप्रत्याशित होता है।

और, अंततः, यदि कुछ अवसरों पर डेटा की मात्रा अधिक हो जाती है, तो स्टोरेज की मेमोरी ख़त्म हो सकती है। इसका मतलब यह है कि प्रक्रिया अंतिम लेखन के बीच में ही ख़त्म हो जाएगी, जिससे उपभोक्ता इनपुट डेटा फ़्रेम को स्पष्ट रूप से पढ़ सकेंगे।

इस ब्लॉग में, हम इसका अवलोकन करेंगे डेल्टा झीलें, इसके फायदे, और डेल्टा लेक में जाकर और स्पार्क 3.0 से स्पार्क 2.4 में माइग्रेट करके उपरोक्त चुनौतियों को कैसे दूर किया जा सकता है। 

डेल्टा झील क्या है?

डेटाब्रिक्स में विकसित, "डेल्टा लेक एक ओपन-सोर्स डेटा स्टोरेज परत है जो मौजूदा डेटा लेक पर चलती है और पूरी तरह से सहयोग करती है अपाचे स्पार्क एपीआई. ACID लेनदेन और स्केलेबल मेटाडेटा हैंडलिंग को लागू करने की क्षमता के साथ, डेल्टा लेक्स स्ट्रीमिंग और बैच डेटा प्रोसेसिंग को भी एकीकृत कर सकता है। 

डेल्टा लेक क्लाउड में डेटा संग्रहीत करने के लिए संस्करणित Parquet फ़ाइलों का उपयोग करता है। एक बार क्लाउड स्थान कॉन्फ़िगर हो जाने पर, डेल्टा लेक ACID लेनदेन प्रदान करने के लिए तालिका या ब्लॉब स्टोर निर्देशिका में किए गए सभी परिवर्तनों को ट्रैक करता है। 

डेल्टा झीलों के उपयोग के लाभ 

डेल्टा लेक हजारों डेटा को समानांतर में चलाने की अनुमति देता है, अनुकूलन और विभाजन की चुनौतियों का समाधान करता है, मेटाडेटा संचालन को तेज करता है, एक लेनदेन लॉग बनाए रखता है और लगातार डेटा को अपडेट करता रहता है। नीचे हम कुछ प्रमुख लाभों पर चर्चा करते हैं: 

डेल्टा लेक लेनदेन लॉग

डेल्टा लेक लेनदेन लॉग एक केवल-परिशिष्ट फ़ाइल है और इसमें डेल्टा लेक तालिका पर किए गए सभी लेनदेन का एक ऑर्डर किया गया रिकॉर्ड होता है। लेन-देन लॉग विभिन्न उपयोगकर्ताओं को दी गई तालिका को समानांतर में पढ़ने और लिखने की अनुमति देता है। यह सत्य के एकल स्रोत या केंद्रीय भंडार के रूप में कार्य करता है जो उपयोगकर्ता द्वारा तालिका में किए गए सभी परिवर्तनों को लॉग करता है। यह परमाणुता बनाए रखता है और डेल्टा झील पर किए गए लेनदेन पर लगातार नजर रखता है।

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

लेन-देन लॉग कार्य और परमाणु प्रतिबद्धताएँ

डेल्टा लेक हर दस कमिट पर एक चेकपॉइंट बनाती है। चेकपॉइंट फ़ाइल में Parquet प्रारूप में डेटा की वर्तमान स्थिति शामिल है जिसे जल्दी से पढ़ा जा सकता है। जब कई उपयोगकर्ता एक ही समय में तालिका को संशोधित करने का प्रयास करते हैं, तो डेल्टा लेक आशावादी समवर्ती नियंत्रण का उपयोग करके संघर्षों को हल करता है।

मेटाडेटा की स्कीमा इस प्रकार है: 

स्तंभप्रकारDescription
प्रारूपस्ट्रिंगतालिका का प्रारूप, अर्थात, "डेल्टा"।
idस्ट्रिंगतालिका की अद्वितीय आईडी
नामस्ट्रिंगमेटास्टोर में परिभाषित तालिका का नाम
विवरणस्ट्रिंगतालिका का विवरण.
स्थान स्ट्रिंगतालिका का स्थान
पर बनाया गयाटाइमस्टैम्पजब तालिका बनाई गई थी
अंतिम बार संशोधितटाइमस्टैम्पजब तालिका को अंतिम बार संशोधित किया गया था
विभाजनस्तंभतारों की सरणीयदि तालिका विभाजित है तो विभाजन स्तंभों के नाम
numफ़ाइलेंलंबातालिका के नवीनतम संस्करण में फ़ाइलों की संख्या
गुणस्ट्रिंग-स्ट्रिंग मानचित्रइस तालिका के लिए सभी गुण सेट हैं
minReaderसंस्करणintपाठकों का न्यूनतम संस्करण (लॉग प्रोटोकॉल के अनुसार) जो तालिका पढ़ सकता है।
minWriterVersionintपाठकों का न्यूनतम संस्करण (लॉग प्रोटोकॉल के अनुसार) जो तालिका पर लिख सकता है।
स्रोत: GitHub

फ़ाइल जोड़ें और निकालें

जब भी कोई फ़ाइल जोड़ी जाती है या कोई मौजूदा फ़ाइल हटाई जाती है, तो ये क्रियाएं लॉग की जाती हैं। फ़ाइल पथ अद्वितीय है और इसे इसके अंदर फ़ाइलों के सेट के लिए प्राथमिक कुंजी माना जाता है। जब तालिका में पहले से मौजूद पथ पर एक नई फ़ाइल जोड़ी जाती है, तो पथ पर आँकड़े और अन्य मेटाडेटा पिछले संस्करण से अपडेट किए जाते हैं। इसी प्रकार, हटाने की कार्रवाई टाइमस्टैम्प द्वारा इंगित की जाती है। हटाने की कार्रवाई समाप्त होने तक समाधि के पत्थर के रूप में तालिका में बनी रहती है। टीटीएल (टाइम-टू-लाइव) से अधिक होने पर समाधि का पत्थर समाप्त हो जाता है।

चूँकि किसी दिए गए डेल्टा फ़ाइल के भीतर क्रियाओं को क्रम में लागू करने की गारंटी नहीं है, यह एक ही संस्करण में एक ही पथ के साथ कई फ़ाइल संचालन के लिए मान्य नहीं है।

समवर्ती संचालन विवादों को कम करने के लिए 'ऐड' या 'रिमूव' पर डेटाचेंज ध्वज को गलत पर सेट किया जा सकता है।

ऐड क्रिया की स्कीमा इस प्रकार है:

कार्यक्षेत्र नामडाटा प्रकारDescription
पथतारतालिका के मूल से फ़ाइल तक का एक सापेक्ष पथ, जिसे तालिका में जोड़ा जाना चाहिए
विभाजन मानमानचित्र[स्ट्रिंग,स्ट्रिंग]इस फ़ाइल के लिए विभाजन स्तंभ से मान तक का मानचित्र। 
आकारलंबाइस फ़ाइल का आकार बाइट्स में
संशोधनसमयलंबाजिस समय यह फ़ाइल बनाई गई थी, युग के बाद से मिलीसेकंड के रूप में
डेटा बदलेंबूलियनगलत होने पर फ़ाइल पहले से ही तालिका में मौजूद होनी चाहिए या जोड़ी गई फ़ाइल में रिकॉर्ड उसी संस्करण में एक या अधिक निष्कासन क्रियाओं में शामिल होने चाहिए
आँकड़ेसांख्यिकी संरचनाइस फ़ाइल में डेटा के बारे में आंकड़े (उदाहरण के लिए, गिनती, कॉलम के लिए न्यूनतम/अधिकतम मान) शामिल हैं
टैगमानचित्र[स्ट्रिंग,स्ट्रिंग]मानचित्र जिसमें इस फ़ाइल के बारे में मेटाडेटा है

हटाने की कार्रवाई की स्कीमा इस प्रकार है:

कार्यक्षेत्र नामजानकारी प्रकारDescription
पथस्ट्रिंगकिसी फ़ाइल का पूर्ण या सापेक्ष पथ जिसे तालिका से हटा दिया जाना चाहिए
विलोपनटाइमस्टैम्पलंबाजिस समय विलोपन हुआ, उसे युग के बाद से मिलीसेकंड के रूप में दर्शाया गया है
डेटा बदलेंबूलियनगलत होने पर हटाई गई फ़ाइल के रिकॉर्ड को उसी संस्करण में एक या अधिक फ़ाइल जोड़ें क्रियाओं में शामिल किया जाना चाहिए
विस्तारितफ़ाइलमेटाडेटाबूलियनसही होने पर फ़ील्ड पार्टीशनवैल्यू, आकार और टैग मौजूद होते हैं
विभाजन मानमानचित्र[स्ट्रिंग, स्ट्रिंग]इस फ़ाइल के लिए विभाजन स्तंभ से मान तक का मानचित्र। विभाजन मान क्रमांकन भी देखें
आकारलंबाइस फ़ाइल का आकार बाइट्स में
टैगमानचित्र[स्ट्रिंग, स्ट्रिंग]मानचित्र जिसमें इस फ़ाइल के बारे में मेटाडेटा है
स्रोत: GitHub

मेटाडेटा के स्कीमा में प्रत्येक ऐड/रिमूव एक्शन पर फ़ाइल पथ होता है और स्पार्क रीड प्रक्रिया को फ़ाइल लिस्टिंग प्राप्त करने के लिए पूर्ण स्कैन करने की आवश्यकता नहीं होती है।

यदि लेन-देन लॉग को अपडेट किए बिना कोई लेखन विफल हो जाता है, क्योंकि उपभोक्ता की रीडिंग हमेशा मेटाडेटा के माध्यम से जाएगी, उन फ़ाइलों को नजरअंदाज कर दिया जाएगा। 

स्पार्क 3.0 पर माइग्रेट करने के लाभ

डेल्टा झील के लाभों का लाभ उठाने के अलावा, स्पार्क 3.0 में स्थानांतरित होने से निम्नलिखित तरीकों से डेटा प्रोसेसिंग में सुधार हुआ:

तिरछा जुड़ाव अनुकूलन

डेटा तिरछा एक ऐसी स्थिति है जिसमें तालिका का डेटा क्लस्टर में विभाजनों के बीच असमान रूप से वितरित किया जाता है और प्रश्नों के प्रदर्शन को गंभीर रूप से डाउनग्रेड कर सकता है, विशेष रूप से जुड़ने वाले प्रश्नों के प्रदर्शन को। तिरछापन क्लस्टर में अत्यधिक असंतुलन पैदा कर सकता है जिससे डेटा प्रोसेसिंग समय बढ़ सकता है।

डेटा विषमता की स्थिति को मुख्य रूप से तीन तरीकों से नियंत्रित किया जा सकता है।

  1. अधिक समान रूप से वितरित डेटा पर समानता बढ़ाने के लिए कॉन्फ़िगरेशन "स्पार्क.एसक्यूएल.शफल.पार्टीशन" का उपयोग करना।
  2. तालिका के लिए बाइट्स में अधिकतम आकार तक स्पार्क.sql.autoBroadcastJoinThreshold कॉन्फ़िगरेशन का उपयोग करके प्रसारण हैश जॉइन थ्रेशोल्ड को बढ़ाना, जिसे जॉइन करने के दौरान सभी वर्कर नोड्स पर प्रसारित किया जाना है।
  3. कुंजी साल्टिंग (एक ही कुंजी को अलग बनाने के लिए तिरछी कुंजियों में उपसर्ग जोड़ें और फिर डेटा वितरण को समायोजित करें)।

स्पार्क 3.0 ने नए अनुकूली निष्पादन ढांचे के साथ रनटाइम आंकड़ों के आधार पर ऑटो हैंडलिंग स्क्यू जॉइन में एक अनुकूलन जोड़ा है।

तिरछी विभाजन स्थिति

स्पार्क 2.4 के पिछले संस्करण में मौजूद तिरछे विभाजन की चुनौती का नेटवर्क समय और किसी विशेष कार्य के निष्पादन समय पर भारी प्रभाव पड़ा। इसके अलावा, इससे निपटने के तरीके ज्यादातर मैनुअल थे। स्पार्क 3.0 इन चुनौतियों पर काबू पाता है।

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

तिरछे जुड़ाव विभाजन की गणना रनटाइम मानचित्र आँकड़ों से डेटा आकार और पंक्ति गणना द्वारा की जाती है।

इष्टतमीकरण

से गृहीत किया गया:अपाचे स्पार्क जीरा

उपरोक्त तालिका से, डेटाफ़्रेम अभियान डेटाफ़्रेम संगठनों के साथ जुड़ते हैं। संगठनों में से एक विभाजन (विभाजन 0) बड़ा और तिरछा है। विभाजन 0 पिछले चरण (मानचित्र-9 से मानचित्र-0) के 8 मानचित्रों का परिणाम है। स्पार्क का ऑप्टिमाइज़स्क्यूडजॉइन नियम विभाजन को 3 में विभाजित करेगा और फिर 3 अलग-अलग कार्य बनाएगा, जिनमें से प्रत्येक विभाजन 0 से आंशिक विभाजन होगा (मानचित्र-0 से मानचित्र-2, मानचित्र-3 से मानचित्र-5, और मानचित्र-6 से मानचित्र-9) और अभियान विभाजन 0 के साथ जुड़ जाता है। इस दृष्टिकोण के परिणामस्वरूप तालिका संगठनों के आंशिक विभाजनों की संख्या के बराबर तालिका अभियानों के विभाजन 0 को पढ़ने से अतिरिक्त लागत आती है।

अंतिम परिणाम

डेल्टा लेक और स्पार्क 3.0 का उपयोग करके, हमने विज्ञापन तकनीक फर्म के लिए निम्नलिखित परिणाम सक्षम किए:

  • डाटा प्रोसेसिंग का समय 15 घंटे से घटाकर 5-6 घंटे कर दिया गया
  • AWS EMR लागत में 50% की कमी
  • डेटा की हानि और प्रक्रियाओं की मृत्यु को रोकना, जो अक्सर तब होती थी जब सिस्टम मेमोरी से बाहर हो जाता था या सिस्टम में किसी गड़बड़ी के कारण प्रोसेसिंग बंद हो जाती थी।
  • प्रक्रिया विफल होने की स्थिति में सूचित करने के लिए निगरानी और चेतावनी सुविधाएँ स्थापित की गईं
  • प्रक्रियाओं के बीच पूर्ण स्वचालन और निर्भरता प्रबंधन प्राप्त करने के लिए एयरफ्लो का उपयोग करके पूर्ण ऑर्केस्ट्रेशन
स्रोत: https://www.smartdatacollective.com/improving-data-processing-with-spark-3-delta-lake/

समय टिकट:

से अधिक स्मार्टडाटा कलेक्टिव