paint-brush
কুবারনেটসের সাথে MinIO এবং Trino কীভাবে স্থাপন করবেনদ্বারা@minio
4,960 পড়া
4,960 পড়া

কুবারনেটসের সাথে MinIO এবং Trino কীভাবে স্থাপন করবেন

দ্বারা MinIO6m2024/05/23
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

AI/ML এবং অ্যানালিটিক্স জুড়ে উল্লেখযোগ্য কাজের চাপ সামলানোর ক্ষমতা সহ, MinIO অনায়াসে Trino কোয়েরি এবং তার পরেও সমর্থন করে।
featured image - কুবারনেটসের সাথে MinIO এবং Trino কীভাবে স্থাপন করবেন
MinIO HackerNoon profile picture
0-item
1-item



ট্রিনো (পূর্বে প্রেস্টো) একটি SQL ক্যোয়ারী ইঞ্জিন - একটি SQL ডাটাবেস নয়। Trino এসকিউএল ডাটাবেসের স্টোরেজ কম্পোনেন্টকে শুধুমাত্র একটি জিনিসের উপর ফোকাস করার জন্য এড়িয়ে গেছে - অতি-দ্রুত SQL কোয়েরি। Trino শুধুমাত্র একটি ক্যোয়ারী ইঞ্জিন এবং ডেটা সঞ্চয় করে না। পরিবর্তে, Trino বিভিন্ন ডাটাবেসের সাথে বা সরাসরি অবজেক্ট স্টোরেজের সাথে যোগাযোগ করে। Trino আপনার পাস করা SQL ক্যোয়ারী পার্স করে এবং বিশ্লেষণ করে, একটি ক্যোয়ারী এক্সিকিউশন প্ল্যান তৈরি করে এবং অপ্টিমাইজ করে যাতে ডেটা সোর্স অন্তর্ভুক্ত থাকে, এবং তারপর কর্মী নোডের সময়সূচী নির্ধারণ করে যেগুলি বুদ্ধিমত্তার সাথে অন্তর্নিহিত ডেটাবেসগুলির সাথে সংযোগ করতে সক্ষম হয়।


MinIO প্রায়শই এআই/এমএল ওয়ার্কলোড, ডাটালেক থেকে লেক হাউসে ডেটা সঞ্চয় করতে ব্যবহার করা হয় তা সে Dremio, Hive, Hudi, StarRocks বা অন্য ডজনের মধ্যে যেকোনও বা আরও দুর্দান্ত AI/ML টুলস সলিউশন। প্রাথমিক সঞ্চয়স্থান স্তর হিসাবে ব্যবহৃত হলে MinIO আরও দক্ষ, যা সংরক্ষিত ডেটার জন্য মালিকানার মোট খরচ হ্রাস করে, এছাড়াও আপনি MinIO-তে ডেটা লেখার অতিরিক্ত সুবিধাগুলি পান অপরিবর্তনীয় , সংস্করণ এবং দ্বারা সুরক্ষিত ইরেজার কোডিং . এছাড়াও, MinIO অবজেক্ট স্টোরেজে ডেটা সংরক্ষণ করা এটিকে অন্যান্য ক্লাউড নেটিভ মেশিন লার্নিং এবং বিশ্লেষণ অ্যাপ্লিকেশনগুলিতে উপলব্ধ করে।


এই টিউটোরিয়ালে, আমরা একটি সমন্বিত সিস্টেম স্থাপন করব যা মিনিওতে সংরক্ষিত বৃহৎ ডেটাসেটগুলিতে বিতরণ করা SQL কোয়েরি করার অনুমতি দেয়, ট্রিনো হাইভ মেটাস্টোর থেকে মেটাডেটা এবং রেডিস থেকে টেবিল স্কিমা ব্যবহার করে।

উপাদান

