paint-brush
আপনাকে MinIO-তে যেতে সাহায্য করার জন্য ডেটা মাইগ্রেশন টুলদ্বারা@minio
7,028 পড়া
7,028 পড়া

আপনাকে MinIO-তে যেতে সাহায্য করার জন্য ডেটা মাইগ্রেশন টুল

দ্বারা MinIO8m2023/11/01
Read on Terminal Reader
Read this story w/o Javascript

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

আসুন S3, স্থানীয় ফাইলসিস্টেম, NFS, Azure, GCP, Hitachi কন্টেন্ট প্ল্যাটফর্ম, Ceph এবং অন্যান্য এবং MinIO ক্লাস্টারে ডেটা পেতে উপলব্ধ কিছু টুল পর্যালোচনা করি।
featured image - আপনাকে MinIO-তে যেতে সাহায্য করার জন্য ডেটা মাইগ্রেশন টুল
MinIO HackerNoon profile picture
0-item
1-item


MinIO যেকোন কিছুতে চলে – বেয়ার মেটাল, কুবারনেটস, ডকার, লিনাক্স এবং আরও অনেক কিছু। সংস্থাগুলি এই প্ল্যাটফর্মগুলির যে কোনও একটিতে তাদের ডেটা হোস্ট করতে MinIO চালানো বেছে নেয় এবং একাধিক প্রয়োজনীয়তা মেটাতে ক্রমবর্ধমানভাবে একাধিক প্ল্যাটফর্মের উপর নির্ভর করে। অন্তর্নিহিত হার্ডওয়্যার এবং OS-এর পছন্দটি অনেকগুলি কারণের উপর ভিত্তি করে তৈরি করা হয়, প্রাথমিকভাবে MinIO-তে সংরক্ষিত ডেটার পরিমাণ এবং অন্যান্য ক্লাউড-নেটিভ সফ্টওয়্যার, কর্মক্ষমতা এবং নিরাপত্তার সাথে একীকরণের প্রয়োজনীয়তা।


আমাদের অনেক গ্রাহক খালি ধাতুতে MinIO চালান, যখন বেশিরভাগই Kubernetes-এ চালান। Kubernetes দ্বারা সাজানো একটি কন্টেইনারাইজড আর্কিটেকচারে MinIO-এর একাধিক উদাহরণ চালানো অত্যন্ত দক্ষ। MinIO গ্রাহকরা প্রতিটি অঞ্চলে পৃথক Kubernetes ক্লাস্টার চলমান এবং সর্বাধিক স্থিতিস্থাপকতা এবং স্কেলেবিলিটির জন্য শেয়ার করা-কিছুই না করার অপারেশনাল লক্ষ্য সহ, বিঘ্ন ছাড়াই নতুন অঞ্চলগুলি তৈরি করে এবং পরিষেবাগুলি আপডেট করে৷


গ্রাহকরা বিভিন্ন কারণে MinIO-তে স্যুইচ করেন, যার মধ্যে রয়েছে:


  • S3 সামঞ্জস্যপূর্ণ API
  • মাল্টি-ক্লাউড ক্লাউড অ্যাগনস্টিক স্থাপনা
  • S3 শৈলী IAM শৈলী ACL ব্যবস্থাপনা
  • ইরেজার কোডিং ব্যবহার করে বিতরণ করা এবং ত্রুটি সহনশীল স্টোরেজ
  • একাধিক ক্লাস্টার জুড়ে অবজেক্টের টিয়ারিং এবং সংস্করণ করা
  • বালতি এবং সাইট-টু-সাইট প্রতিলিপি
  • ব্যাচ ফ্রেমওয়ার্ক মাধ্যমে ব্যাচ প্রতিলিপি
  • সার্ভার সাইড অবজেক্ট এবং ক্লায়েন্ট ডেটা এনক্রিপশন
  • ডেটার ট্রান্সপোর্ট লেয়ার নেটওয়ার্ক এনক্রিপশন


এই বিভিন্ন কারণ এবং পরিবেশের কারণে যেখানে MinIO ব্যবহার এবং ইনস্টল করা যেতে পারে, এটা অনুমান করা বাস্তবসম্মত যে এমন অনেকগুলি ডেটা উত্স রয়েছে যেখানে ডেটা ইতিমধ্যেই সংরক্ষিত আছে যে আপনি MinIO-তে যেতে চান।


এই পোস্টে, আসুন S3, স্থানীয় ফাইলসিস্টেম, NFS, Azure, GCP, Hitachi কন্টেন্ট প্ল্যাটফর্ম, Ceph এবং অন্যান্য এবং MinIO ক্লাস্টারে ডেটা পেতে উপলব্ধ কিছু টুল পর্যালোচনা করি যেখানে এটি ক্লাউড-নেটিভ এআই-এর সংস্পর্শে আসতে পারে। /এমএল এবং বিশ্লেষণ প্যাকেজ।

