अपाचे आइसबर्ग बहुत बड़े विश्लेषणात्मक डेटासेट के लिए एक ओपन टेबल प्रारूप है, जो समय के साथ विकसित होने और बदलने वाले डेटासेट की स्थिति पर मेटाडेटा जानकारी को कैप्चर करता है। यह SQL तालिका की तरह काम करने वाले उच्च-प्रदर्शन तालिका प्रारूप का उपयोग करके स्पार्क, ट्रिनो, PrestoDB, Flink, और Hive सहित इंजनों की गणना करने के लिए तालिकाएँ जोड़ता है। आइसबर्ग डेटा झीलों में एसीआईडी लेनदेन के समर्थन और स्कीमा और विभाजन विकास, समय यात्रा और रोलबैक जैसी सुविधाओं के लिए बहुत लोकप्रिय हो गया है।
Apache Iceberg इंटीग्रेशन AWS एनालिटिक्स सेवाओं सहित समर्थित है अमेज़ॅन ईएमआर, अमेज़न एथेना, तथा एडब्ल्यूएस गोंद. Amazon EMR स्पार्क, हाइव, ट्रिनो और फ्लिंक के साथ क्लस्टर प्रदान कर सकता है जो आइसबर्ग चला सकते हैं। Amazon EMR संस्करण 6.5.0 से शुरू करके, आप कर सकते हैं अपने ईएमआर क्लस्टर के साथ आइसबर्ग का उपयोग करें बूटस्ट्रैप कार्रवाई की आवश्यकता के बिना। 2022 की शुरुआत में, AWS ने Apache Iceberg द्वारा संचालित एथेना ACID लेनदेन की सामान्य उपलब्धता की घोषणा की। हाल ही में जारी किया गया एथेना क्वेरी इंजन संस्करण 3 आइसबर्ग तालिका प्रारूप के साथ बेहतर एकीकरण प्रदान करता है। एडब्ल्यूएस गोंद 3.0 और बाद में अपाचे आइसबर्ग ढांचे का समर्थन करता है डेटा झीलों के लिए।
इस पोस्ट में, हम चर्चा करते हैं कि ग्राहक आधुनिक डेटा झीलों में क्या चाहते हैं और कैसे Apache Iceberg ग्राहकों की जरूरतों को पूरा करने में मदद करता है। फिर हम एक उच्च-प्रदर्शन और विकसित आइसबर्ग डेटा लेक बनाने के लिए एक समाधान के माध्यम से चलते हैं अमेज़न सरल भंडारण सेवा (Amazon S3) और इंसर्ट, अपडेट और SQL स्टेटमेंट को हटाकर वृद्धिशील डेटा को प्रोसेस करें। अंत में, हम आपको दिखाते हैं कि पढ़ने और लिखने के प्रदर्शन को बेहतर बनाने के लिए प्रदर्शन को कैसे ट्यून किया जाए।
Apache Iceberg कैसे संबोधित करता है कि ग्राहक आधुनिक डेटा झीलों में क्या चाहते हैं
अधिक से अधिक ग्राहक कई उपयोगकर्ताओं, एप्लिकेशन और एनालिटिक्स टूल का समर्थन करने के लिए संरचित और असंरचित डेटा के साथ डेटा झीलों का निर्माण कर रहे हैं। एसीआईडी लेनदेन, रिकॉर्ड-स्तरीय अपडेट और डिलीट, समय यात्रा और रोलबैक जैसी सुविधाओं जैसे डेटाबेस का समर्थन करने के लिए डेटा झीलों की बढ़ती आवश्यकता है। Apache Iceberg को Amazon S3 पर लागत प्रभावी पेटाबाइट-स्केल डेटा झीलों पर इन सुविधाओं का समर्थन करने के लिए डिज़ाइन किया गया है।
Apache Iceberg व्यक्तिगत डेटा फ़ाइलों के निर्माण के समय डेटासेट के बारे में समृद्ध मेटाडेटा जानकारी कैप्चर करके ग्राहकों की ज़रूरतों को पूरा करता है। आइसबर्ग टेबल के आर्किटेक्चर में तीन परतें होती हैं: आइसबर्ग कैटलॉग, मेटाडेटा लेयर और डेटा लेयर, जैसा कि निम्नलिखित चित्र में दिखाया गया है (स्रोत).
आइसबर्ग कैटलॉग मेटाडेटा सूचक को वर्तमान तालिका मेटाडेटा फ़ाइल में संग्रहीत करता है। जब एक चयनित क्वेरी एक आइसबर्ग टेबल पढ़ रही होती है, तो क्वेरी इंजन पहले आइसबर्ग कैटलॉग में जाता है, फिर वर्तमान मेटाडेटा फ़ाइल का स्थान प्राप्त करता है। जब भी हिमशैल तालिका में कोई अद्यतन होता है, तालिका का एक नया स्नैपशॉट बनाया जाता है, और मेटाडेटा सूचक वर्तमान तालिका मेटाडेटा फ़ाइल को इंगित करता है।
निम्नलिखित एडब्ल्यूएस गोंद कार्यान्वयन के साथ आइसबर्ग कैटलॉग का एक उदाहरण है। आप डेटाबेस का नाम, आइसबर्ग तालिका का स्थान (S3 पथ) और मेटाडेटा स्थान देख सकते हैं।
मेटाडेटा परत में तीन प्रकार की फ़ाइलें होती हैं: मेटाडेटा फ़ाइल, मैनिफ़ेस्ट सूची और पदानुक्रम में मैनिफ़ेस्ट फ़ाइल। पदानुक्रम के शीर्ष पर मेटाडेटा फ़ाइल है, जो तालिका की स्कीमा, विभाजन जानकारी और स्नैपशॉट के बारे में जानकारी संग्रहीत करती है। स्नैपशॉट मेनिफेस्ट सूची की ओर इशारा करता है। मेनिफेस्ट सूची में प्रत्येक मैनिफ़ेस्ट फ़ाइल के बारे में जानकारी होती है जो स्नैपशॉट बनाती है, जैसे कि मैनिफ़ेस्ट फ़ाइल का स्थान, इसके अंतर्गत आने वाले विभाजन, और इसके द्वारा ट्रैक की जाने वाली डेटा फ़ाइलों के लिए विभाजन कॉलम के लिए निचली और ऊपरी सीमाएँ। मेनिफेस्ट फ़ाइल डेटा फ़ाइलों के साथ-साथ प्रत्येक फ़ाइल के बारे में अतिरिक्त विवरण, जैसे फ़ाइल प्रारूप को ट्रैक करती है। तीनों फाइलें हिमशैल तालिका में स्नैपशॉट, स्कीमा, विभाजन, गुण और डेटा फ़ाइलों को ट्रैक करने के लिए एक पदानुक्रम में काम करती हैं।
डेटा स्तर में Iceberg तालिका की अलग-अलग डेटा फ़ाइलें होती हैं। Iceberg Parquet, ORC और Avro सहित फ़ाइल स्वरूपों की एक विस्तृत श्रृंखला का समर्थन करता है। चूंकि आइसबर्ग तालिका केवल डेटा फ़ाइलों के साथ विभाजन स्थान को इंगित करने के बजाय अलग-अलग डेटा फ़ाइलों को ट्रैक करती है, यह पढ़ने के संचालन से लेखन कार्यों को अलग करती है। आप किसी भी समय डेटा फ़ाइलें लिख सकते हैं, लेकिन केवल स्पष्ट रूप से परिवर्तन करें, जो स्नैपशॉट और मेटाडेटा फ़ाइलों का एक नया संस्करण बनाता है।
समाधान अवलोकन
इस पोस्ट में, हम आपको Amazon S3 पर एक उच्च-प्रदर्शन वाला Apache Iceberg डेटा लेक बनाने के लिए एक समाधान के बारे में बताते हैं; SQL कथनों को सम्मिलित करने, अद्यतन करने और हटाने के साथ वृद्धिशील डेटा को संसाधित करें; और पढ़ने और लिखने के प्रदर्शन को बेहतर बनाने के लिए आइसबर्ग टेबल को ट्यून करें। निम्नलिखित आरेख समाधान वास्तुकला को दर्शाता है।
इस समाधान को प्रदर्शित करने के लिए, हम इसका उपयोग करते हैं अमेज़न ग्राहक समीक्षा डेटासेट एक S3 बाल्टी में (s3://amazon-reviews-pds/parquet/
). वास्तविक उपयोग के मामले में, यह आपके S3 बकेट में संग्रहीत कच्चा डेटा होगा। हम निम्नलिखित कोड के साथ डेटा आकार की जांच कर सकते हैं AWS कमांड लाइन इंटरफ़ेस (एडब्ल्यूएस सीएलआई):
कुल वस्तु संख्या 430 है, और कुल आकार 47.4 GiB है।
इस समाधान को स्थापित और परीक्षण करने के लिए, हम निम्नलिखित उच्च-स्तरीय चरणों को पूरा करते हैं:
- परिवर्तित डेटा को आइसबर्ग तालिका प्रारूप में संग्रहीत करने के लिए क्यूरेटेड ज़ोन में एक S3 बाल्टी सेट करें।
- Apache Iceberg के लिए उपयुक्त कॉन्फ़िगरेशन के साथ EMR क्लस्टर लॉन्च करें।
- ईएमआर स्टूडियो में एक नोटबुक बनाएं।
- अपाचे आइसबर्ग के लिए स्पार्क सत्र को कॉन्फ़िगर करें।
- डेटा को आइसबर्ग टेबल फॉर्मेट में बदलें और डेटा को क्यूरेटेड जोन में ले जाएं।
- वृद्धिशील डेटा को संसाधित करने के लिए एथेना में सम्मिलित करें, अद्यतन करें और प्रश्नों को हटाएं।
- प्रदर्शन ट्यूनिंग करें।
.. पूर्वापेक्षाएँ
इस पूर्वाभ्यास के साथ अनुसरण करने के लिए, आपके पास एक होना चाहिए AWS खाता के साथ एक AWS पहचान और अभिगम प्रबंधन (आईएएम) भूमिका जिसके पास आवश्यक संसाधनों के प्रावधान के लिए पर्याप्त पहुंच है।
अपने डेटा लेक में क्यूरेटेड ज़ोन में Iceberg डेटा के लिए S3 बकेट सेट करें
वह क्षेत्र चुनें जिसमें आप S3 बकेट बनाना चाहते हैं और एक अद्वितीय नाम प्रदान करें:
आइसबर्ग नौकरियों को चलाने के लिए स्पार्क का उपयोग करके एक ईएमआर क्लस्टर लॉन्च करें
आप से एक EMR क्लस्टर बना सकते हैं एडब्ल्यूएस प्रबंधन कंसोल, अमेज़न ईएमआर सीएलआई, या AWS क्लाउड डेवलपमेंट किट (एडब्ल्यूएस सीडीके)। इस पोस्ट के लिए, हम आपको कंसोल से EMR क्लस्टर बनाने का तरीका बताते हैं।
- Amazon EMR कंसोल पर, चुनें क्लस्टर बनाएं.
- चुनें उन्नत विकल्प.
- के लिए सॉफ्टवेयर विन्यास, नवीनतम Amazon EMR रिलीज़ चुनें। जनवरी 2023 तक, नवीनतम रिलीज़ 6.9.0 है। आइसबर्ग को 6.5.0 और उससे ऊपर के रिलीज की आवश्यकता है।
- चुनते हैं जुपिटर एंटरप्राइज गेटवे और स्पार्क सॉफ्टवेयर के रूप में स्थापित करने के लिए।
- के लिए सॉफ़्टवेयर सेटिंग संपादित करें, चुनते हैं कॉन्फ़िगरेशन दर्ज करें और दर्ज करें
[{"classification":"iceberg-defaults","properties":{"iceberg.enabled":true}}]
. - अन्य सेटिंग्स को उनके डिफ़ॉल्ट पर छोड़ दें और चुनें अगला.
- के लिए हार्डवेयर, डिफ़ॉल्ट सेटिंग का उपयोग करें।
- चुनें अगला.
- के लिए क्लस्टर का नाम, नाम डालें। हम उपयोग करते हैं
iceberg-blog-cluster
. - शेष सेटिंग्स को अपरिवर्तित छोड़ दें और चुनें अगला.
- चुनें क्लस्टर बनाएं.
ईएमआर स्टूडियो में एक नोटबुक बनाएं
अब हम आपको कंसोल से ईएमआर स्टूडियो में नोटबुक बनाने का तरीका बताते हैं।
- IAM कंसोल पर, एक EMR स्टूडियो सेवा भूमिका बनाएँ.
- Amazon EMR कंसोल पर, चुनें ईएमआर स्टूडियो.
- चुनें शुरू हो.
RSI शुरू हो पृष्ठ एक नए टैब में प्रकट होता है।
- चुनें स्टूडियो बनाएं नए टैब में।
- नाम डालें। हम आइसबर्ग-स्टूडियो का उपयोग करते हैं।
- EMR क्लस्टर और डिफ़ॉल्ट सुरक्षा समूह के लिए समान VPC और सबनेट चुनें।
- चुनें AWS पहचान और अभिगम प्रबंधन (IAM) प्रमाणीकरण के लिए, और आपके द्वारा अभी-अभी बनाई गई EMR स्टूडियो सेवा भूमिका चुनें।
- के लिए एक S3 पथ चुनें कार्यक्षेत्र बैकअप.
- चुनें स्टूडियो बनाएं.
- स्टूडियो बनने के बाद, स्टूडियो एक्सेस यूआरएल चुनें।
- EMR स्टूडियो डैशबोर्ड पर, चुनें कार्यक्षेत्र बनाएँ.
- अपने कार्यक्षेत्र के लिए एक नाम दर्ज करें। हम उपयोग करते हैं
iceberg-workspace
. - विस्तार उन्नत विन्यास और चुनें EMR क्लस्टर में कार्यक्षेत्र संलग्न करें.
- आपके द्वारा पहले बनाए गए EMR क्लस्टर को चुनें।
- चुनें कार्यक्षेत्र बनाएँ.
- नया टैब खोलने के लिए कार्यक्षेत्र का नाम चुनें।
नेविगेशन फलक में, एक नोटबुक है जिसका कार्यस्थान के समान नाम है। हमारे मामले में, यह हिमशैल-कार्यक्षेत्र है।
- िकताबेखोलो।
- जब कर्नेल चुनने के लिए कहा जाए, तो चुनें स्पार्क.
अपाचे आइसबर्ग के लिए स्पार्क सत्र कॉन्फ़िगर करें
अपना स्वयं का S3 बकेट नाम प्रदान करते हुए निम्नलिखित कोड का उपयोग करें:
यह निम्नलिखित स्पार्क सत्र विन्यास सेट करता है:
- स्पार्क.एसक्यूएल.कैटलॉग.डेमो - डेमो नामक स्पार्क कैटलॉग पंजीकृत करता है, जो आइसबर्ग स्पार्क कैटलॉग प्लगइन का उपयोग करता है।
- Spark.sql.catalog.demo.catalog-impl - डेमो स्पार्क कैटलॉग आइसबर्ग डेटाबेस और टेबल जानकारी को स्टोर करने के लिए भौतिक कैटलॉग के रूप में एडब्ल्यूएस ग्लू का उपयोग करता है।
- Spark.sql.catalog.demo.warehouse - डेमो स्पार्क कैटलॉग इस संपत्ति द्वारा परिभाषित रूट पथ के तहत सभी आइसबर्ग मेटाडेटा और डेटा फ़ाइलों को संग्रहीत करता है:
s3://iceberg-curated-blog-data
. - स्पार्क.एसक्यूएल.एक्सटेंशन - आइसबर्ग स्पार्क एसक्यूएल एक्सटेंशन के लिए समर्थन जोड़ता है, जो आपको आइसबर्ग स्पार्क प्रक्रियाओं और कुछ आइसबर्ग-ओनली एसक्यूएल कमांड चलाने की अनुमति देता है (आप इसे बाद के चरण में उपयोग करते हैं)।
- स्पार्क.एसक्यूएल.कैटलॉग.डेमो.आईओ-इम्प्ल - आइसबर्ग उपयोगकर्ताओं को S3FileIO के माध्यम से Amazon S3 में डेटा लिखने की अनुमति देता है। AWS ग्लू डेटा कैटलॉग डिफ़ॉल्ट रूप से इस FileIO का उपयोग करता है, और अन्य कैटलॉग इस FileIO को io-impl कैटलॉग प्रॉपर्टी का उपयोग करके लोड कर सकते हैं।
डेटा को आइसबर्ग टेबल फॉर्मेट में बदलें
आप Iceberg टेबल को लोड करने के लिए या तो Amazon EMR पर Spark या Athena का इस्तेमाल कर सकते हैं। ईएमआर स्टूडियो वर्कस्पेस नोटबुक स्पार्क सत्र में, डेटा लोड करने के लिए निम्नलिखित कमांड चलाएँ:
कोड चलाने के बाद, आपको अपने डेटा वेयरहाउस S3 पथ में बनाए गए दो उपसर्गों को ढूंढना चाहिए (s3://iceberg-curated-blog-data/reviews.db/all_reviews
): डेटा और मेटाडेटा।
एथेना में इन्सर्ट, अपडेट और डिलीट एसक्यूएल स्टेटमेंट का उपयोग करके वृद्धिशील डेटा को प्रोसेस करें
एथेना एक सर्वर रहित क्वेरी इंजन है जिसका उपयोग आप आइसबर्ग तालिकाओं के विरुद्ध पढ़ने, लिखने, अद्यतन करने और अनुकूलन कार्यों को करने के लिए कर सकते हैं। यह प्रदर्शित करने के लिए कि कैसे अपाचे आइसबर्ग डेटा लेक प्रारूप वृद्धिशील डेटा अंतर्ग्रहण का समर्थन करता है, हम डेटा लेक पर SQL स्टेटमेंट सम्मिलित करते हैं, अपडेट करते हैं और हटाते हैं।
एथेना कंसोल पर नेविगेट करें और चुनें प्रश्न-संपादक. यदि आप पहली बार एथेना क्वेरी संपादक का उपयोग कर रहे हैं, तो आपको इसकी आवश्यकता है क्वेरी परिणाम स्थान कॉन्फ़िगर करें आपके द्वारा पहले बनाई गई S3 बाल्टी बनने के लिए। आपको यह देखने में सक्षम होना चाहिए कि तालिका समीक्षा.all_reviews पूछताछ के लिए उपलब्ध है। यह सत्यापित करने के लिए निम्न क्वेरी चलाएँ कि आपने आइसबर्ग तालिका को सफलतापूर्वक लोड कर लिया है:
इन्सर्ट, अपडेट और डिलीट SQL स्टेटमेंट चलाकर वृद्धिशील डेटा को प्रोसेस करें:
प्रदर्शन सुधारना
इस खंड में, हम Apache Iceberg पढ़ने और लिखने के प्रदर्शन को बेहतर बनाने के विभिन्न तरीकों से चलते हैं।
अपाचे हिमशैल तालिका गुणों को कॉन्फ़िगर करें
Apache Iceberg एक तालिका प्रारूप है, और यह तालिका व्यवहार को पढ़ने, लिखने और कैटलॉग को कॉन्फ़िगर करने के लिए तालिका गुणों का समर्थन करता है। आप टेबल गुणों को समायोजित करके आइसबर्ग टेबल पर पढ़ने और लिखने के प्रदर्शन में सुधार कर सकते हैं।
उदाहरण के लिए, यदि आप देखते हैं कि आप एक हिमशैल तालिका के लिए बहुत अधिक छोटी फ़ाइलें लिखते हैं, तो आप क्वेरी प्रदर्शन को बेहतर बनाने में सहायता के लिए कम लेकिन बड़े आकार की फ़ाइलें लिखने के लिए लेखन फ़ाइल आकार को कॉन्फ़िगर कर सकते हैं।
संपत्ति | चूक | Description |
write.target-file-size-बाइट्स | 536870912 (512 एमबी) | इतने सारे बाइट्स को लक्षित करने के लिए जनरेट की गई फ़ाइलों के आकार को नियंत्रित करता है |
तालिका प्रारूप को बदलने के लिए निम्न कोड का प्रयोग करें:
विभाजन और छँटाई
किसी क्वेरी को तेज़ी से चलाने के लिए, कम डेटा पढ़ना बेहतर है। आइसबर्ग समृद्ध मेटाडेटा का लाभ उठाता है जो इसे लिखने के समय कैप्चर करता है और स्कैन प्लानिंग, विभाजन, छंटाई, और कॉलम-स्तरीय आँकड़े जैसे न्यूनतम/अधिकतम मान जैसी तकनीकों को उन डेटा फ़ाइलों को छोड़ने की सुविधा देता है जिनका मिलान रिकॉर्ड नहीं है। हम आपको बताते हैं कि आइसबर्ग में क्वेरी स्कैन प्लानिंग और विभाजन कैसे काम करते हैं और क्वेरी प्रदर्शन को बेहतर बनाने के लिए हम उनका उपयोग कैसे करते हैं।
क्वेरी स्कैन योजना
किसी दी गई क्वेरी के लिए, क्वेरी इंजन में पहला चरण स्कैन प्लानिंग है, जो किसी क्वेरी के लिए आवश्यक तालिका में फ़ाइलों को खोजने की प्रक्रिया है। आइसबर्ग तालिका में योजना बनाना बहुत कुशल है, क्योंकि आइसबर्ग के समृद्ध मेटाडेटा का उपयोग उन मेटाडेटा फ़ाइलों को छाँटने के लिए किया जा सकता है जिनकी आवश्यकता नहीं है, साथ ही उन डेटा फ़ाइलों को फ़िल्टर करने के लिए जिनमें मिलान डेटा नहीं है। हमारे परीक्षणों में, हमने देखा कि आइसबर्ग प्रारूप में रूपांतरण से पहले मूल डेटा की तुलना में आइसबर्ग टेबल पर दी गई क्वेरी के लिए एथेना ने 50% या उससे कम डेटा स्कैन किया।
फ़िल्टरिंग दो प्रकार की होती है:
- मेटाडेटा फ़िल्टरिंग - आइसबर्ग स्नैपशॉट में फ़ाइलों को ट्रैक करने के लिए मेटाडेटा के दो स्तरों का उपयोग करता है: प्रकट सूची और प्रकट फ़ाइलें। यह पहले मेनिफेस्ट सूची का उपयोग करता है, जो मैनिफेस्ट फाइलों के सूचकांक के रूप में कार्य करता है। नियोजन के दौरान, आइसबर्ग फ़िल्टर सभी मैनिफ़ेस्ट फ़ाइलों को पढ़े बिना मैनिफ़ेस्ट सूची में विभाजन मान श्रेणी का उपयोग करके प्रकट होता है। फिर यह डेटा फ़ाइलों को प्राप्त करने के लिए चयनित मेनिफेस्ट फ़ाइलों का उपयोग करता है।
- डेटा फ़िल्टरिंग - प्रकट फ़ाइलों की सूची का चयन करने के बाद, आइसबर्ग डेटा फ़ाइलों को फ़िल्टर करने के लिए प्रकट फ़ाइलों में संग्रहीत प्रत्येक डेटा फ़ाइल के लिए विभाजन डेटा और स्तंभ-स्तरीय आँकड़े का उपयोग करता है। नियोजन के दौरान, क्वेरी विधेय विभाजन डेटा पर विधेय में परिवर्तित हो जाते हैं और डेटा फ़ाइलों को फ़िल्टर करने के लिए पहले लागू होते हैं। फिर, स्तंभ-स्तरीय मान गणना, शून्य गणना, निचली सीमा और ऊपरी सीमा जैसे स्तंभ आँकड़े उन डेटा फ़ाइलों को फ़िल्टर करने के लिए उपयोग किए जाते हैं जो क्वेरी विधेय से मेल नहीं खा सकते हैं। नियोजन समय पर डेटा फ़ाइलों को फ़िल्टर करने के लिए ऊपरी और निचली सीमाओं का उपयोग करके, हिमशैल क्वेरी प्रदर्शन में काफी सुधार करता है।
विभाजन और छँटाई
विभाजन लेखन में एक साथ समान कुंजी स्तंभ मानों वाले रिकॉर्ड को समूहीकृत करने का एक तरीका है। विभाजन का लाभ तेज़ क्वेरी है जो डेटा के केवल एक हिस्से तक पहुँचती है, जैसा कि क्वेरी स्कैन प्लानिंग में पहले बताया गया है: डेटा फ़िल्टरिंग। आइसबर्ग छिपे हुए विभाजन का समर्थन करके विभाजन को सरल बनाता है, जिस तरह से हिमशैल एक स्तंभ मान लेकर और वैकल्पिक रूप से इसे रूपांतरित करके विभाजन मान उत्पन्न करता है।
हमारे उपयोग के मामले में, हम पहले निम्न क्वेरी को आइसबर्ग टेबल पर विभाजित नहीं करते हैं। फिर हम आइसबर्ग तालिका को समीक्षाओं की श्रेणी के अनुसार विभाजित करते हैं, जिसका उपयोग रिकॉर्ड को फ़िल्टर करने के लिए WHERE स्थिति क्वेरी में किया जाएगा। विभाजन के साथ, क्वेरी बहुत कम डेटा स्कैन कर सकती है। निम्नलिखित कोड देखें:
प्रदर्शन अंतर देखने के लिए गैर-विभाजित all_reviews तालिका बनाम विभाजित तालिका पर निम्न चयन कथन चलाएँ:
निम्न तालिका लगभग 50% प्रदर्शन सुधार और 70% कम डेटा स्कैन के साथ, डेटा विभाजन के प्रदर्शन में सुधार दिखाती है।
डेटासेट का नाम | गैर-विभाजित डेटासेट | विभाजित डेटासेट |
रनटाइम (सेकंड) | 8.20 | 4.25 |
डेटा स्कैन किया गया (एमबी) | 131.55 | 33.79 |
ध्यान दें कि रनटाइम औसत रनटाइम है जिसमें हमारे परीक्षण में कई रन हैं।
हमने विभाजन के बाद प्रदर्शन में अच्छा सुधार देखा। हालाँकि, Iceberg मेनिफ़ेस्ट फ़ाइलों से स्तंभ-स्तर के आँकड़ों का उपयोग करके इसे और बेहतर बनाया जा सकता है। स्तंभ-स्तरीय आँकड़ों का प्रभावी ढंग से उपयोग करने के लिए, आप क्वेरी पैटर्न के आधार पर अपने रिकॉर्ड को और क्रमित करना चाहते हैं। प्रश्नों में अक्सर उपयोग किए जाने वाले कॉलम का उपयोग करके पूरे डेटासेट को सॉर्ट करना डेटा को इस तरह से पुनर्व्यवस्थित करेगा कि प्रत्येक डेटा फ़ाइल विशिष्ट कॉलम के लिए मानों की एक अनूठी श्रेणी के साथ समाप्त होती है। यदि इन स्तंभों का उपयोग क्वेरी स्थिति में किया जाता है, तो यह क्वेरी इंजन को डेटा फ़ाइलों को आगे छोड़ने की अनुमति देता है, जिससे और भी तेज़ क्वेरीज़ को सक्षम किया जा सकता है।
कॉपी-ऑन-राइट बनाम रीड-ऑन-मर्ज
डेटा लेक में आइसबर्ग टेबल पर अपडेट और डिलीट को लागू करते समय, आइसबर्ग टेबल प्रॉपर्टीज द्वारा परिभाषित दो दृष्टिकोण हैं:
- लिखने पर नकल - इस दृष्टिकोण के साथ, जब आइसबर्ग तालिका में परिवर्तन होते हैं, या तो अपडेट या हटा दिए जाते हैं, तो प्रभावित रिकॉर्ड से जुड़ी डेटा फ़ाइलों को डुप्लिकेट और अपडेट किया जाएगा। रिकॉर्ड या तो डुप्लीकेट डेटा फ़ाइलों से अपडेट या हटा दिए जाएंगे। आइसबर्ग तालिका का एक नया स्नैपशॉट बनाया जाएगा और डेटा फ़ाइलों के नए संस्करण की ओर इशारा करेगा। यह समग्र लेखन को धीमा बनाता है। ऐसी स्थितियाँ हो सकती हैं कि संघर्षों के साथ समवर्ती लेखन की आवश्यकता हो, इसलिए पुन: प्रयास करना पड़ता है, जिससे लेखन समय और भी बढ़ जाता है। दूसरी ओर, डेटा पढ़ते समय, किसी अतिरिक्त प्रक्रिया की आवश्यकता नहीं होती है। क्वेरी डेटा फ़ाइलों के नवीनतम संस्करण से डेटा पुनर्प्राप्त करेगी।
- मर्ज-ऑन-रीड - इस दृष्टिकोण के साथ, जब आइसबर्ग टेबल पर अपडेट या डिलीट होते हैं, तो मौजूदा डेटा फ़ाइलों को फिर से नहीं लिखा जाएगा; इसके बजाय परिवर्तनों को ट्रैक करने के लिए नई हटाई गई फ़ाइलें बनाई जाएंगी। हटाए जाने के लिए, हटाए गए रिकॉर्ड के साथ एक नई हटाई गई फ़ाइल बनाई जाएगी। आइसबर्ग तालिका को पढ़ते समय, हटाए गए रिकॉर्ड को फ़िल्टर करने के लिए हटाए गए फ़ाइल को पुनर्प्राप्त डेटा पर लागू किया जाएगा। अपडेट के लिए, अपडेट किए गए रिकॉर्ड को हटाए गए के रूप में चिह्नित करने के लिए एक नई डिलीट फ़ाइल बनाई जाएगी। फिर उन अभिलेखों के लिए अद्यतन मूल्यों के साथ एक नई फ़ाइल बनाई जाएगी। हिमशैल तालिका को पढ़ते समय, हटाए गए और नई फ़ाइलें दोनों नवीनतम परिवर्तनों को प्रतिबिंबित करने और सही परिणाम देने के लिए पुनर्प्राप्त डेटा पर लागू होंगी। इसलिए, बाद की किसी भी क्वेरी के लिए, डेटा फ़ाइलों को डिलीट और नई फ़ाइलों के साथ मर्ज करने के लिए एक अतिरिक्त चरण होगा, जो आमतौर पर क्वेरी समय को बढ़ा देगा। दूसरी ओर, लेखन तेज हो सकता है क्योंकि मौजूदा डेटा फ़ाइलों को फिर से लिखने की कोई आवश्यकता नहीं है।
दो दृष्टिकोणों के प्रभाव का परीक्षण करने के लिए, आप Iceberg तालिका गुण सेट करने के लिए निम्न कोड चला सकते हैं:
कॉपी-ऑन-राइट बनाम मर्ज-ऑन-रीड के लिए रनटाइम अंतर दिखाने के लिए एथेना में अपडेट चलाएं, हटाएं और SQL स्टेटमेंट चुनें:
निम्न तालिका क्वेरी रनटाइम को सारांशित करती है।
प्रश्न | लिखने पर नकल | मर्ज-ऑन-रीड | ||||
अद्यतन | हटाएँ | चुनते हैं | अद्यतन | हटाएँ | चुनते हैं | |
रनटाइम (सेकंड) | 66.251 | 116.174 | 97.75 | 10.788 | 54.941 | 113.44 |
डेटा स्कैन (एमबी) | 494.06 | 3.07 | 137.16 | 494.06 | 3.07 | 137.16 |
ध्यान दें कि रनटाइम औसत रनटाइम है जिसमें हमारे परीक्षण में कई रन हैं।
जैसा कि हमारे परीक्षण के परिणाम दिखाते हैं, दो दृष्टिकोणों में हमेशा व्यापार-नापसंद होते हैं। किस दृष्टिकोण का उपयोग करना आपके उपयोग के मामलों पर निर्भर करता है। संक्षेप में, विचार पढ़ने बनाम लिखने पर विलंबता पर आते हैं। आप निम्न तालिका का संदर्भ ले सकते हैं और सही चुनाव कर सकते हैं।
. | लिखने पर नकल | मर्ज-ऑन-रीड |
फ़ायदे | तेज़ पढ़ता है | तेज़ लिखता है |
नुकसान | महंगा लिखता है | पढ़ने पर उच्च विलंबता |
कब इस्तेमाल करें | बार-बार पढ़ने, कम अपडेट और डिलीट या बड़े बैच अपडेट के लिए अच्छा है | लगातार अपडेट और डिलीट वाली टेबल के लिए अच्छा है |
डेटा संघनन
यदि आपकी डेटा फ़ाइल का आकार छोटा है, तो हो सकता है कि अंत में आपके पास हिमशैल तालिका में हज़ारों या लाखों फ़ाइलें हों। यह नाटकीय रूप से I/O ऑपरेशन को बढ़ाता है और प्रश्नों को धीमा कर देता है। इसके अलावा, आइसबर्ग प्रत्येक डेटा फ़ाइल को डेटासेट में ट्रैक करता है। अधिक डेटा फ़ाइलें अधिक मेटाडेटा की ओर ले जाती हैं। यह बदले में मेटाडेटा फ़ाइलों को पढ़ने पर ओवरहेड और I/O ऑपरेशन को बढ़ाता है। क्वेरी प्रदर्शन को बेहतर बनाने के लिए, छोटी डेटा फ़ाइलों को बड़ी डेटा फ़ाइलों में कॉम्पैक्ट करने की अनुशंसा की जाती है।
आइसबर्ग टेबल में रिकॉर्ड को अपडेट और डिलीट करते समय, यदि रीड-ऑन-मर्ज दृष्टिकोण का उपयोग किया जाता है, तो आप कई छोटी डिलीट या नई डेटा फ़ाइलों के साथ समाप्त हो सकते हैं। कंपैक्शन चलाना इन सभी फ़ाइलों को संयोजित करेगा और डेटा फ़ाइल का एक नया संस्करण बनाएगा। यह पढ़ने के दौरान उन्हें समेटने की आवश्यकता को समाप्त करता है। यह अनुशंसा की जाती है कि पढ़ने की गति को कम करने के साथ-साथ तेज़ लेखन गति को बनाए रखते हुए नियमित संघनन कार्य करें।
निम्नलिखित डेटा संघनन कमांड चलाएँ, फिर एथेना से चयन क्वेरी चलाएँ:
निम्न तालिका डेटा संघनन से पहले बनाम बाद के रनटाइम की तुलना करती है। आप लगभग 40% प्रदर्शन सुधार देख सकते हैं।
प्रश्न | डेटा संघनन से पहले | डेटा संघनन के बाद |
रनटाइम (सेकंड) | 97.75 | 32.676 सेकंड |
डेटा स्कैन (एमबी) | 137.16 एम | 189.19 एम |
ध्यान दें कि चुनिंदा क्वेरीज़ पर चलती हैं all_reviews
डेटा संघनन से पहले और बाद में अद्यतन और हटाने के संचालन के बाद तालिका। रनटाइम औसत रनटाइम है जिसमें हमारे परीक्षण में कई रन हैं।
क्लीन अप
उपयोग मामलों को निष्पादित करने के लिए समाधान पूर्वाभ्यास का पालन करने के बाद, अपने संसाधनों को साफ़ करने और आगे की लागतों से बचने के लिए निम्न चरणों को पूरा करें:
- एडब्ल्यूएस ग्लू टेबल और डेटाबेस को एथेना से ड्रॉप करें या अपनी नोटबुक में निम्न कोड चलाएं:
- EMR स्टूडियो कंसोल पर, चुनें कार्यस्थानों नेविगेशन फलक में
- आपके द्वारा बनाए गए कार्यक्षेत्र का चयन करें और चुनें मिटाना.
- EMR कंसोल पर, नेविगेट करें स्टूडियो इस पृष्ठ पर ज़ूम कई वीडियो ट्यूटोरियल और अन्य साहायक साधन प्रदान करता है।
- आपके द्वारा बनाए गए स्टूडियो का चयन करें और चुनें मिटाना.
- EMR कंसोल पर, चुनें क्लस्टर नेविगेशन फलक में
- क्लस्टर का चयन करें और चुनें बर्खास्त.
- इस पोस्ट के लिए आवश्यक शर्तों के हिस्से के रूप में आपके द्वारा बनाए गए S3 बकेट और अन्य संसाधनों को हटा दें।
निष्कर्ष
इस पोस्ट में, हमने अपाचे आइसबर्ग ढांचे की शुरुआत की और बताया कि कैसे यह आधुनिक डेटा झील में हमारे सामने आने वाली कुछ चुनौतियों को हल करने में मदद करता है। फिर हम अपाचे आइसबर्ग का उपयोग करके डेटा लेक में वृद्धिशील डेटा को संसाधित करने के समाधान के माध्यम से आपके पास गए। अंत में, हमने अपने उपयोग के मामलों के लिए पढ़ने और लिखने के प्रदर्शन को बेहतर बनाने के लिए प्रदर्शन ट्यूनिंग में गहरा गोता लगाया।
हम आशा करते हैं कि यह पोस्ट आपको यह तय करने के लिए कुछ उपयोगी जानकारी प्रदान करती है कि आप अपने डेटा लेक समाधान में अपाचे आइसबर्ग को अपनाना चाहते हैं या नहीं।
लेखक के बारे में
फ्लोरा वू AWS डेटा लैब में सीनियर रेजिडेंट आर्किटेक्ट हैं। वह एंटरप्राइज़ ग्राहकों को डेटा एनालिटिक्स रणनीति बनाने और उनके व्यावसायिक परिणामों में तेजी लाने के लिए समाधान बनाने में मदद करती है। अपने खाली समय में, वह टेनिस खेलना, साल्सा नृत्य करना और यात्रा करना पसंद करती हैं।
डैनियल ली Amazon Web Services में सीनियर सॉल्यूशन आर्किटेक्ट हैं। वह क्लाउड सेवाओं और रणनीति को विकसित करने, अपनाने और लागू करने में ग्राहकों की मदद करने पर ध्यान केंद्रित करता है। जब वह काम नहीं कर रहे होते हैं तो वह अपने परिवार के साथ बाहर समय बिताना पसंद करते हैं।
- एसईओ संचालित सामग्री और पीआर वितरण। आज ही प्रवर्धित हो जाओ।
- प्लेटोब्लॉकचैन। Web3 मेटावर्स इंटेलिजेंस। ज्ञान प्रवर्धित। यहां पहुंचें।
- स्रोत: https://aws.amazon.com/blogs/big-data/use-apache-iceberg-in-a-data-lake-to-support-incremental-data-processing/
- 10
- 100
- 11
- 2022
- 2023
- 7
- 9
- a
- योग्य
- About
- ऊपर
- में तेजी लाने के
- पहुँच
- उपयोग प्रबंधन
- कार्य
- कार्य करता है
- इसके अलावा
- अतिरिक्त
- पता
- पतों
- जोड़ता है
- अपनाना
- लाभ
- बाद
- के खिलाफ
- सब
- की अनुमति देता है
- हमेशा
- वीरांगना
- अमेज़ॅन ईएमआर
- अमेज़ॅन वेब सेवा
- विश्लेषणात्मक
- विश्लेषिकी
- और
- की घोषणा
- अपाचे
- अनुप्रयोगों
- लागू
- दृष्टिकोण
- दृष्टिकोण
- उपयुक्त
- स्थापत्य
- जुड़े
- प्रमाणीकरण
- उपलब्धता
- उपलब्ध
- औसत
- से बचने
- एडब्ल्यूएस
- एडब्ल्यूएस गोंद
- आधारित
- क्योंकि
- बन
- से पहले
- लाभ
- बेहतर
- के बीच
- बड़ा
- जूते का फीता
- निर्माण
- इमारत
- व्यवसायों
- कब्जा
- कैप्चरिंग
- मामला
- मामलों
- सूची
- कैटलॉग
- वर्ग
- चुनौतियों
- परिवर्तन
- परिवर्तन
- चेक
- चुनाव
- चुनें
- वर्गीकरण
- बादल
- क्लाउड सेवाएं
- समूह
- कोड
- स्तंभ
- स्तंभ
- गठबंधन
- कैसे
- करना
- तुलना
- पूरा
- गणना करना
- समवर्ती
- शर्त
- विन्यास
- विचार
- कंसोल
- रूपांतरण
- परिवर्तित
- प्रभावी लागत
- लागत
- सका
- बनाना
- बनाया
- बनाता है
- क्यूरेट
- वर्तमान
- ग्राहक
- ग्राहक
- नाच
- डैशबोर्ड
- तिथि
- डेटा विश्लेषण
- डेटा लेक
- डेटा संसाधन
- डाटा गोदाम
- डाटाबेस
- डेटासेट
- गहरा
- विस्तृत विश्लेषण
- चूक
- परिभाषित
- डेमो
- दिखाना
- निर्भर करता है
- बनाया गया
- विवरण
- विकसित करना
- विकास
- अंतर
- विभिन्न
- चर्चा करना
- dont
- नीचे
- नाटकीय रूप से
- बूंद
- दौरान
- से प्रत्येक
- पूर्व
- शीघ्र
- संपादक
- प्रभावी रूप से
- कुशल
- भी
- को हटा देता है
- सक्षम
- समर्थकारी
- समाप्त होता है
- इंजन
- इंजन
- दर्ज
- उद्यम
- उद्यम ग्राहकों
- ईथर (ईटीएच)
- और भी
- विकास
- विकसित करना
- उद्विकासी
- उदाहरण
- मौजूदा
- मौजूद
- समझाया
- एक्सटेंशन
- अतिरिक्त
- की सुविधा
- परिवार
- फास्ट
- और तेज
- विशेषताएं
- आकृति
- पट्टिका
- फ़ाइलें
- फ़िल्टर
- छानने
- फ़िल्टर
- अंत में
- खोज
- प्रथम
- पहली बार
- केंद्रित
- का पालन करें
- निम्नलिखित
- प्रारूप
- ढांचा
- बारंबार
- से
- आगे
- और भी
- सामान्य जानकारी
- उत्पन्न
- मिल
- दी
- चला जाता है
- अच्छा
- बहुत
- समूह
- हाथ
- होना
- मदद
- मदद
- मदद करता है
- छिपा हुआ
- पदक्रम
- उच्च स्तर
- उच्च प्रदर्शन
- उच्च कार्य - निष्पादन
- करंड
- आशा
- कैसे
- How To
- तथापि
- एचटीएमएल
- HTTPS
- आई ए एम
- पहचान
- पहचान और पहुंच प्रबंधन
- प्रभाव
- असर पड़ा
- लागू करने के
- कार्यान्वयन
- कार्यान्वयन
- में सुधार
- उन्नत
- सुधार
- सुधार
- in
- सहित
- बढ़ना
- वृद्धि हुई
- बढ़ जाती है
- अनुक्रमणिका
- व्यक्ति
- करें-
- स्थापित
- बजाय
- एकीकरण
- शुरू की
- आइसोलेट्स
- IT
- जनवरी
- नौकरियां
- कुंजी
- प्रयोगशाला
- झील
- बड़ा
- बड़ा
- विलंब
- ताज़ा
- नवीनतम प्रकाशन
- परत
- परतों
- नेतृत्व
- स्तर
- सीमा
- लाइन
- सूची
- थोड़ा
- भार
- स्थान
- बनाना
- बनाता है
- प्रबंध
- बहुत
- निशान
- बाजार
- मैच
- मिलान
- मर्ज
- मेटाडाटा
- हो सकता है
- लाखों
- आधुनिक
- अधिक
- चाल
- विभिन्न
- नाम
- नामांकित
- नेविगेट करें
- पथ प्रदर्शन
- आवश्यकता
- जरूरत
- की जरूरत है
- नया
- नोटबुक
- वस्तु
- खुला
- आपरेशन
- संचालन
- इष्टतमीकरण
- ऑप्टिमाइज़ करें
- आदेश
- मूल
- अन्य
- सड़क पर
- कुल
- अपना
- फलक
- भाग
- पथ
- पैटर्न उपयोग करें
- निष्पादन
- प्रदर्शन
- भौतिक
- की योजना बना
- प्लेटो
- प्लेटो डेटा इंटेलिजेंस
- प्लेटोडाटा
- खेल
- लगाना
- अंक
- लोकप्रिय
- संभव
- पद
- संचालित
- आवश्यक शर्तें
- प्रक्रिया
- प्रक्रिया
- प्रसंस्करण
- उत्पादन
- गुण
- संपत्ति
- प्रदान करना
- प्रदान करता है
- प्रदान कर
- प्रावधान
- रेंज
- कच्चा
- कच्चा डेटा
- पढ़ना
- पढ़ना
- वास्तविक
- हाल ही में
- की सिफारिश की
- अभिलेख
- प्रतिबिंबित
- क्षेत्र
- रजिस्टरों
- नियमित
- और
- रिहा
- शेष
- अपेक्षित
- की आवश्यकता होती है
- उपयुक्त संसाधन चुनें
- परिणाम
- परिणाम
- समीक्षा
- धनी
- भूमिका
- जड़
- रन
- दौड़ना
- वही
- स्कैन
- सेकंड
- अनुभाग
- सुरक्षा
- चयनित
- का चयन
- serverless
- सेवा
- सेवाएँ
- सत्र
- सेट
- सेट
- की स्थापना
- सेटिंग्स
- चाहिए
- दिखाना
- दिखाता है
- सरल
- स्थितियों
- आकार
- धीमा कर देती है
- छोटा
- आशुचित्र
- So
- सॉफ्टवेयर
- समाधान
- समाधान ढूंढे
- कुछ
- स्पार्क
- विशिष्ट
- गति
- खर्च
- एसक्यूएल
- शुरुआत में
- राज्य
- कथन
- बयान
- आँकड़े
- कदम
- कदम
- फिर भी
- भंडारण
- की दुकान
- संग्रहित
- भंडार
- रणनीतियों
- स्ट्रेटेजी
- संरचित
- संरचित और असंरचित डेटा
- स्टूडियो
- उप - जाल
- आगामी
- सफलतापूर्वक
- ऐसा
- पर्याप्त
- सारांश
- समर्थन
- समर्थित
- सहायक
- समर्थन करता है
- तालिका
- लेता है
- ले जा
- लक्ष्य
- कार्य
- तकनीक
- टेनिस
- परीक्षण
- परीक्षण
- परीक्षण
- RSI
- जानकारी
- राज्य
- लेकिन हाल ही
- जिसके चलते
- हजारों
- तीन
- यहाँ
- पहर
- समय यात्रा
- सेवा मेरे
- एक साथ
- भी
- उपकरण
- ऊपर का
- कुल
- ट्रैक
- लेनदेन
- बदलने
- यात्रा
- यात्रा का
- मोड़
- प्रकार
- के अंतर्गत
- अद्वितीय
- अपडेट
- अद्यतन
- अपडेट
- अद्यतन
- यूआरएल
- उपयोग
- उदाहरण
- उपयोगकर्ताओं
- आमतौर पर
- वैल
- मूल्य
- मान
- सत्यापित
- संस्करण
- चला
- walkthrough
- गोदाम
- घड़ियों
- तरीके
- वेब
- वेब सेवाओं
- क्या
- या
- कौन कौन से
- जब
- चौड़ा
- विस्तृत श्रृंखला
- मर्जी
- बिना
- काम
- काम कर रहे
- कार्य
- होगा
- लिखना
- लिख रहे हैं
- आपका
- जेफिरनेट