এখানে বিভিন্ন উপাদান রয়েছে এবং সেগুলি আমাদের সেটআপ প্রক্রিয়াতে কী করে আমরা পরবর্তীতে যাবো।


  • Minio: Minio বড় ডেটাসেট সংরক্ষণ করতে ব্যবহার করা যেতে পারে, যেমন সাধারণত Trino দ্বারা বিশ্লেষণ করা হয়।
  • Hive Metastore : Hive Metastore হল একটি পরিষেবা যা Hive টেবিলের জন্য মেটাডেটা সংরক্ষণ করে (যেমন টেবিল স্কিমা)। Trino ডেটাসেট অনুসন্ধান করার সময় টেবিলের স্কিমা নির্ধারণ করতে Hive Metastore ব্যবহার করতে পারে।
  • হাইভ মেটাস্টোরের জন্য পোস্টগ্রেএসকিউএল: এটি হাইভ মেটাস্টোরের জন্য ডাটাবেস ব্যাকএন্ড। এটা যেখানে মেটাডেটা আসলে সংরক্ষিত হয়.
  • Redis: এই সেটআপে, Trino-এর জন্য টেবিল স্কিমা সংরক্ষণের জন্য Redis।
  • Trino: Trino (পূর্বে Presto নামে পরিচিত) একটি উচ্চ-কর্মক্ষমতা, বিতরণ করা SQL কোয়েরি ইঞ্জিন। এটি SQL ডাটাবেস, NoSQL ডাটাবেস, এমনকি Minio-এর মতো অবজেক্ট স্টোরেজের মতো বিভিন্ন ডেটা উত্স জুড়ে ডেটা অনুসন্ধানের অনুমতি দেয়।

পূর্বশর্ত

শুরু করার আগে, নিশ্চিত করুন যে আপনার Kubernetes ক্লাস্টার পরিচালনার জন্য আপনার প্রয়োজনীয় সরঞ্জাম ইনস্টল করা আছে:


  • kubectl : Kubernetes ক্লাস্টার পরিচালনার জন্য প্রাথমিক কমান্ড-লাইন টুল। আপনি ক্লাস্টার সংস্থানগুলি পরিদর্শন, ম্যানিপুলেট এবং পরিচালনা করতে এটি ব্যবহার করতে পারেন।
  • হেলম : কুবারনেটসের জন্য একটি প্যাকেজ ম্যানেজার। হেলম আপনাকে পূর্ব-নির্ধারিত চার্ট ব্যবহার করে আপনার ক্লাস্টারের মধ্যে অ্যাপ্লিকেশনগুলি স্থাপন, আপগ্রেড এবং পরিচালনা করার অনুমতি দেয়।

সংগ্রহস্থল ক্লোনিং

Kubernetes এ Trino স্থাপনের জন্য প্রয়োজনীয় সংস্থানগুলি অ্যাক্সেস করতে, নির্দিষ্ট GitHub সংগ্রহস্থল ক্লোন করুন এবং উপযুক্ত ডিরেক্টরিতে নেভিগেট করুন:


 git clone https://github.com/minio/blog-assets.git cd blog-assets/trino-on-kubernetes

কুবারনেটস নেমস্পেস সৃষ্টি

Kubernetes-এ নামস্থান অ্যাপ্লিকেশনের জন্য বিচ্ছিন্ন পরিবেশ প্রদান করে। Trino এর ডিপ্লয়মেন্ট এনক্যাপসুলেট করার জন্য একটি নতুন নামস্থান তৈরি করুন:


 kubectl create namespace trino --dry-run=client -o yaml | kubectl apply -f -

Redis টেবিল সংজ্ঞা গোপন

Redis Trino দ্বারা ব্যবহৃত টেবিল স্কিমা সংরক্ষণ করবে। কুবারনেটস সিক্রেট দিয়ে এই স্কিমাগুলি সুরক্ষিত করুন। নিম্নলিখিত কমান্ডটি একটি জেনেরিক গোপন তৈরি করে, একটি 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 আরম্ভ করুন

Trino নামস্থানের মধ্যে MinIO প্রস্তুত করুন।


 kubectl minio init -n trino

MinIO ভাড়াটে তৈরি করুন