MinIO ক্লায়েন্ট

শুরু করার জন্য, আমরা এই পোস্টের সময় এই কয়েকটি বিকল্পের জন্য MinIO ক্লায়েন্ট (mc) ব্যবহার করব। অনুগ্রহ করে এটি ইনস্টল করতে ভুলবেন না এবং আপনার চলমান MinIO সার্ভারে উপনাম সেট করুন।


 mc alias set destminio https://myminio.example.net minioadminuser minioadminpassword


আমরা বিভিন্ন পদ্ধতির মধ্য দিয়ে যাওয়ার সাথে সাথে আমরা আরও কিছু "উৎস" উপনাম যুক্ত করব।

ফাইলসিস্টেম

MinIO-তে ডেটা স্থানান্তরের জন্য বেশিরভাগ ক্ষেত্রেই মাউন্ট করা ফাইল-সিস্টেম বা NFS ভলিউম দিয়ে শুরু হয়। এই সাধারণ কনফিগারেশনে, আপনি উৎস থেকে গন্তব্যে ডেটা সিঙ্ক করতে mc মিরর ব্যবহার করতে পারেন। ডেটা সিঙ্ক্রোনাইজেশনের জন্য একটি সুইস আর্মি ছুরি হিসাবে mc mirror ভাবুন। আপনি যে উৎস থেকে বস্তুগুলি আনছেন তার সাথে ইন্টারঅ্যাক্ট করার সর্বোত্তম উপায় নির্ধারণ করার জন্য এটি ব্যবহারকারীর বোঝা সরিয়ে নেয়। এটি বেশ কয়েকটি উত্স সমর্থন করে এবং, আপনি যে উত্স থেকে টানছেন তার উপর ভিত্তি করে, সঠিক ফাংশনগুলি তাদের সক্ষম করতে ব্যবহৃত হয়।


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


 filesystem kbytes used avail capacity mounted on /dev/root 6474195 2649052 3825143 41% / /dev/stand 24097 5757 18340 24% /stand /proc 0 0 0 0% /proc /dev/fd 0 0 0 0% /dev/fd /dev/_tcp 0 0 0 0% /dev/_tcp /dev/dsk/c0b0t0d0s4 10241437 4888422 5353015 48% /home /dev/dsk/c0b0t1d0sc 17422492 12267268 5155224 71% /home2


ধরুন আপনার অবজেক্টগুলি /home/mydata এ রয়েছে, তারপরে আপনি অবজেক্টগুলিকে মিরর করতে নিম্নলিখিত কমান্ডটি চালাবেন (যদি mydata বালতিটি ইতিমধ্যেই বিদ্যমান না থাকে তবে আপনাকে প্রথমে এটি তৈরি করতে হবে):


 mc mirror /home/mydata destminio/mydata


এই কমান্ডটি নিশ্চিত করবে যে বস্তুগুলি যেগুলি আর উত্স অবস্থানে নেই সেগুলি গন্তব্য থেকে সরানো হয়েছে বা যখন নতুন বস্তুগুলি উত্সে যোগ করা হবে তখন সেগুলি গন্তব্যে অনুলিপি করা হবে। কিন্তু আপনি যদি উৎসে সংশোধিত বিদ্যমান বস্তুগুলিকে ওভাররাইট করতে চান তবে --overwrite পতাকাটি পাস করুন।

এনএফএস

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


NFS ভলিউম মাউন্ট করার জন্য প্রয়োজনীয় প্যাকেজ ইনস্টল করুন

 apt install nfs-common


/etc/exports/home ডিরেক্টরি যোগ করতে ভুলবেন না


 /home client_ip(rw,sync,no_root_squash,no_subtree_check)


দ্রষ্টব্য: আপনার NFS সার্ভার পুনরায় চালু করতে ভুলবেন না, উদাহরণস্বরূপ উবুন্টু সার্ভারে

 systemctl restart nfs-kernel-server


NFS মাউন্ট মাউন্ট করার জন্য একটি ডিরেক্টরি তৈরি করুন

 mkdir -p /nfs/home


NFS ভলিউম মাউন্ট করুন

 mount <nfs_host>:/home /nfs/home


NFS থেকে MinIO-তে ডেটা কপি করুন

 mc mirror /nfs/home destminio/nfsdata


আপনি সেখানে যান, এখন আপনি আপনার বড় বস্তুগুলিকে NFS থেকে MinIO-তে স্থানান্তর করতে পারেন।

S3

