paint-brush
कुबेरनेट्स के साथ मिनिओ और ट्रिनो को कैसे तैनात करेंद्वारा@minio
4,960 रीडिंग
4,960 रीडिंग

कुबेरनेट्स के साथ मिनिओ और ट्रिनो को कैसे तैनात करें

द्वारा MinIO6m2024/05/23
Read on Terminal Reader

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

AI/ML और एनालिटिक्स में महत्वपूर्ण कार्यभार को संभालने की क्षमता के साथ, MinIO आसानी से ट्रिनो क्वेरीज़ और उससे आगे का समर्थन करता है।
featured image - कुबेरनेट्स के साथ मिनिओ और ट्रिनो को कैसे तैनात करें
MinIO HackerNoon profile picture
0-item
1-item



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


मिनियो का उपयोग अक्सर 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 एक विश्वसनीय और उच्च प्रदर्शन वाला विकल्प बन जाता है, बिना किसी बाधा के।


यदि आपके पास मिनियो और ट्रिनो पर कोई प्रश्न हैं तो कृपया हमसे संपर्क करें ढीला !