ডেটা স্টোরেজের জন্য একটি মাল্টি-টেন্যান্ট আর্কিটেকচার সেট আপ করুন। নীচের উদাহরণটি চারটি সার্ভার, চারটি স্টোরেজ ভলিউম এবং 4 GiB ক্ষমতা সহ "টেন্যান্ট-1" নামে একটি ভাড়াটে তৈরি করেছে:


 kubectl minio tenant create tenant-1 --servers 4 --volumes 4 --capacity 4Gi -n trino

হাইভ মেটাস্টোর সেট আপ করুন

Trino টেবিলের মেটাডেটা সঞ্চয় করতে Hive Metastore ব্যবহার করে। মেটাডেটা পরিচালনা করতে PostgreSQL স্থাপন করুন, তারপর Hive Metastore সেট আপ করুন:

PostgreSQL ইনস্টল করুন


 helm upgrade --install hive-metastore-postgresql bitnami/postgresql -n trino -f hive-metastore-postgresql/values.yaml

হাইভ মেটাস্টোর স্থাপন করুন

Trino নামস্থানের মধ্যে Hive Metastore স্থাপন করতে একটি পূর্ব-কনফিগার করা হেলম চার্ট ব্যবহার করুন:


 helm upgrade --install my-hive-metastore -n trino -f hive-metastore/values.yaml ./charts/hive-metastore

Kubernetes এর সাথে MinIO এবং Trino স্থাপন করা হচ্ছে

Trino এবং MinIO বড় ডেটাসেট জুড়ে বিতরণ করা SQL কোয়েরির জন্য একটি শক্তিশালী সমন্বয় তৈরি করে। সিস্টেম স্থাপন এবং কনফিগার করতে এই পদক্ষেপগুলি অনুসরণ করুন।

টেবিল স্কিমা স্টোর করতে Redis স্থাপন করুন

রেডিস হল একটি উচ্চ-গতির, ইন-মেমরি ডেটা স্টোর যা বর্ধিত ক্যোয়ারী কর্মক্ষমতার জন্য Trino টেবিল স্কিমা ধরে রাখতে ব্যবহৃত হয়। একটি হেলম চার্ট ব্যবহার করে Trino নামস্থানে এটি স্থাপন করুন:


 helm upgrade --install my-redis bitnami/redis -n trino -f redis/values.yaml


Trino স্থাপন করুন

বিতরণ করা SQL ক্যোয়ারী ইঞ্জিন হিসাবে Trino স্থাপন করুন যা MinIO এবং অন্যান্য ডেটা উত্সের সাথে সংযোগ করবে:


 helm upgrade --install my-trino trino/trino --version 0.7.0 --namespace trino -f trino/values.yaml

স্থাপনা যাচাই করুন

Trino নামস্থানে পড তালিকাবদ্ধ করে সমস্ত উপাদান সঠিকভাবে চলছে তা নিশ্চিত করুন:


 kubectl get pods -n trino


নিরাপত্তা পর্যালোচনা এবং সমন্বয়


প্রয়োজন অনুযায়ী নিরাপত্তা সেটিংস পর্যালোচনা এবং সামঞ্জস্য করুন। S3 সংযোগের জন্য SSL শংসাপত্রের বৈধতা নিষ্ক্রিয় করতে, নিম্নলিখিত বৈশিষ্ট্য সহ values.yaml ফাইলের অতিরিক্ত ক্যাটালগ বিভাগটি আপডেট করুন:


 hive.s3.ssl.enabled=false

পরীক্ষামূলক

MinIO ভাড়াটে পরিষেবাতে পোর্ট ফরোয়ার্ড

স্থানীয় অ্যাক্সেস সক্ষম করে ভাড়াটেদের MinIO পরিষেবাতে পোর্ট ফরওয়ার্ড করুন:


 kubectl port-forward svc/minio -n trino 9443:443

Trino এর জন্য উপনাম এবং বালতি তৈরি করুন

1. উপনাম তৈরি করুন: MinIO স্থাপনার শংসাপত্রগুলি ব্যবহার করে ভাড়াটেদের জন্য একটি উপনাম স্থাপন করুন:


 mc alias set my-minio https://localhost:9443/ minio_access_key minio_secret_key --insecure


