paint-brush
आइसबर्ग, टेबुलर और मिनियो के साथ प्रभावी आधुनिक डेटा आर्किटेक्चर का निर्माणद्वारा@minio
7,918 रीडिंग
7,918 रीडिंग

आइसबर्ग, टेबुलर और मिनियो के साथ प्रभावी आधुनिक डेटा आर्किटेक्चर का निर्माण

द्वारा MinIO7m2024/04/17
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

आधुनिक डेटालेक आपकी सभी डेटा ज़रूरतों के लिए एक केंद्रीय केंद्र प्रदान करते हैं। हालाँकि, एक प्रभावी डेटा लेक का निर्माण और प्रबंधन जटिल हो सकता है।
featured image - आइसबर्ग, टेबुलर और मिनियो के साथ प्रभावी आधुनिक डेटा आर्किटेक्चर का निर्माण
MinIO HackerNoon profile picture
0-item
1-item


आधुनिक डेटा परिदृश्य एक नए प्रकार के बुनियादी ढांचे की मांग करता है - जो संरचित और असंरचित डेटा को सहजता से एकीकृत करता है, आसानी से स्केल करता है, और कुशल AI/ML कार्यभार को सशक्त बनाता है। यह वह जगह है जहाँ आधुनिक डेटालेक्स आपकी सभी डेटा ज़रूरतों के लिए एक केंद्रीय केंद्र प्रदान करते हुए, आएँ। हालाँकि, एक प्रभावी डेटा लेक का निर्माण और प्रबंधन जटिल हो सकता है।


यह ब्लॉग पोस्ट तीन शक्तिशाली उपकरणों पर गहराई से प्रकाश डालता है जो आपके वर्तमान दृष्टिकोण को अनुकूलित कर सकते हैं: अपाचे हिमशैल , सारणीबद्ध, और मिनियो। नीचे दिए गए चरण आपको बताएंगे कि कैसे ये सेवाएँ एक मज़बूत, क्लाउड-नेटिव डेटा लेक आर्किटेक्चर बनाने के लिए सहजता से संयोजित होती हैं, जो विशेष रूप से AI/ML वर्कलोड के लिए अनुकूलित है।

सारणीबद्ध (Tabular) क्या है?

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


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

Hadoop के file-io के स्थान पर S3FileIO क्यों?

यह कार्यान्वयन आइसबर्ग के S3FileIO का लाभ उठाता है। S3FileIO को कई कारणों से Hadoop के फ़ाइल-io से बेहतर माना जाता है। जिनमें से कुछ पर हम पहले ही चर्चा कर चुके हैं कहीं :


  1. क्लाउड स्टोरेज के लिए अनुकूलित : आइसबर्ग का S3FileIO क्लाउड-नेटिव स्टोरेज के साथ काम करने के लिए डिज़ाइन किया गया है।


  2. बेहतर थ्रूपुट और न्यूनतम थ्रॉटलिंग: आइसबर्ग एक का उपयोग करता है ऑब्जेक्टस्टोरलोकेशनप्रदाता मिनियो बकेट में कई प्रीफिक्सों में फ़ाइलों को वितरित करने के लिए, जो S3-संबंधित IO संचालन के लिए थ्रॉटलिंग को न्यूनतम करने और थ्रूपुट को अधिकतम करने में मदद करता है।


  3. सख्त संगति: हिमशैल रहा है अद्यतन प्रदर्शन को प्रभावित करने वाली अनावश्यक संगतता जांचों को समाप्त करके सख्त संगतता का पूर्ण लाभ उठाना।


  4. प्रगतिशील मल्टीपार्ट अपलोड: आइसबर्ग का S3FileIO कार्यान्वित करता है प्रगतिशील मल्टीपार्ट अपलोड एल्गोरिदम, जो प्रत्येक भाग के तैयार होते ही डेटा फ़ाइलों के भागों को समानांतर रूप से अपलोड करता है, जिससे स्थानीय डिस्क का उपयोग कम हो जाता है और अपलोड गति बढ़ जाती है।


  5. चेकसम सत्यापन: आइसबर्ग इसकी अनुमति देता है चेकसम सत्यापन अपलोड की गई वस्तुओं की अखंडता सुनिश्चित करने के लिए S3 API लेखन के लिए, जिसे उपयुक्त कैटलॉग गुण सेट करके सक्षम किया जा सकता है।


  6. कस्टम टैग: आइसबर्ग जोड़ने का समर्थन करता है कस्टम टैग एस3 एपीआई के साथ लिखने और हटाने के संचालन के दौरान ऑब्जेक्ट्स पर नियंत्रण, जो लागत ट्रैकिंग और प्रबंधन के लिए उपयोगी हो सकता है।


  7. नकारात्मक कैशिंग से बचाव: आइसबर्ग में FileIO इंटरफ़ेस को Hadoop-संगत फ़ाइल सिस्टम की तरह सख्त गारंटी की आवश्यकता नहीं होती है, जो इसे नकारात्मक कैशिंग से बचें अन्यथा इससे प्रदर्शन ख़राब हो सकता है।


