संग्रह करना, प्रसंस्करण करना और विश्लेषण करना स्ट्रीमिंग डेटाविज्ञापन-तकनीक जैसे उद्योगों में गहन डेटा इंजीनियरिंग शामिल है। प्रतिदिन उत्पन्न होने वाला डेटा बहुत बड़ा है (100 जीबी डेटा) और बाद के चरणों के लिए डेटा को संसाधित करने के लिए महत्वपूर्ण प्रसंस्करण समय की आवश्यकता होती है।
एक अन्य चुनौती अंतर्दृष्टि प्राप्त करने के लिए डेटासेट को जोड़ना है। प्रत्येक प्रक्रिया में औसतन 10 से अधिक डेटासेट और एकाधिक कुंजियों के साथ समान संख्या में जोड़ होते हैं। प्रत्येक कुंजी के लिए विभाजन का आकार प्रत्येक रन पर अप्रत्याशित होता है।
और, अंततः, यदि कुछ अवसरों पर डेटा की मात्रा अधिक हो जाती है, तो स्टोरेज की मेमोरी ख़त्म हो सकती है। इसका मतलब यह है कि प्रक्रिया अंतिम लेखन के बीच में ही ख़त्म हो जाएगी, जिससे उपभोक्ता इनपुट डेटा फ़्रेम को स्पष्ट रूप से पढ़ सकेंगे।
इस ब्लॉग में, हम इसका अवलोकन करेंगे डेल्टा झीलें, इसके फायदे, और डेल्टा लेक में जाकर और स्पार्क 3.0 से स्पार्क 2.4 में माइग्रेट करके उपरोक्त चुनौतियों को कैसे दूर किया जा सकता है।
डेल्टा झील क्या है?
डेटाब्रिक्स में विकसित, "डेल्टा लेक एक ओपन-सोर्स डेटा स्टोरेज परत है जो मौजूदा डेटा लेक पर चलती है और पूरी तरह से सहयोग करती है अपाचे स्पार्क एपीआई. ACID लेनदेन और स्केलेबल मेटाडेटा हैंडलिंग को लागू करने की क्षमता के साथ, डेल्टा लेक्स स्ट्रीमिंग और बैच डेटा प्रोसेसिंग को भी एकीकृत कर सकता है।
डेल्टा लेक क्लाउड में डेटा संग्रहीत करने के लिए संस्करणित Parquet फ़ाइलों का उपयोग करता है। एक बार क्लाउड स्थान कॉन्फ़िगर हो जाने पर, डेल्टा लेक ACID लेनदेन प्रदान करने के लिए तालिका या ब्लॉब स्टोर निर्देशिका में किए गए सभी परिवर्तनों को ट्रैक करता है।
डेल्टा झीलों के उपयोग के लाभ
डेल्टा लेक हजारों डेटा को समानांतर में चलाने की अनुमति देता है, अनुकूलन और विभाजन की चुनौतियों का समाधान करता है, मेटाडेटा संचालन को तेज करता है, एक लेनदेन लॉग बनाए रखता है और लगातार डेटा को अपडेट करता रहता है। नीचे हम कुछ प्रमुख लाभों पर चर्चा करते हैं:
डेल्टा लेक लेनदेन लॉग
डेल्टा लेक लेनदेन लॉग एक केवल-परिशिष्ट फ़ाइल है और इसमें डेल्टा लेक तालिका पर किए गए सभी लेनदेन का एक ऑर्डर किया गया रिकॉर्ड होता है। लेन-देन लॉग विभिन्न उपयोगकर्ताओं को दी गई तालिका को समानांतर में पढ़ने और लिखने की अनुमति देता है। यह सत्य के एकल स्रोत या केंद्रीय भंडार के रूप में कार्य करता है जो उपयोगकर्ता द्वारा तालिका में किए गए सभी परिवर्तनों को लॉग करता है। यह परमाणुता बनाए रखता है और डेल्टा झील पर किए गए लेनदेन पर लगातार नजर रखता है।
जैसा कि ऊपर उल्लेख किया गया है, स्पार्क किसी भी नए लेनदेन के लिए डेल्टा लॉग की जांच करता है, जिसके बाद डेल्टा लेक यह सुनिश्चित करता है कि उपयोगकर्ता का संस्करण हमेशा मास्टर रिकॉर्ड के साथ सिंक में है। यह यह भी सुनिश्चित करता है कि तालिका में कोई परस्पर विरोधी परिवर्तन नहीं किए जा रहे हैं। यदि डेल्टा लॉग को अपडेट करने से पहले प्रक्रिया क्रैश हो जाती है, तो फ़ाइलें किसी भी पढ़ने की प्रक्रिया के लिए उपलब्ध नहीं होंगी क्योंकि रीड्स हमेशा लेनदेन लॉग के माध्यम से जाते हैं।
लेन-देन लॉग कार्य और परमाणु प्रतिबद्धताएँ
डेल्टा लेक हर दस कमिट पर एक चेकपॉइंट बनाती है। चेकपॉइंट फ़ाइल में Parquet प्रारूप में डेटा की वर्तमान स्थिति शामिल है जिसे जल्दी से पढ़ा जा सकता है। जब कई उपयोगकर्ता एक ही समय में तालिका को संशोधित करने का प्रयास करते हैं, तो डेल्टा लेक आशावादी समवर्ती नियंत्रण का उपयोग करके संघर्षों को हल करता है।
मेटाडेटा की स्कीमा इस प्रकार है:
स्तंभ | प्रकार | Description |
प्रारूप | स्ट्रिंग | तालिका का प्रारूप, अर्थात, "डेल्टा"। |
id | स्ट्रिंग | तालिका की अद्वितीय आईडी |
नाम | स्ट्रिंग | मेटास्टोर में परिभाषित तालिका का नाम |
विवरण | स्ट्रिंग | तालिका का विवरण. |
स्थान | स्ट्रिंग | तालिका का स्थान |
पर बनाया गया | टाइमस्टैम्प | जब तालिका बनाई गई थी |
अंतिम बार संशोधित | टाइमस्टैम्प | जब तालिका को अंतिम बार संशोधित किया गया था |
विभाजनस्तंभ | तारों की सरणी | यदि तालिका विभाजित है तो विभाजन स्तंभों के नाम |
numफ़ाइलें | लंबा | तालिका के नवीनतम संस्करण में फ़ाइलों की संख्या |
गुण | स्ट्रिंग-स्ट्रिंग मानचित्र | इस तालिका के लिए सभी गुण सेट हैं |
minReaderसंस्करण | int | पाठकों का न्यूनतम संस्करण (लॉग प्रोटोकॉल के अनुसार) जो तालिका पढ़ सकता है। |
minWriterVersion | int | पाठकों का न्यूनतम संस्करण (लॉग प्रोटोकॉल के अनुसार) जो तालिका पर लिख सकता है। |
फ़ाइल जोड़ें और निकालें
जब भी कोई फ़ाइल जोड़ी जाती है या कोई मौजूदा फ़ाइल हटाई जाती है, तो ये क्रियाएं लॉग की जाती हैं। फ़ाइल पथ अद्वितीय है और इसे इसके अंदर फ़ाइलों के सेट के लिए प्राथमिक कुंजी माना जाता है। जब तालिका में पहले से मौजूद पथ पर एक नई फ़ाइल जोड़ी जाती है, तो पथ पर आँकड़े और अन्य मेटाडेटा पिछले संस्करण से अपडेट किए जाते हैं। इसी प्रकार, हटाने की कार्रवाई टाइमस्टैम्प द्वारा इंगित की जाती है। हटाने की कार्रवाई समाप्त होने तक समाधि के पत्थर के रूप में तालिका में बनी रहती है। टीटीएल (टाइम-टू-लाइव) से अधिक होने पर समाधि का पत्थर समाप्त हो जाता है।
चूँकि किसी दिए गए डेल्टा फ़ाइल के भीतर क्रियाओं को क्रम में लागू करने की गारंटी नहीं है, यह एक ही संस्करण में एक ही पथ के साथ कई फ़ाइल संचालन के लिए मान्य नहीं है।
समवर्ती संचालन विवादों को कम करने के लिए 'ऐड' या 'रिमूव' पर डेटाचेंज ध्वज को गलत पर सेट किया जा सकता है।
ऐड क्रिया की स्कीमा इस प्रकार है:
कार्यक्षेत्र नाम | डाटा प्रकार | Description |
पथ | तार | तालिका के मूल से फ़ाइल तक का एक सापेक्ष पथ, जिसे तालिका में जोड़ा जाना चाहिए |
विभाजन मान | मानचित्र[स्ट्रिंग,स्ट्रिंग] | इस फ़ाइल के लिए विभाजन स्तंभ से मान तक का मानचित्र। |
आकार | लंबा | इस फ़ाइल का आकार बाइट्स में |
संशोधनसमय | लंबा | जिस समय यह फ़ाइल बनाई गई थी, युग के बाद से मिलीसेकंड के रूप में |
डेटा बदलें | बूलियन | गलत होने पर फ़ाइल पहले से ही तालिका में मौजूद होनी चाहिए या जोड़ी गई फ़ाइल में रिकॉर्ड उसी संस्करण में एक या अधिक निष्कासन क्रियाओं में शामिल होने चाहिए |
आँकड़े | सांख्यिकी संरचना | इस फ़ाइल में डेटा के बारे में आंकड़े (उदाहरण के लिए, गिनती, कॉलम के लिए न्यूनतम/अधिकतम मान) शामिल हैं |
टैग | मानचित्र[स्ट्रिंग,स्ट्रिंग] | मानचित्र जिसमें इस फ़ाइल के बारे में मेटाडेटा है |
हटाने की कार्रवाई की स्कीमा इस प्रकार है:
कार्यक्षेत्र नाम | जानकारी प्रकार | Description |
पथ | स्ट्रिंग | किसी फ़ाइल का पूर्ण या सापेक्ष पथ जिसे तालिका से हटा दिया जाना चाहिए |
विलोपनटाइमस्टैम्प | लंबा | जिस समय विलोपन हुआ, उसे युग के बाद से मिलीसेकंड के रूप में दर्शाया गया है |
डेटा बदलें | बूलियन | गलत होने पर हटाई गई फ़ाइल के रिकॉर्ड को उसी संस्करण में एक या अधिक फ़ाइल जोड़ें क्रियाओं में शामिल किया जाना चाहिए |
विस्तारितफ़ाइलमेटाडेटा | बूलियन | सही होने पर फ़ील्ड पार्टीशनवैल्यू, आकार और टैग मौजूद होते हैं |
विभाजन मान | मानचित्र[स्ट्रिंग, स्ट्रिंग] | इस फ़ाइल के लिए विभाजन स्तंभ से मान तक का मानचित्र। विभाजन मान क्रमांकन भी देखें |
आकार | लंबा | इस फ़ाइल का आकार बाइट्स में |
टैग | मानचित्र[स्ट्रिंग, स्ट्रिंग] | मानचित्र जिसमें इस फ़ाइल के बारे में मेटाडेटा है |
मेटाडेटा के स्कीमा में प्रत्येक ऐड/रिमूव एक्शन पर फ़ाइल पथ होता है और स्पार्क रीड प्रक्रिया को फ़ाइल लिस्टिंग प्राप्त करने के लिए पूर्ण स्कैन करने की आवश्यकता नहीं होती है।
यदि लेन-देन लॉग को अपडेट किए बिना कोई लेखन विफल हो जाता है, क्योंकि उपभोक्ता की रीडिंग हमेशा मेटाडेटा के माध्यम से जाएगी, उन फ़ाइलों को नजरअंदाज कर दिया जाएगा।
स्पार्क 3.0 पर माइग्रेट करने के लाभ
डेल्टा झील के लाभों का लाभ उठाने के अलावा, स्पार्क 3.0 में स्थानांतरित होने से निम्नलिखित तरीकों से डेटा प्रोसेसिंग में सुधार हुआ:
तिरछा जुड़ाव अनुकूलन
डेटा तिरछा एक ऐसी स्थिति है जिसमें तालिका का डेटा क्लस्टर में विभाजनों के बीच असमान रूप से वितरित किया जाता है और प्रश्नों के प्रदर्शन को गंभीर रूप से डाउनग्रेड कर सकता है, विशेष रूप से जुड़ने वाले प्रश्नों के प्रदर्शन को। तिरछापन क्लस्टर में अत्यधिक असंतुलन पैदा कर सकता है जिससे डेटा प्रोसेसिंग समय बढ़ सकता है।
डेटा विषमता की स्थिति को मुख्य रूप से तीन तरीकों से नियंत्रित किया जा सकता है।
- अधिक समान रूप से वितरित डेटा पर समानता बढ़ाने के लिए कॉन्फ़िगरेशन "स्पार्क.एसक्यूएल.शफल.पार्टीशन" का उपयोग करना।
- तालिका के लिए बाइट्स में अधिकतम आकार तक स्पार्क.sql.autoBroadcastJoinThreshold कॉन्फ़िगरेशन का उपयोग करके प्रसारण हैश जॉइन थ्रेशोल्ड को बढ़ाना, जिसे जॉइन करने के दौरान सभी वर्कर नोड्स पर प्रसारित किया जाना है।
- कुंजी साल्टिंग (एक ही कुंजी को अलग बनाने के लिए तिरछी कुंजियों में उपसर्ग जोड़ें और फिर डेटा वितरण को समायोजित करें)।
स्पार्क 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% की कमी
- डेटा की हानि और प्रक्रियाओं की मृत्यु को रोकना, जो अक्सर तब होती थी जब सिस्टम मेमोरी से बाहर हो जाता था या सिस्टम में किसी गड़बड़ी के कारण प्रोसेसिंग बंद हो जाती थी।
- प्रक्रिया विफल होने की स्थिति में सूचित करने के लिए निगरानी और चेतावनी सुविधाएँ स्थापित की गईं
- प्रक्रियाओं के बीच पूर्ण स्वचालन और निर्भरता प्रबंधन प्राप्त करने के लिए एयरफ्लो का उपयोग करके पूर्ण ऑर्केस्ट्रेशन
- &
- 9
- पूर्ण
- कार्य
- Ad
- अतिरिक्त
- लाभ
- सब
- सभी लेन - देन
- के बीच में
- विश्लेषण
- अपाचे
- अपाचे स्पार्क
- एपीआई
- स्वत:
- स्वचालन
- एडब्ल्यूएस
- ब्लॉग
- अभियान
- ले जाने के
- चुनौती
- जाँचता
- बादल
- स्तंभ
- उपभोक्ताओं
- सामग्री
- सहकारी
- वर्तमान
- वर्तमान स्थिति
- साइबर सुरक्षा
- तिथि
- डेटा लेक
- डेटा संसाधन
- डेटा भंडारण
- डाटब्रिक्स
- सौदा
- डेल्टा
- अभियांत्रिकी
- निष्पादन
- विशेषताएं
- फ़ील्ड
- अंत में
- फर्म
- प्रारूप
- ढांचा
- पूर्ण
- गड़बड़
- गूगल
- हैकर्स
- हैंडलिंग
- हैश
- कैसे
- HTTPS
- विशाल
- प्रभाव
- उद्योगों
- अंतर्दृष्टि
- IT
- में शामिल होने
- कुंजी
- Instagram पर
- ताज़ा
- नेतृत्व
- लिस्टिंग
- स्थान
- प्रमुख
- निर्माण
- प्रबंध
- नक्शा
- मैप्स
- नेटवर्क
- प्रसार यातायात
- नोड्स
- संचालन
- आदेश
- अन्य
- प्रदर्शन
- लगाना
- वर्तमान
- पाठकों
- पढ़ना
- अभिलेख
- परिणाम
- रन
- स्कैन
- सेट
- आकार
- विभाजित
- एसक्यूएल
- राज्य
- आँकड़े
- भंडारण
- की दुकान
- स्ट्रीमिंग
- प्रणाली
- तकनीक
- पहर
- यातायात
- ट्रांजेक्शन
- लेनदेन
- उपयोगकर्ताओं
- मूल्य
- आयतन
- अंदर