2. বালতি তৈরি করুন: একটি নতুন বালতি তৈরি করুন যা Trino ব্যবহার করবে


 mc mb my-minio/tiny --insecure

পোর্ট ফরওয়ার্ডের মাধ্যমে Trino UI অ্যাক্সেস করুন

1. পডের নাম প্রাপ্ত করুন: Trino সমন্বয়কারী পডের নাম পুনরুদ্ধার করুন:


 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. UI অ্যাক্সেস করুন: http://127.0.0.1:8080-এ গিয়ে আপনার ব্রাউজারে Trino UI ব্যবহার করুন।



CLI এর মাধ্যমে Trino জিজ্ঞাসা করুন

Trino সমন্বয়কারী পড অ্যাক্সেস করুন এবং কমান্ড লাইনের মাধ্যমে অনুসন্ধান শুরু করুন:


 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)


MinIO বালতিতে ডেটা নিশ্চিত করুন

বালতি তৈরি করার পরে, mc কমান্ড-লাইন টুলের সাথে বিষয়বস্তু তালিকাভুক্ত করে MinIO-তে ডেটা সংরক্ষণ করা হয়েছে তা নিশ্চিত করুন। নিম্নলিখিত কমান্ড ব্যবহার করুন:


 mc ls my-minio/tiny --insecure


এটা ঐটার মতই সহজ!

সর্বশেষ ভাবনা

কনফিগারেশন সংক্রান্ত সমস্যাগুলির সমাধান করার সময়, বিশেষ করে নিরাপত্তা সংক্রান্ত সমস্যাগুলি, যথাযথ সেটিংস নিশ্চিত করতে প্রতিটি উপাদানের জন্য values.yaml ফাইলগুলি পুঙ্খানুপুঙ্খভাবে পর্যালোচনা করুন।


বিশেষায়িত ডাটাবেস বা অবজেক্ট স্টোরেজ যাই হোক না কেন, বিভিন্ন ডেটা স্তর জুড়ে প্রশ্নগুলি অপ্টিমাইজ করার ক্ষমতার জন্য Trino আলাদা। এটি শুধুমাত্র প্রয়োজনীয় ডেটা পুনরুদ্ধার করার জন্য কোয়েরিগুলিকে নিচে ঠেলে ডেটা স্থানান্তর হ্রাস করার লক্ষ্য রাখে। এটি Trino কে বিভিন্ন উত্স থেকে ডেটাসেটে যোগদান করতে, আরও প্রক্রিয়াকরণ করতে, বা দক্ষতার সাথে সুনির্দিষ্ট ফলাফল ফেরত দিতে সক্ষম করে।


MinIO তার শিল্প-নেতৃস্থানীয় স্কেলেবিলিটি এবং কর্মক্ষমতার কারণে Trino-এর সাথে ব্যতিক্রমীভাবে যুক্ত। AI/ML এবং বিশ্লেষণ জুড়ে উল্লেখযোগ্য কাজের চাপ সামলানোর ক্ষমতা সহ, MinIO অনায়াসে Trino কোয়েরি এবং এর বাইরেও সমর্থন করে। সাম্প্রতিক বেঞ্চমার্কে, MinIO GET অপারেশনের জন্য একটি চিত্তাকর্ষক 325 GiB/s (349 GB/s) এবং PUT অপারেশনের জন্য 165 GiB/s (177 GB/s) মাত্র 32টি নোড জুড়ে অর্জন করেছে। এই অসাধারণ পারফরম্যান্স নিশ্চিত করে যে MinIO-তে সংরক্ষিত ডেটা সহজে অ্যাক্সেসযোগ্য থাকে, MinIO কে Trino-এর জন্য একটি নির্ভরযোগ্য এবং উচ্চ-কার্যকারি পছন্দ করে তোলে।


MinIO এবং Trino সম্পর্কে আপনার কোন প্রশ্ন থাকলে আমাদের সাথে যোগাযোগ করতে ভুলবেন না স্ল্যাক !