मिनियो का उपयोग अक्सर AI/ML वर्कलोड, डेटालेक से लेकर लेक हाउस तक डेटा स्टोर करने के लिए किया जाता है, चाहे वह ड्रेमियो, हाइव, हुडी, स्टाररॉक्स या कोई अन्य दर्जन या उससे अधिक बेहतरीन AI/ML टूल समाधान हों। मिनियो प्राथमिक स्टोरेज लेयर के रूप में उपयोग किए जाने पर अधिक कुशल होता है, जो संग्रहीत डेटा के लिए स्वामित्व की कुल लागत को कम करता है, साथ ही आपको मिनियो में डेटा लिखने का अतिरिक्त लाभ मिलता है।
इस ट्यूटोरियल में, हम एक सुसंगत प्रणाली तैनात करेंगे जो मिनियो में संग्रहीत बड़े डेटासेट में वितरित SQL क्वेरी की अनुमति देता है, जिसमें ट्रिनो हाइव मेटास्टोर से मेटाडेटा और रेडिस से टेबल स्कीमा का लाभ उठाता है।
अवयव
यहां विभिन्न घटक दिए गए हैं और वे हमारी सेटअप प्रक्रिया में क्या करते हैं, हम आगे इस पर चर्चा करेंगे।
- मिनियो: मिनियो का उपयोग बड़े डेटासेट को संग्रहीत करने के लिए किया जा सकता है, जैसे कि ट्रिनो द्वारा आमतौर पर विश्लेषण किए गए डेटासेट।
- हाइव मेटास्टोर : हाइव मेटास्टोर एक ऐसी सेवा है जो हाइव टेबल (जैसे टेबल स्कीमा) के लिए मेटाडेटा संग्रहीत करती है। ट्रिनो डेटासेट क्वेरी करते समय टेबल की स्कीमा निर्धारित करने के लिए हाइव मेटास्टोर का उपयोग कर सकता है।
- हाइव मेटास्टोर के लिए PostgreSQL: यह हाइव मेटास्टोर के लिए डेटाबेस बैकएंड है। यह वह जगह है जहाँ मेटाडेटा वास्तव में संग्रहीत होता है।
- Redis: इस सेटअप में, Trino के लिए तालिका स्कीमा संग्रहीत करने के लिए Redis.
- ट्रिनो: ट्रिनो (जिसे पहले प्रेस्टो के नाम से जाना जाता था) एक उच्च-प्रदर्शन, वितरित SQL क्वेरी इंजन है। यह SQL डेटाबेस, NoSQL डेटाबेस और यहां तक कि मिनियो जैसे ऑब्जेक्ट स्टोरेज जैसे विभिन्न डेटा स्रोतों में डेटा क्वेरी करने की अनुमति देता है।
आवश्यक शर्तें
शुरू करने से पहले, सुनिश्चित करें कि आपके पास अपने Kubernetes क्लस्टर के प्रबंधन के लिए आवश्यक उपकरण स्थापित हैं:
- kubectl : Kubernetes क्लस्टर को प्रबंधित करने के लिए प्राथमिक कमांड-लाइन टूल। आप इसका उपयोग क्लस्टर संसाधनों का निरीक्षण, हेरफेर और प्रबंधन करने के लिए कर सकते हैं।
- हेल्म : कुबेरनेट्स के लिए एक पैकेज मैनेजर। हेल्म आपको पूर्व-निर्धारित चार्ट का उपयोग करके अपने क्लस्टर के भीतर एप्लिकेशन को तैनात, अपग्रेड और प्रबंधित करने की अनुमति देता है।
रिपोजिटरी क्लोनिंग
Kubernetes पर Trino को तैनात करने के लिए आवश्यक संसाधनों तक पहुंचने के लिए, विशिष्ट GitHub रिपॉजिटरी को क्लोन करें और उपयुक्त निर्देशिका पर नेविगेट करें:
git clone https://github.com/minio/blog-assets.git cd blog-assets/trino-on-kubernetes
Kubernetes नामस्थान निर्माण
Kubernetes में नामस्थान अनुप्रयोगों के लिए पृथक वातावरण प्रदान करते हैं। ट्रिनो के परिनियोजन को समाहित करने के लिए एक नया नामस्थान बनाएँ:
kubectl create namespace trino --dry-run=client -o yaml | kubectl apply -f -
Redis तालिका परिभाषा गुप्त
रेडिस ट्रिनो द्वारा उपयोग किए जाने वाले टेबल स्कीमा को संग्रहीत करेगा। इन स्कीमा को कुबेरनेट्स सीक्रेट से सुरक्षित करें। निम्न कमांड एक सामान्य सीक्रेट बनाता है, JSON फ़ाइल से डेटा सोर्स करता है:
kubectl create secret generic redis-table-definition --from-file=redis/test.json -n trino || true
हेल्म रिपॉजिटरीज़ जोड़ें
हेल्म रिपॉजिटरी प्री-पैकेज्ड चार्ट प्रदान करते हैं जो एप्लिकेशन परिनियोजन को सरल बनाते हैं। अपने हेल्म कॉन्फ़िगरेशन में बिटनामी और ट्रिनो रिपॉजिटरी जोड़ें:
helm repo add bitnami https://charts.bitnami.com/bitnami || true helm repo add trino https://trinodb.github.io/charts/ || true
डेटा संग्रहण के लिए MinIO तैनात करें
MinIO आरंभ करें
ट्रिनो नामस्थान के भीतर मिनियो तैयार करें।
kubectl minio init -n trino
मिनियो टेनेंट बनाएं
डेटा स्टोरेज के लिए मल्टी-टेनेंट आर्किटेक्चर सेट अप करें। नीचे दिया गया उदाहरण चार सर्वर, चार स्टोरेज वॉल्यूम और 4 GiB की क्षमता वाला “टेनेंट-1” नामक एक टेनेंट बनाता है:
kubectl minio tenant create tenant-1 --servers 4 --volumes 4 --capacity 4Gi -n trino
हाइव मेटास्टोर सेट अप करें
ट्रिनो टेबल मेटाडेटा को संग्रहीत करने के लिए हाइव मेटास्टोर का उपयोग करता है। मेटाडेटा को प्रबंधित करने के लिए PostgreSQL को तैनात करें, फिर हाइव मेटास्टोर को सेट अप करें:
PostgreSQL स्थापित करें
helm upgrade --install hive-metastore-postgresql bitnami/postgresql -n trino -f hive-metastore-postgresql/values.yaml
हाइव मेटास्टोर तैनात करें
ट्रिनो नामस्थान के भीतर हाइव मेटास्टोर को तैनात करने के लिए पूर्व-कॉन्फ़िगर किए गए हेल्म चार्ट का उपयोग करें:
helm upgrade --install my-hive-metastore -n trino -f hive-metastore/values.yaml ./charts/hive-metastore
Kubernetes के साथ MinIO और Trino को तैनात करना
ट्रिनो और मिनिओ बड़े डेटासेट में वितरित SQL क्वेरी के लिए एक शक्तिशाली संयोजन बनाते हैं। सिस्टम को तैनात और कॉन्फ़िगर करने के लिए इन चरणों का पालन करें।
टेबल स्कीमा को संग्रहीत करने के लिए Redis को तैनात करें
रेडिस एक हाई-स्पीड, इन-मेमोरी डेटा स्टोर है जिसका उपयोग बेहतर क्वेरी प्रदर्शन के लिए ट्रिनो टेबल स्कीमा को होल्ड करने के लिए किया जाता है। इसे हेल्म चार्ट का उपयोग करके ट्रिनो नेमस्पेस में तैनात करें:
helm upgrade --install my-redis bitnami/redis -n trino -f redis/values.yaml
ट्रिनो तैनात करें
ट्रिनो को वितरित SQL क्वेरी इंजन के रूप में तैनात करें जो मिनियो और अन्य डेटा स्रोतों से कनेक्ट होगा:
helm upgrade --install my-trino trino/trino --version 0.7.0 --namespace trino -f trino/values.yaml
परिनियोजन सत्यापित करें
ट्रिनो नामस्थान में पॉड्स को सूचीबद्ध करके पुष्टि करें कि सभी घटक सही ढंग से चल रहे हैं:
kubectl get pods -n trino
सुरक्षा समीक्षा और समायोजन
आवश्यकतानुसार सुरक्षा सेटिंग की समीक्षा करें और उसे समायोजित करें। S3 कनेक्शन के लिए SSL प्रमाणपत्र सत्यापन को अक्षम करने के लिए, values.yaml फ़ाइल के अतिरिक्त कैटलॉग अनुभाग को निम्न प्रॉपर्टी से अपडेट करें:
hive.s3.ssl.enabled=false
परिक्षण
मिनियो टेनेंट सेवा पर पोर्ट फॉरवर्ड करें
टेनेंट की MinIO सेवा पर पोर्ट फॉरवर्ड करें, जिससे स्थानीय पहुंच सक्षम हो सके:
kubectl port-forward svc/minio -n trino 9443:443
ट्रिनो के लिए उपनाम और बकेट बनाएं
1. उपनाम बनाएँ: MinIO परिनियोजन से क्रेडेंशियल्स का उपयोग करके टेनेंट के लिए एक उपनाम स्थापित करें:
mc alias set my-minio https://localhost:9443/ minio_access_key minio_secret_key --insecure
2. बकेट बनाएँ: एक नई बकेट बनाएँ जिसका उपयोग ट्रिनो करेगा
mc mb my-minio/tiny --insecure
पोर्ट फॉरवर्ड के माध्यम से ट्रिनो यूआई तक पहुंचें
1. पॉड नाम प्राप्त करें: ट्रिनो समन्वयक पॉड का नाम प्राप्त करें:
export POD_NAME=$(kubectl get pods --namespace trino -l "app=trino,release=my-trino,component=coordinator" -o jsonpath="{.items[0].metadata.name}")
2. पोर्ट फॉरवर्ड: स्थानीय पोर्ट 8080 को समन्वयक पॉड पर फॉरवर्ड करें:
kubectl port-forward $POD_NAME 8080:8080
3. एक्सेस यूआई: http://127.0.0.1:8080 पर जाकर अपने ब्राउज़र में ट्रिनो यूआई का उपयोग करें।
CLI के माध्यम से ट्रिनो पर क्वेरी करें
ट्रिनो समन्वयक पॉड तक पहुंचें और कमांड लाइन के माध्यम से क्वेरी करना शुरू करें:
kubectl exec -it deploy/my-trino-coordinator -n trino -- trino
SHOW CATALOGS;
SHOW SCHEMAS IN minio;
Schema -------------------- default information_schema
CREATE SCHEMA minio.tiny WITH (location = 's3a://tiny/');
CREATE TABLE minio.tiny.customer WITH ( format = 'ORC', external_location = 's3a://tiny/customer/' ) AS SELECT * FROM tpch.tiny.customer;
SELECT * FROM minio.tiny.customer LIMIT 50;
SHOW SCHEMAS IN minio;
Schema -------------------- default information_schema tiny (3 rows)
मिनियो बकेट में डेटा की पुष्टि करें
बकेट बनाने के बाद, mc कमांड-लाइन टूल से सामग्री को सूचीबद्ध करके पुष्टि करें कि डेटा MinIO में संग्रहीत है। निम्न कमांड का उपयोग करें:
mc ls my-minio/tiny --insecure
यह इतना सरल है!
अंतिम विचार
कॉन्फ़िगरेशन समस्याओं का निवारण करते समय, विशेष रूप से सुरक्षा से संबंधित समस्याओं का, उचित सेटिंग्स सुनिश्चित करने के लिए प्रत्येक घटक के लिए values.yaml फ़ाइलों की गहन समीक्षा करें।
ट्रिनो विभिन्न डेटा परतों में क्वेरीज़ को अनुकूलित करने की अपनी क्षमता के लिए जाना जाता है, चाहे वह विशेष डेटाबेस हो या ऑब्जेक्ट स्टोरेज। इसका उद्देश्य केवल आवश्यक डेटा को पुनः प्राप्त करने के लिए क्वेरीज़ को नीचे धकेलकर डेटा स्थानांतरण को कम करना है। यह ट्रिनो को विभिन्न स्रोतों से डेटासेट को जोड़ने, आगे की प्रक्रिया करने या कुशलतापूर्वक सटीक परिणाम देने में सक्षम बनाता है।
MinIO अपनी उद्योग-अग्रणी स्केलेबिलिटी और प्रदर्शन के कारण ट्रिनो के साथ असाधारण रूप से अच्छी तरह से जुड़ता है। AI/ML और एनालिटिक्स में महत्वपूर्ण कार्यभार संभालने की क्षमता के साथ, MinIO आसानी से ट्रिनो क्वेरीज़ और उससे आगे का समर्थन करता है। हाल के बेंचमार्क में, MinIO ने केवल 32 नोड्स पर GET संचालन के लिए 325 GiB/s (349 GB/s) और PUT संचालन के लिए 165 GiB/s (177 GB/s) की प्रभावशाली गति हासिल की। यह उल्लेखनीय प्रदर्शन सुनिश्चित करता है कि MinIO में संग्रहीत डेटा आसानी से सुलभ रहता है, जिससे ट्रिनो के लिए MinIO एक विश्वसनीय और उच्च प्रदर्शन वाला विकल्प बन जाता है, बिना किसी बाधा के।
यदि आपके पास मिनियो और ट्रिनो पर कोई प्रश्न हैं तो कृपया हमसे संपर्क करें