HDFS থেকে MinIO-এর মতো আধুনিক বস্তু সঞ্চয়স্থানে স্থানান্তরিত করতে আমাদের কাছে আসা গ্রাহকদের সংখ্যা দেখে আমরা এখনও বিস্মিত। আমরা এতক্ষণে ভেবেছিলাম যে সবাই রূপান্তর করেছে, কিন্তু প্রতি সপ্তাহে, আমরা একটি প্রধান, উচ্চ প্রযুক্তিগত সংস্থার সাথে কথা বলি যারা রূপান্তর করার সিদ্ধান্ত নিয়েছে।
প্রায়শই, এই আলোচনাগুলিতে, তাদের পরিকাঠামোর উপাদানগুলি রয়েছে যা তারা তাদের অভিবাসনের পরে বজায় রাখতে চায়। HDFS ইকোসিস্টেম থেকে বেরিয়ে আসা ফ্রেমওয়ার্ক এবং সফ্টওয়্যার রয়েছে যেগুলিতে প্রচুর বিকাশকারী কেনা-ইন রয়েছে এবং এখনও আধুনিক ডেটা স্ট্যাকের মধ্যে একটি স্থান রয়েছে। প্রকৃতপক্ষে, আমরা প্রায়ই বলেছি যে HDFS ইকোসিস্টেম থেকে অনেক ভালো কিছু বেরিয়ে এসেছে। মৌলিক সমস্যা হল ঘনিষ্ঠভাবে সংযুক্ত স্টোরেজ এবং গণনা করা অগত্যা বিগ ডেটা যুগ থেকে আসা সরঞ্জাম এবং পরিষেবাগুলির সাথে নয়।
এই ব্লগ পোস্টটি আপনি কীভাবে সেই স্থানান্তর করতে পারেন তার উপর ফোকাস করবে যেগুলির মূল্য আছে এমন সরঞ্জাম এবং পরিষেবাগুলিকে ছিন্ন না করে এবং প্রতিস্থাপন না করে৷ বাস্তবতা হল যে আপনি যদি আপনার অবকাঠামো আধুনিকীকরণ না করেন, তাহলে আপনি AI/ML-এ আপনার প্রতিষ্ঠানের প্রয়োজনীয় অগ্রগতি করতে পারবেন না, কিন্তু সেখানে যাওয়ার জন্য আপনাকে সবকিছু ফেলে দিতে হবে না।
আমরা ইতিমধ্যে কিছু মাধ্যমে গেছে
কম্পিউট নোড: Kubernetes দক্ষতার সাথে কম্পিউট নোডগুলিতে স্টেটলেস Apache Spark এবং Apache Hive কন্টেনারগুলি পরিচালনা করে, সর্বোত্তম সম্পদের ব্যবহার এবং গতিশীল স্কেলিং নিশ্চিত করে।
স্টোরেজ লেয়ার: MinIO
অ্যাক্সেস লেয়ার: MinIO অবজেক্ট স্টোরেজের সমস্ত অ্যাক্সেস S3 API এর মাধ্যমে একীভূত করা হয়, সঞ্চিত ডেটার সাথে ইন্টারঅ্যাক্ট করার জন্য একটি বিরামহীন ইন্টারফেস প্রদান করে।
নিরাপত্তা স্তর: ডেটা নিরাপত্তা সর্বাগ্রে। MinIO অননুমোদিত অ্যাক্সেসের বিরুদ্ধে শক্তিশালী সুরক্ষা নিশ্চিত করে, প্রতি-অবজেক্ট কী ব্যবহার করে সমস্ত ডেটা এনক্রিপ্ট করে।
আইডেন্টিটি ম্যানেজমেন্ট: MinIO এন্টারপ্রাইজ সম্পূর্ণরূপে পরিচয় প্রদানকারীর সাথে একত্রিত হয় যেমন WSO2, Keycloak, Okta, Ping আইডেন্টিটি অ্যাপ্লিকেশন বা ব্যবহারকারীদের প্রমাণীকরণের অনুমতি দিতে।
Hadoop-এর জন্য একটি সম্পূর্ণ আধুনিকীকৃত প্রতিস্থাপন যা আপনার সংস্থাকে Hive, YARN এবং অন্য যেকোন Hadoop ইকোসিস্টেম ডেটা পণ্য রাখতে দেয় যা বস্তুর স্টোরেজের সাথে একীভূত হতে পারে যা আধুনিক ডেটা স্ট্যাকের প্রায় সবকিছুই।
Hadoop থেকে দূরে স্থানান্তর করতে চাওয়া অ্যাপ্লিকেশনগুলির জন্য S3a একটি অপরিহার্য শেষ পয়েন্ট, Hadoop ইকোসিস্টেমের মধ্যে বিস্তৃত অ্যাপ্লিকেশনগুলির সাথে সামঞ্জস্যপূর্ণতা প্রদান করে। 2006 সাল থেকে, S3-সামঞ্জস্যপূর্ণ অবজেক্ট-স্টোরেজ ব্যাকএন্ডগুলিকে একটি ডিফল্ট বৈশিষ্ট্য হিসাবে Hadoop ইকোসিস্টেমের মধ্যে অসংখ্য ডেটা প্ল্যাটফর্মে নির্বিঘ্নে একত্রিত করা হয়েছে। এই ইন্টিগ্রেশনটি উদীয়মান প্রযুক্তিগুলিতে একটি S3 ক্লায়েন্ট বাস্তবায়নের অন্তর্ভুক্তির সন্ধান করে।
Hadoop-সম্পর্কিত সমস্ত প্ল্যাটফর্ম জুড়ে, hadoop-aws
মডিউল এবং aws-java-sdk-bundle
গ্রহণ করা একটি আদর্শ অনুশীলন, যা S3 API-এর জন্য শক্তিশালী সমর্থন নিশ্চিত করে। এই প্রমিত পদ্ধতি HDFS এবং S3 স্টোরেজ ব্যাকএন্ড থেকে অ্যাপ্লিকেশনগুলির মসৃণ রূপান্তরকে সহজতর করে। কেবলমাত্র উপযুক্ত প্রোটোকল নির্দিষ্ট করে, বিকাশকারীরা অনায়াসে হাডুপ থেকে আধুনিক বস্তু সঞ্চয়স্থানে অ্যাপ্লিকেশনগুলি স্যুইচ করতে পারে। S3-এর জন্য প্রোটোকল স্কিম s3a:// দ্বারা নির্দেশিত হয়, যখন HDFS-এর জন্য, এটি hdfs:// হিসাবে চিহ্নিত করা হয়।
আধুনিক অবজেক্ট স্টোরেজে Hadoop থেকে স্থানান্তরিত করার সুবিধাগুলি সম্পর্কে দৈর্ঘ্যে কথা বলা সম্ভব। আপনি যদি এটি পড়ছেন, আপনি ইতিমধ্যেই অনেকাংশে সচেতন যে AI-তে Hadoop অগ্রগতির মতো উত্তরাধিকার প্ল্যাটফর্মগুলি থেকে মাইগ্রেশন ছাড়া এবং অন্যান্য আধুনিক ডেটা পণ্যগুলি সম্ভবত টেবিলের বাইরে থাকবে। কারণ কর্মক্ষমতা এবং স্কেল নিচে distills.
কোন সন্দেহ নেই যে আধুনিক কাজের চাপের জন্য অসামান্য পারফরম্যান্সের প্রয়োজন হয় প্রক্রিয়াজাত করা ডেটার পরিমাণের সাথে প্রতিযোগিতা করার জন্য এবং এখন প্রয়োজনীয় কাজগুলির জটিলতার সাথে। যখন পারফরম্যান্স শুধুমাত্র ভ্যানিটি বেঞ্চমার্কিং সম্পর্কে নয়, কিন্তু একটি কঠিন প্রয়োজন, তখন Hadoop প্রতিস্থাপনের জন্য প্রতিযোগীদের ক্ষেত্র
মাইগ্রেশনকে এগিয়ে নিয়ে যাওয়া অন্য উপাদান হল ক্লাউড-নেটিভ স্কেল। যখন ক্লাউডের ধারণাটি একটি শারীরিক অবস্থানের কম এবং একটি বেশি
এই ধারণার অংশ এবং পার্সেল হল অর্থনৈতিক সুবিধা যা বিক্রেতা লক-ইন থেকে মুক্তি থেকে আসে, যা একটি সংস্থাকে নির্দিষ্ট কাজের চাপের জন্য সেরা-ইন-ক্লাস বিকল্পগুলি বাছাই করতে এবং বেছে নিতে দেয়। উল্লেখ না, এটি রক্ষা করার জন্য তিনটি পৃথক কপি ডেটা বজায় রাখা থেকে মুক্তি, সঙ্গে অতীতের একটি জিনিস
আমাদের আর্কিটেকচারের সুনির্দিষ্ট বিষয়ে ডাইভিং করার আগে, আপনাকে কয়েকটি উপাদান তৈরি এবং চলমান করতে হবে। Hadoop থেকে মাইগ্রেট করার জন্য, আপনাকে অবশ্যই এটি শুরু করতে ইনস্টল করতে হবে। আপনি যদি এই অভিজ্ঞতার অনুকরণ করতে চান, আপনি এখানে Hadoop-এর Hortonworks Distribution সেট আপ করে এই টিউটোরিয়ালটি শুরু করতে পারেন।
অন্যথায়, আপনি নিম্নলিখিত ইনস্টলেশন পদক্ষেপগুলি দিয়ে শুরু করতে পারেন:
অম্বারি সেট আপ করুন: পরবর্তী,
অ্যাপাচি স্পার্ক ইনস্টল করুন: বড় আকারের ডেটা প্রক্রিয়াকরণের জন্য স্পার্ক অপরিহার্য। অনুসরণ করা
MinIO ইনস্টল করুন : আপনার পরিবেশের উপর নির্ভর করে, আপনি দুটি ইনস্টলেশন পদ্ধতির মধ্যে বেছে নিতে পারেন:
সফলভাবে এই উপাদানগুলি ইনস্টল করার পরে, আপনি HDFS এর পরিবর্তে MinIO ব্যবহার করার জন্য Spark এবং Hive কনফিগার করতে পারেন। Ambari UI এ নেভিগেট করুন http://<ambari-server>:8080/ এবং ডিফল্ট শংসাপত্র ব্যবহার করে লগ ইন করুন: username: admin, password: admin
,
Ambari-এ, পরিষেবাগুলিতে নেভিগেট করুন, তারপর HDFS, তারপরে নীচের স্ক্রিনশটের মতো কনফিগার প্যানেলে যান৷ এই বিভাগে, আপনি HDFS এর পরিবর্তে MinIO এর সাথে S3a ব্যবহার করার জন্য Ambari কনফিগার করছেন।
নিচে স্ক্রোল করুন এবং Custom core-site
নেভিগেট করুন। এখানেই আপনি S3a কনফিগার করবেন।
sudo pip install yq alias kv-pairify='yq ".configuration[]" | jq ".[]" | jq -r ".name + \"=\" + .value"'
এখান থেকে, আপনার কনফিগারেশন আপনার অবকাঠামোর উপর নির্ভর করবে। কিন্তু, নীচেরটি 12টি নোড এবং 1.2TiB মেমরিতে চলমান MinIO সহ S3a কনফিগার করার জন্য core-site.xml
এর একটি উপায় উপস্থাপন করতে পারে।
cat ${HADOOP_CONF_DIR}/core-site.xml | kv-pairify | grep "mapred" mapred.maxthreads.generate.mapoutput=2 # Num threads to write map outputs mapred.maxthreads.partition.closer=0 # Asynchronous map flushers mapreduce.fileoutputcommitter.algorithm.version=2 # Use the latest committer version mapreduce.job.reduce.slowstart.completedmaps=0.99 # 99% map, then reduce mapreduce.reduce.shuffle.input.buffer.percent=0.9 # Min % buffer in RAM mapreduce.reduce.shuffle.merge.percent=0.9 # Minimum % merges in RAM mapreduce.reduce.speculative=false # Disable speculation for reducing mapreduce.task.io.sort.factor=999 # Threshold before writing to drive mapreduce.task.sort.spill.percent=0.9 # Minimum % before spilling to drive
এই মাইগ্রেশন প্যাটার্নের ডকুমেন্টেশন চেক করে অন্বেষণ করা যেতে পারে এমন বেশ কয়েকটি অপ্টিমাইজেশান রয়েছে
আপনি কনফিগারেশনের সাথে সন্তুষ্ট হলে সমস্ত পুনরায় চালু করুন।
এছাড়াও আপনাকে Spark2 কনফিগারেশন প্যানেলে নেভিগেট করতে হবে।
Custom spark-defaults
নীচে স্ক্রোল করুন এবং MinIO এর সাথে কনফিগার করতে নিম্নলিখিত বৈশিষ্ট্য যুক্ত করুন:
spark.hadoop.fs.s3a.access.key minio spark.hadoop.fs.s3a.secret.key minio123 spark.hadoop.fs.s3a.path.style.access true spark.hadoop.fs.s3a.block.size 512M spark.hadoop.fs.s3a.buffer.dir ${hadoop.tmp.dir}/s3a spark.hadoop.fs.s3a.committer.magic.enabled false spark.hadoop.fs.s3a.committer.name directory spark.hadoop.fs.s3a.committer.staging.abort.pending.uploads true spark.hadoop.fs.s3a.committer.staging.conflict-mode append spark.hadoop.fs.s3a.committer.staging.tmp.path /tmp/staging spark.hadoop.fs.s3a.committer.staging.unique-filenames true spark.hadoop.fs.s3a.committer.threads 2048 # number of threads writing to MinIO spark.hadoop.fs.s3a.connection.establish.timeout 5000 spark.hadoop.fs.s3a.connection.maximum 8192 # maximum number of concurrent conns spark.hadoop.fs.s3a.connection.ssl.enabled false spark.hadoop.fs.s3a.connection.timeout 200000 spark.hadoop.fs.s3a.endpoint http://minio:9000 spark.hadoop.fs.s3a.fast.upload.active.blocks 2048 # number of parallel uploads spark.hadoop.fs.s3a.fast.upload.buffer disk # use disk as the buffer for uploads spark.hadoop.fs.s3a.fast.upload true # turn on fast upload mode spark.hadoop.fs.s3a.impl org.apache.hadoop.spark.hadoop.fs.s3a.S3AFileSystem spark.hadoop.fs.s3a.max.total.tasks 2048 # maximum number of parallel tasks spark.hadoop.fs.s3a.multipart.size 512M # size of each multipart chunk spark.hadoop.fs.s3a.multipart.threshold 512M # size before using multipart uploads spark.hadoop.fs.s3a.socket.recv.buffer 65536 # read socket buffer hint spark.hadoop.fs.s3a.socket.send.buffer 65536 # write socket buffer hint spark.hadoop.fs.s3a.threads.max 2048 # maximum number of threads for S3A
কনফিগার পরিবর্তনগুলি প্রয়োগ করার পরে সমস্ত পুনরায় চালু করুন।
কনফিগারেশন শেষ করতে Hive প্যানেলে নেভিগেট করুন।
Custom hive-site
নিচে স্ক্রোল করুন এবং নিম্নলিখিত সম্পত্তি যোগ করুন:
hive.blobstore.use.blobstore.as.scratchdir=true hive.exec.input.listing.max.threads=50 hive.load.dynamic.partitions.thread=25 hive.metastore.fshandler.threads=50 hive.mv.files.threads=40 mapreduce.input.fileinputformat.list-status.num-threads=50
আপনি আরও সূক্ষ্ম-টিউনিং কনফিগারেশন তথ্য পেতে পারেন
এটাই আপনি এখন আপনার ইন্টিগ্রেশন পরীক্ষা করতে পারেন।
এই ব্লগ পোস্টটি আপনার বিদ্যমান সিস্টেমগুলিকে সম্পূর্ণরূপে সংশোধন করার প্রয়োজন ছাড়াই Hadoop থেকে স্থানান্তরিত করার একটি আধুনিক পদ্ধতির রূপরেখা দিয়েছে৷ Apache Spark এবং Apache Hive পরিচালনার জন্য Kubernetes-এর ব্যবহার এবং রাষ্ট্রীয় বস্তু সঞ্চয়ের জন্য MinIO-কে একীভূত করার মাধ্যমে, সংস্থাগুলি একটি ভারসাম্যপূর্ণ স্থাপত্য অর্জন করতে পারে যা গতিশীল স্কেলিং এবং দক্ষ সম্পদের ব্যবহারকে সমর্থন করে। এই সেটআপটি আপনার ডেটা প্রসেসিং পরিবেশের সক্ষমতাগুলিকে কেবল ধরে রাখে না, আরও শক্তিশালী করে এবং ভবিষ্যত-প্রমাণ করে।
MinIO-এর সাথে, আপনি একটি স্টোরেজ সমাধান থেকে উপকৃত হবেন যা কমোডিটি হার্ডওয়্যারে উচ্চ কার্যক্ষমতা প্রদান করে, ইরেজার কোডিংয়ের মাধ্যমে খরচ কমায় (হাদুপের ডেটা রেপ্লিকেশনের অপ্রয়োজনীয়তা দূর করে), এবং বিক্রেতা লক-ইন এবং ক্যাসান্ড্রা-ভিত্তিক মেটাডেটা স্টোরের প্রয়োজনীয়তার মতো সীমাবদ্ধতাগুলিকে বাইপাস করে। এই সুবিধাগুলি তাদের বিদ্যমান ডেটা সিস্টেমের মূল উপাদানগুলিকে বাদ না দিয়ে উন্নত এআই/এমএল কাজের চাপের সুবিধা নিতে চাওয়া সংস্থাগুলির জন্য অত্যন্ত গুরুত্বপূর্ণ।
আপনার সংস্থার অনন্য চাহিদা মেটাতে আপনি কীভাবে এই মাইগ্রেশন কৌশলটি তৈরি করতে পারেন সে সম্পর্কে আরও বিশদ আলোচনা বা নির্দিষ্ট নির্দেশনার জন্য নির্দ্বিধায় যোগাযোগ করুন। [email protected] এ ইমেলের মাধ্যমে বা আমাদের সম্প্রদায়ের মাধ্যমে হোক