আমরা আগেই উল্লেখ করেছি, mc mirror হল ডেটা সিঙ্ক্রোনাইজেশনের একটি সুইস আর্মি ছুরি। ফাইলসিস্টেম ছাড়াও, এটি S3 বা S3 API সামঞ্জস্যপূর্ণ স্টোর থেকে অবজেক্ট কপি করে এবং MinIO-তে মিরর করে। এর একটি জনপ্রিয় ব্যবহারের ক্ষেত্রে একটি Amazon S3 বালতি মিরর করা।


আপনার অ্যাকাউন্টে একটি AWS S3 বাকেট তৈরি করতে এই পদক্ষেপগুলি অনুসরণ করুন৷ আপনার যদি ইতিমধ্যে ডেটা সহ একটি বিদ্যমান অ্যাকাউন্ট থাকে তবে আমরা এটিও ব্যবহার করতে পারি।


একবার একটি বালতি তৈরি হয়ে গেলে বা একটি বিদ্যমান বালতিতে ডেটা যোগ করা হলে, অ্যাক্সেস কী এবং গোপন কী সহ একটি নতুন IAM নীতি তৈরি করুন যা শুধুমাত্র আমাদের বালতিতে অ্যাক্সেসের অনুমতি দেয়। পরবর্তী ধাপের জন্য উত্পন্ন শংসাপত্র সংরক্ষণ করুন.


MinIO ক্লায়েন্ট ব্যবহার করে আমরা যেকোনো S3 সামঞ্জস্যপূর্ণ স্টোরেজের সাথে কাজ করতে পারি। এর পরে আসুন আমরা ডাউনলোড করা শংসাপত্রের সাথে আমাদের তৈরি করা S3 বালতি নাম ব্যবহার করে একটি উপনাম যোগ করি


 mc alias set s3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 --api S3v4


S3 থেকে MinIO-তে ডেটা কপি করতে mc মিরর ব্যবহার করুন

 mc mirror s3/mybucket destminio/mydata


ডেটার পরিমাণ, নেটওয়ার্কের গতি এবং বালতি ডেটা যে অঞ্চলে সংরক্ষণ করা হয় সেখান থেকে শারীরিক দূরত্বের উপর নির্ভর করে, সমস্ত ডেটা মিরর করতে আপনার কয়েক মিনিট বা তার বেশি সময় লাগতে পারে। mc সমস্ত অবজেক্ট কপি করা হয়ে গেলে আপনি একটি বার্তা দেখতে পাবেন।

এইচডিএফএস

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


নিম্নলিখিত বিষয়বস্তু সহ core-site.xml নামে একটি ফাইল তৈরি করুন


 <configuration> <property> <name>fs.s3a.path.style.access</name> <value>true</value> </property> <property> <name>fs.s3a.endpoint</name> <value>https://minio:9000</value> </property> <property> <name>fs.s3a.access.key</name> <value>minio-sample</value> </property> <property> <name>fs.s3a.secret.key</name> <value>minio-sample123</value> </property> </configuration>


নিম্নলিখিত পরিবেশ ভেরিয়েবল সেট করুন


 export HDFS_SOURCE_PATH=hdfs://namenode:8080/user/minio/testdir export S3_DEST_PATH=s3a://mybucket/testdir


নিচের ফাইলটি ডাউনলোড করুন, chmod +x এবং রান করুন


 curl -LSs -o https://github.com/minio/hdfs-to-minio/blob/master/hdfs-to-minio.sh chmod +x hdfs-to-minio.sh ./hdfs-to-minio.sh


আপনি যদি বেশ কয়েক বছর ধরে Hadoop-এ ডেটা সঞ্চয় করে থাকেন, তাহলে এই প্রক্রিয়ায় কয়েক ঘণ্টা সময় লাগতে পারে। যদি এটি একটি প্রোডাকশন ক্লাস্টারে থাকে, তাহলে আমরা ডেটা মিরর করার সময় আপনার Hadoop ক্লাস্টারে কর্মক্ষমতা হ্রাসের প্রভাব কমাতে রক্ষণাবেক্ষণ উইন্ডোর সময় অফ আওয়ারে ডেটা স্থানান্তর করার পরামর্শ দিই।


HDFS থেকে MinIO-তে স্থানান্তরিত করার বিষয়ে আরও বিশদ বিবরণ এই GitHub রেপোতে পাওয়া যায়, এবং আমরা একটি ব্লগ পোস্টও পেয়েছি, HDFS থেকে অবজেক্ট স্টোরেজে স্থানান্তর করা

এইচসিপি

আমরা আগে Hitachi কন্টেন্ট প্ল্যাটফর্মে একটি আশ্চর্যজনক ব্লগ পোস্ট লিখেছিলাম এবং কীভাবে আপনার ডেটা একটি MinIO ক্লাস্টারে স্থানান্তর করতে হয়। আমি সম্পূর্ণ বিশদ বিবরণের জন্য ব্লগ পোস্ট পড়ার সুপারিশ করব তবে ক্রাক্সটি নিম্নরূপ।