इसके विपरीत, Hadoop का S3A FileSystem, जिसका उपयोग S3FileIO से पहले किया गया था, क्लाउड स्टोरेज के लिए समान स्तर का अनुकूलन प्रदान नहीं करता है। यह सब कहने का तात्पर्य यह है: अपने भविष्य की ओर उन्मुख डेटा लेक इंफ्रास्ट्रक्चर को अतीत की ताक़तों से बाधित न करें।

आवश्यक शर्तें

आरंभ करने से पहले, सुनिश्चित करें कि आपका सिस्टम निम्नलिखित आवश्यकताओं को पूरा करता है:

यदि आप बिलकुल शुरुआत से शुरू कर रहे हैं, तो आप दोनों को स्थापित कर सकते हैं डॉकर डेस्कटॉप अपने विशिष्ट प्लेटफ़ॉर्म के लिए इंस्टॉलर। यह अक्सर Docker और Docker Compose को अलग-अलग डाउनलोड करने से ज़्यादा आसान होता है। निम्न कमांड चलाकर पुष्टि करें कि Docker इंस्टॉल है या नहीं:


 docker-compose --version


शुरू करना

आरंभ करने के लिए, Tabular में YAML फ़ाइल को क्लोन या कॉपी करें गिट रिपोजिटरी . इस ट्यूटोरियल के लिए आपको बस YAML की आवश्यकता है। बाद में रिपॉजिटरी के बाकी हिस्सों को देखने के लिए स्वतंत्र महसूस करें।


इसे तोड़ना

प्रदान की गई YAML फ़ाइल एक Docker Compose कॉन्फ़िगरेशन फ़ाइल है। यह एक मल्टी-कंटेनर Docker एप्लिकेशन के लिए सेवाओं और उनके कॉन्फ़िगरेशन का एक सेट परिभाषित करता है। इस मामले में, दो सेवाएँ हैं: स्पार्क-आइसबर्ग और मिनिओ। आइए प्रत्येक अनुभाग को तोड़ें:


1. स्पार्क-आइसबर्ग सेवा:


 spark-iceberg: image: tabulario/spark-iceberg container_name: spark-iceberg build: spark/ networks: iceberg_net: depends_on: - rest - minio volumes: - ./warehouse:/home/iceberg/warehouse - ./notebooks:/home/iceberg/notebooks/notebooks environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 ports: - 8888:8888 - 8080:8080 - 10000:10000 - 10001:10001 rest: image: tabulario/iceberg-rest container_name: iceberg-rest networks: iceberg_net: ports: - 8181:8181 environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 - CATALOG_WAREHOUSE=s3://warehouse/ - CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO - CATALOG_S3_ENDPOINT=http://minio:9000



छवि: स्पार्क-आइसबर्ग सेवा के लिए उपयोग की जाने वाली डॉकर छवि को निर्दिष्ट करता है। इस मामले में, यह tabulario/spark-iceberg:latest छवि का उपयोग करता है।

depend_on: निर्दिष्ट करता है कि स्पार्क-आइसबर्ग सेवा रेस्ट और मिनियो सेवाओं पर निर्भर करती है।

container_name: कंटेनर को एक विशिष्ट नाम (स्पार्क-आइसबर्ग) प्रदान करता है।

वातावरण: स्पार्क और AWS क्रेडेंशियल सहित कंटेनर के लिए वातावरण चर सेट करता है।

वॉल्यूम: स्थानीय निर्देशिकाओं (./warehouse और ./notebooks) को कंटेनर के अंदर वॉल्यूम के रूप में माउंट करता है।

पोर्ट: स्पार्क यूआई और अन्य सेवाओं तक पहुंचने के लिए कंटेनर पोर्ट को होस्ट पोर्ट पर मैप करता है।


2. मिनियो सेवा:


 minio: image: minio/minio container_name: minio environment: - MINIO_ROOT_USER=admin - MINIO_ROOT_PASSWORD=password - MINIO_DOMAIN=minio networks: iceberg_net: aliases: - warehouse.minio ports: - 9001:9001 - 9000:9000 command: ["server", "/data", "--console-address", ":9001"]


छवि: MinIO सेवा के लिए Docker छवि निर्दिष्ट करता है।

container_name: कंटेनर को एक विशिष्ट नाम (MinIO) प्रदान करता है।

वातावरण: रूट उपयोगकर्ता क्रेडेंशियल सहित MinIO को कॉन्फ़िगर करने के लिए वातावरण चर सेट करता है।

