MinIO প্রায়শই এআই/এমএল ওয়ার্কলোড, ডাটালেক থেকে লেক হাউসে ডেটা সঞ্চয় করতে ব্যবহার করা হয় তা সে Dremio, Hive, Hudi, StarRocks বা অন্য ডজনের মধ্যে যেকোনও বা আরও দুর্দান্ত AI/ML টুলস সলিউশন। প্রাথমিক সঞ্চয়স্থান স্তর হিসাবে ব্যবহৃত হলে MinIO আরও দক্ষ, যা সংরক্ষিত ডেটার জন্য মালিকানার মোট খরচ হ্রাস করে, এছাড়াও আপনি MinIO-তে ডেটা লেখার অতিরিক্ত সুবিধাগুলি পান
এই টিউটোরিয়ালে, আমরা একটি সমন্বিত সিস্টেম স্থাপন করব যা মিনিওতে সংরক্ষিত বৃহৎ ডেটাসেটগুলিতে বিতরণ করা SQL কোয়েরি করার অনুমতি দেয়, ট্রিনো হাইভ মেটাস্টোর থেকে মেটাডেটা এবং রেডিস থেকে টেবিল স্কিমা ব্যবহার করে।
এখানে বিভিন্ন উপাদান রয়েছে এবং সেগুলি আমাদের সেটআপ প্রক্রিয়াতে কী করে আমরা পরবর্তীতে যাবো।
শুরু করার আগে, নিশ্চিত করুন যে আপনার 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 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
Trino নামস্থানের মধ্যে MinIO প্রস্তুত করুন।
kubectl minio init -n trino
ডেটা স্টোরেজের জন্য একটি মাল্টি-টেন্যান্ট আর্কিটেকচার সেট আপ করুন। নীচের উদাহরণটি চারটি সার্ভার, চারটি স্টোরেজ ভলিউম এবং 4 GiB ক্ষমতা সহ "টেন্যান্ট-1" নামে একটি ভাড়াটে তৈরি করেছে:
kubectl minio tenant create tenant-1 --servers 4 --volumes 4 --capacity 4Gi -n trino
Trino টেবিলের মেটাডেটা সঞ্চয় করতে Hive Metastore ব্যবহার করে। মেটাডেটা পরিচালনা করতে PostgreSQL স্থাপন করুন, তারপর Hive Metastore সেট আপ করুন:
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
Trino এবং MinIO বড় ডেটাসেট জুড়ে বিতরণ করা SQL কোয়েরির জন্য একটি শক্তিশালী সমন্বয় তৈরি করে। সিস্টেম স্থাপন এবং কনফিগার করতে এই পদক্ষেপগুলি অনুসরণ করুন।
রেডিস হল একটি উচ্চ-গতির, ইন-মেমরি ডেটা স্টোর যা বর্ধিত ক্যোয়ারী কর্মক্ষমতার জন্য Trino টেবিল স্কিমা ধরে রাখতে ব্যবহৃত হয়। একটি হেলম চার্ট ব্যবহার করে Trino নামস্থানে এটি স্থাপন করুন:
helm upgrade --install my-redis bitnami/redis -n trino -f redis/values.yaml
বিতরণ করা 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 পরিষেবাতে পোর্ট ফরওয়ার্ড করুন:
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. বালতি তৈরি করুন: একটি নতুন বালতি তৈরি করুন যা Trino ব্যবহার করবে
mc mb my-minio/tiny --insecure
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 ব্যবহার করুন।
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)
বালতি তৈরি করার পরে, 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 সম্পর্কে আপনার কোন প্রশ্ন থাকলে আমাদের সাথে যোগাযোগ করতে ভুলবেন না