একবার আপনার প্রয়োজনীয় HCP ক্লাস্টার এবং ইনপুট ফাইল কনফিগার হয়ে গেলে, মাইগ্রেশন টুল ডাউনলোড করুন এবং মাইগ্রেশন প্রক্রিয়া শুরু করতে নিম্নলিখিত কমান্ডটি চালান


 $ hcp-to-minio migrate --namespace-url https://finance.europe.hcp.example.com --auth-token "HCP bXl1c2Vy:3f3c6784e97531774380db177774ac8d" --host-header "s3testbucket.sandbox.hcp.example.com" --data-dir /mnt/data --bucket s3testbucket --input-file /tmp/data/to-migrate.txt

সেফ

শেষ কিন্তু অন্তত নয়, আমরা শেষ পর্যন্ত হাতিটিকে ঘরে রেখেছি। যদিও বার্ধক্য, Ceph ডেটার জন্য একটি জনপ্রিয় স্টোর এবং এটির একটি S3 সামঞ্জস্যপূর্ণ API রয়েছে। এটি অন্যান্য Kubernetes প্রকল্প দ্বারা অবজেক্ট স্টোরেজের জন্য ব্যাকএন্ড হিসাবে ব্যবহৃত হয়, যেমন রুক। Ceph, তবে, সেট আপ এবং চালানোর জন্য একটি অদম্য বেহেমথ। তাই এটা স্বাভাবিক যে লোকেরা তাদের ডেটা সরল, বজায় রাখা সহজ এবং আরও বেশি কর্মক্ষমতা সহ কিছুতে সরাতে চাইবে।


Ceph থেকে ডেটা অনুলিপি করার দুটি উপায় রয়েছে:


  • বালতি প্রতিলিপি: বস্তুটি তৈরি করে কিন্তু যদি বস্তুটি উৎস থেকে মুছে ফেলা হয় তবে এটি গন্তব্যে মুছে যাবে না। https://min.io/docs/minio/linux/administration/bucket-replication.html

  • Mc মিরর: বস্তু এবং সংস্করণগুলিকে সিঙ্ক্রোনাইজ করে, এটি এমন অবজেক্টগুলিও মুছে ফেলবে যেগুলির অস্তিত্ব নেই https://min.io/docs/minio/linux/reference/minio-mc/mc-mirror.html


S3 এর অনুরূপ, যেহেতু Ceph এর S3 সামঞ্জস্যপূর্ণ API রয়েছে, আপনি MinIO ক্লায়েন্টে একটি উপনাম যোগ করতে পারেন


 mc alias set ceph http://ceph_host:port cephuser cephpass


তারপরে আপনি আপনার MinIO ক্লাস্টারে ডেটা অনুলিপি করতে mc mirror ব্যবহার করতে পারেন


 mc mirror ceph/mydata destminio/mydata


আমরা পরামর্শ দিচ্ছি যে আপনি বস্তুর জন্য ক্রমাগত নিরীক্ষণ করতে এবং MinIO-তে সিঙ্ক করতে --watch পতাকা দিয়ে mc mirror কমান্ড চালান।

আপনার ডেটা আজই MinIO-তে স্থানান্তর করুন!

MinIO-তে আপনার ডেটা স্থানান্তর করা কতটা সহজ তা দেখানোর জন্য কয়েকটি উদাহরণ রয়েছে। আপনি NFS-এর মতো পুরানো লিগ্যাসি প্রোটোকল ব্যবহার করছেন বা S3-এর মতো সর্বশেষ এবং সর্বশ্রেষ্ঠ ব্যবহার করছেন কিনা তাতে কিছু যায় আসে না, MinIO আপনাকে সমর্থন করার জন্য এখানে রয়েছে।


এই পোস্টে আমরা ফাইলসিস্টেম এবং অন্যান্য ডেটা স্টোর যেমন NFS, ফাইলসিস্টেম, GlusterFS, HDFS, HCP, এবং সর্বশেষ কিন্তু অন্তত Ceph থেকে কিভাবে স্থানান্তর করতে হয় সে সম্পর্কে বিস্তারিতভাবে জেনেছি। এটির বিরুদ্ধে চলমান প্রযুক্তির স্ট্যাক নির্বিশেষে, ব্যাকএন্ড MinIO একটি পারফরম্যান্ট, টেকসই, সুরক্ষিত এবং মাপযোগ্য কিন্তু সহজ সফ্টওয়্যার-সংজ্ঞায়িত অবজেক্ট স্টোরেজ সমাধান প্রদান করে।


যদি আপনার কোন প্রশ্ন থাকে তবে নির্দ্বিধায় স্ল্যাকে আমাদের সাথে যোগাযোগ করুন!


এছাড়াও এখানে প্রকাশিত.