पोर्ट: मिनियो यूआई तक पहुंचने के लिए कंटेनर पोर्ट को होस्ट पोर्ट पर मैप करता है।

कमांड: विशिष्ट पैरामीटर के साथ मिनियो सर्वर को प्रारंभ करने के लिए कमांड निर्दिष्ट करता है।


मिनियो सेवा का एक अन्य पहलू यह है एम सी , मिनियो का कमांड लाइन टूल.


 mc: depends_on: - minio image: minio/mc container_name: mc networks: iceberg_net: environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password - AWS_REGION=us-east-1 entrypoint: > /bin/sh -c " until (/usr/bin/mc config host add minio http://minio:9000 admin password) do echo '...waiting...' && sleep 1; done; /usr/bin/mc rm -r --force minio/warehouse; /usr/bin/mc mb minio/warehouse; /usr/bin/mc policy set public minio/warehouse; tail -f /dev/null "


depend_on: निर्दिष्ट करता है कि mc सेवा MinIO सेवा पर निर्भर करती है।

छवि: mc सेवा के लिए Docker छवि निर्दिष्ट करता है।

container_name: कंटेनर को एक विशिष्ट नाम (mc) निर्दिष्ट करता है।

वातावरण: मिनियो क्लाइंट को कॉन्फ़िगर करने के लिए वातावरण चर सेट करता है।

प्रवेश बिंदु: कंटेनर के लिए प्रवेश बिंदु कमांड को परिभाषित करता है, जिसमें मिनियो क्लाइंट के लिए सेटअप चरण शामिल हैं।


 /usr/bin/mc rm -r --force minio/warehouse; /usr/bin/mc mb minio/warehouse; /usr/bin/mc policy set public minio/warehouse; tail -f /dev/null "



आदेशों का यह क्रम मूलतः निम्नलिखित कार्य करता है:


  • मिनियो सर्वर से मौजूदा वेयरहाउस निर्देशिका और उसकी सामग्री को हटाता है।

  • वेयरहाउस नामक एक नई बकेट बनाता है.

  • वेयरहाउस बकेट की पहुँच नीति को सार्वजनिक पर सेट करता है.


यह Docker Compose फ़ाइल स्पार्क, PostgreSQL, MinIO के लिए सेवाओं के साथ एक बहु-कंटेनर वातावरण को ऑर्केस्ट्रेट करती है। यह सेवाओं को एक साथ चलाने के लिए आवश्यक निर्भरता, पर्यावरण चर और कमांड सेट करता है। सेवाएँ स्पार्क और आइसबर्ग का उपयोग करके डेटा प्रोसेसिंग के लिए एक विकास वातावरण बनाने के लिए मिलकर काम करती हैं, जिसमें ऑब्जेक्ट स्टोरेज बैकएंड के रूप में मिनिओ होता है।

शुरू

टर्मिनल विंडो में, रिपॉजिटरी में tabular-spark-setup डायरेक्टरी में cd करें और निम्नलिखित कमांड चलाएँ:


 docker-compose up


http://127.0.0.1:9001 पर admin:password क्रेडेंशियल के साथ मिनियो में लॉग इन करें और देखें कि वेयरहाउस बकेट बन गई है।



एक बार जब सभी कंटेनर चालू हो जाएं, तो आप http://localhost:8888 पर जाकर अपने ज्यूपिटर नोटबुक सर्वर तक पहुंच सकते हैं



किसी एक नमूना नोटबुक को चलाएँ और अपने वेयरहाउस में डेटा भरा हुआ देखने के लिए http://127.0.0.1:9001 पर MinIO पर वापस जाएँ।


अपना आधुनिक डेटालेक बनाना

आइसबर्ग, टेबुलर और मिनियो के साथ एक आधुनिक डेटालेक बनाने पर यह ट्यूटोरियल बस शुरुआत है। यह शक्तिशाली तिकड़ी संभावनाओं की दुनिया के द्वार खोलती है। इन उपकरणों के साथ, आप अपने सभी डेटा, संरचित और असंरचित को सहजता से एकीकृत और विश्लेषित कर सकते हैं, छिपे हुए पैटर्न को उजागर करने और नवाचार को बढ़ावा देने वाले डेटा-संचालित निर्णयों को आगे बढ़ाने के लिए। अपने AI/ML पहलों को तेज करने और अपने मशीन लर्निंग मॉडल की वास्तविक क्षमता को अनलॉक करने के लिए उत्पादन में इस वास्तुकला की दक्षता और लचीलेपन का लाभ उठाएं, जिससे ग्राउंडब्रेकिंग खोजों के लिए आपका मार्ग तेज हो। हमसे संपर्क करें [email protected] या हमारे ढीला यदि आपके पास निर्माण के दौरान कोई प्रश्न है तो कृपया चैनल से संपर्क करें।