आधुनिक डेटा परिदृश्य एक नए प्रकार के बुनियादी ढांचे की मांग करता है - जो संरचित और असंरचित डेटा को सहजता से एकीकृत करता है, आसानी से स्केल करता है, और कुशल AI/ML कार्यभार को सशक्त बनाता है। यह वह जगह है जहाँ
यह ब्लॉग पोस्ट तीन शक्तिशाली उपकरणों पर गहराई से प्रकाश डालता है जो आपके वर्तमान दृष्टिकोण को अनुकूलित कर सकते हैं:
सारणीबद्ध (Tabular) क्या है?
टैबुलर एक डेटा प्लेटफ़ॉर्म है जिसे अपाचे आइसबर्ग के मूल रचनाकारों द्वारा बनाया गया है। इसे एक स्वतंत्र, सार्वभौमिक स्टोरेज प्लेटफ़ॉर्म प्रदान करने के लिए डिज़ाइन किया गया है जो किसी भी कंप्यूट लेयर से जुड़ता है, जिससे डेटा विक्रेता लॉक-इन समाप्त हो जाता है। यह सुविधा आधुनिक डेटा स्टैक के लिए महत्वपूर्ण है, यह उपयोगकर्ताओं को किसी विशेष विक्रेता के पुराने और या बेमेल टूल सेट में मजबूर किए बिना सर्वश्रेष्ठ-इन-क्लास कंप्यूट और स्टोरेज टूल चुनने की अनुमति देता है।
एक
Hadoop के file-io के स्थान पर S3FileIO क्यों?
यह कार्यान्वयन आइसबर्ग के S3FileIO का लाभ उठाता है। S3FileIO को कई कारणों से Hadoop के फ़ाइल-io से बेहतर माना जाता है। जिनमें से कुछ पर हम पहले ही चर्चा कर चुके हैं
क्लाउड स्टोरेज के लिए अनुकूलित : आइसबर्ग का S3FileIO क्लाउड-नेटिव स्टोरेज के साथ काम करने के लिए डिज़ाइन किया गया है।
बेहतर थ्रूपुट और न्यूनतम थ्रॉटलिंग: आइसबर्ग एक का उपयोग करता है
ऑब्जेक्टस्टोरलोकेशनप्रदाता मिनियो बकेट में कई प्रीफिक्सों में फ़ाइलों को वितरित करने के लिए, जो S3-संबंधित IO संचालन के लिए थ्रॉटलिंग को न्यूनतम करने और थ्रूपुट को अधिकतम करने में मदद करता है।
सख्त संगति: हिमशैल रहा है
अद्यतन प्रदर्शन को प्रभावित करने वाली अनावश्यक संगतता जांचों को समाप्त करके सख्त संगतता का पूर्ण लाभ उठाना।
प्रगतिशील मल्टीपार्ट अपलोड: आइसबर्ग का S3FileIO कार्यान्वित करता है
प्रगतिशील मल्टीपार्ट अपलोड एल्गोरिदम, जो प्रत्येक भाग के तैयार होते ही डेटा फ़ाइलों के भागों को समानांतर रूप से अपलोड करता है, जिससे स्थानीय डिस्क का उपयोग कम हो जाता है और अपलोड गति बढ़ जाती है।
चेकसम सत्यापन: आइसबर्ग इसकी अनुमति देता है
चेकसम सत्यापन अपलोड की गई वस्तुओं की अखंडता सुनिश्चित करने के लिए S3 API लेखन के लिए, जिसे उपयुक्त कैटलॉग गुण सेट करके सक्षम किया जा सकता है।
कस्टम टैग: आइसबर्ग जोड़ने का समर्थन करता है
कस्टम टैग एस3 एपीआई के साथ लिखने और हटाने के संचालन के दौरान ऑब्जेक्ट्स पर नियंत्रण, जो लागत ट्रैकिंग और प्रबंधन के लिए उपयोगी हो सकता है।
नकारात्मक कैशिंग से बचाव: आइसबर्ग में FileIO इंटरफ़ेस को Hadoop-संगत फ़ाइल सिस्टम की तरह सख्त गारंटी की आवश्यकता नहीं होती है, जो इसे
नकारात्मक कैशिंग से बचें अन्यथा इससे प्रदर्शन ख़राब हो सकता है।
इसके विपरीत, Hadoop का S3A FileSystem, जिसका उपयोग S3FileIO से पहले किया गया था, क्लाउड स्टोरेज के लिए समान स्तर का अनुकूलन प्रदान नहीं करता है। यह सब कहने का तात्पर्य यह है: अपने भविष्य की ओर उन्मुख डेटा लेक इंफ्रास्ट्रक्चर को अतीत की ताक़तों से बाधित न करें।
आवश्यक शर्तें
आरंभ करने से पहले, सुनिश्चित करें कि आपका सिस्टम निम्नलिखित आवश्यकताओं को पूरा करता है:
यदि आप बिलकुल शुरुआत से शुरू कर रहे हैं, तो आप दोनों को स्थापित कर सकते हैं
docker-compose --version
शुरू करना
आरंभ करने के लिए, Tabular में 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 पहलों को तेज करने और अपने मशीन लर्निंग मॉडल की वास्तविक क्षमता को अनलॉक करने के लिए उत्पादन में इस वास्तुकला की दक्षता और लचीलेपन का लाभ उठाएं, जिससे ग्राउंडब्रेकिंग खोजों के लिए आपका मार्ग तेज हो। हमसे संपर्क करें