Blog Details
MD. SHARIFUL ISLAM
03 Oct 2024
15 min read
আজকাল আমাদের অনেক সময় বড় ফাইল নিয়ে কাজ করতে হয় এবং বিভিন্ন ধরনের ডেটা সংগ্রহ করতে হয়। যেমন, কোনো জনপ্রিয় ওয়েবসাইটের সার্ভার লগগুলো প্রতিদিন কয়েকশো গিগাবাইট হতে পারে। গিগাবাইট বা টেরাবাইটের মতো বিশাল আকারের ফাইল নিয়ে কাজ করার সময় একটি মেশিনের স্টোরেজ বা প্রসেসিং ক্ষমতা অনেক সময় যথেষ্ট হয় না। একটি মেশিনে হয়তো যথেষ্ট হার্ডডিস্ক স্পেস থাকে না, আবার র্যামেও পর্যাপ্ত জায়গা নাও থাকতে পারে, যার ফলে পুরো ফাইলটি লোড করে প্রসেস করা সম্ভব হয় না। “ডিস্ট্রিবিউটেড ফাইল সিস্টেম” এই সমস্যার সমাধান দেয়, যেখানে একটি ফাইলকে ছোট ছোট টুকরো করে বিভিন্ন মেশিনে স্টোর করে রাখা হয়।
আজকে আমরা ফাইল সিস্টেম সম্পর্কে জানব এবং একটি ডিস্ট্রিবিউটেড ফাইল সিস্টেমের আর্কিটেকচার নিয়ে আলোচনা করব। এই লেখাটি পড়ার পরে ডিস্ট্রিবিউটেড সিস্টেমের বিভিন্ন গুরুত্বপূর্ণ ধারণা, যেমন ডেটা রেপ্লিকেশন, লিডার-ফলোয়ার আর্কিটেকচার ইত্যাদি সম্পর্কে জ্ঞান লাভ করতে পারবে।
যদি তুমি কখনো নিজের কম্পিউটারে লিনাক্স বা উইন্ডোজ সেটআপ করে থাকো বা হার্ডডিস্ক পার্টিশন বা ফরম্যাট করে থাকো, তাহলে নিশ্চয়ই FAT32, NTFS, EXT ইত্যাদি ফাইল সিস্টেমের নাম শুনেছো। এগুলো হলো বিভিন্ন ধরনের ফাইল সিস্টেম। ফাইল সিস্টেমের কাজ হলো, তোমার কম্পিউটারের ফাইলগুলো কীভাবে হার্ডডিস্কে সাজানো থাকবে, কোন মেমরি ব্লকে কোন ডেটা রাখা হবে এবং পুরানো ডেটা কীভাবে অ্যাক্সেস করা হবে, তা নিয়ন্ত্রণ করা।
তুমি বিষয়টিকে তুলনা করতে পারো নিজের ঘরের ফাইলপত্র সাজানোর সাথে। যেমন, কাগজপত্র যাতে সহজে খুঁজে পাওয়া যায়, সেজন্য তুমি বিভিন্ন ড্রয়ারে বিভিন্ন ধরনের কাগজপত্র গুছিয়ে রাখো। এটাও একধরনের ফাইল সিস্টেম।
যখন তুমি কোনো হার্ডডিস্ক ফরম্যাট করে সব ডেটা মুছে ফেলো, তখন সেটির ফাইল সিস্টেমও মুছে যায়। ফরম্যাট করার সময় ফাইল সিস্টেম বেছে নেওয়ার অপশন থাকে। ফরম্যাট করার পর নতুন একটি ফাইল সিস্টেম ইনিশিয়ালাইজ হয়, যাতে তুমি সেখানে নতুন ডেটা সেভ করে রাখতে পারো।
FAT32, NTFS এগুলো হলো সাধারণ ডিস্ক ফাইল সিস্টেম, যা একটি হার্ডডিস্ক নিয়ে কাজ করে। কিন্তু যদি তুমি একাধিক কম্পিউটারে একটি ফাইল ভাগ করে রাখতে চাও, তাহলে ডিস্ট্রিবিউটেড ফাইল সিস্টেম দরকার হবে।
এখন আমরা একটি ডিস্ট্রিবিউটেড ফাইল সিস্টেমের আর্কিটেকচার নিয়ে আলোচনা করব।
তুমি যদি একজন অভিজ্ঞ ইঞ্জিনিয়ার হও, তাহলে বাকিটা পড়ার আগে নিজের মতো করে চিন্তা করতে পারো কীভাবে একটি ডিস্ট্রিবিউটেড ফাইল সিস্টেম ডিজাইন করা যেতে পারে। তোমাকে চিন্তা করতে হবে কীভাবে একটি ফাইলকে টুকরো করা হবে, কোন মেশিনে কোন ডেটা যাবে, একটি মেশিন নষ্ট হয়ে গেলে কী হবে ইত্যাদি।
ডিস্ট্রিবিউটেড ফাইল সিস্টেমে বিভিন্ন মেশিনকে একসাথে যুক্ত করা হয়, যা সাধারণত একই লোকাল নেটওয়ার্কের মধ্যে থাকে। এখানে ফাইল এডিট করা যায় না, বরং বড় ফাইলগুলো সংরক্ষণ করা হয়, যা পরে অ্যানালাইসিসের জন্য ব্যবহৃত হয়।
প্রথমেই আমাদের কিছু মেশিন দরকার হবে, যেগুলোতে ডেটা সংরক্ষণ করা হবে। এই মেশিনগুলোকে বলা হয় ডেটা নোড।
প্রতিটি ডেটা নোড হলো একটি আলাদা মেশিন, যেখানে অপারেটিং সিস্টেম (সাধারণত লিনাক্স), হার্ডডিস্ক এবং র্যাম থাকে। এই মেশিনগুলোতে ডেটা সংরক্ষণ করা হয়। কিন্তু সমস্যা হলো, কে ঠিক করবে কোন ডেটা কোন মেশিনে থাকবে? এই কাজটি করার জন্য একটি লিডার নোড বা নেম নোড দরকার, যা ডেটা নোডগুলোর মধ্যে ডেটা ভাগ করে রাখবে এবং ডেটার অবস্থান সম্পর্কে নির্দেশনা দেবে।
লিডার নোডের মূল কাজ হলো মেটাডেটা সংরক্ষণ করা। মেটাডেটা হলো সেই তথ্য, যা অন্য ডেটা সম্পর্কিত তথ্য প্রদান করে। উদাহরণস্বরূপ, কোন ফাইল কোথায় আছে, কতটি রেপ্লিকা আছে, এসব তথ্য মেটাডেটা হিসেবে সংরক্ষণ করা হয়।
ফাইল আপলোড করার জন্য, ক্লায়েন্টকে একটি লাইব্রেরি ব্যবহার করতে হয়, যা নেম নোডের সাথে যোগাযোগ করে ফাইল সংরক্ষণ বা পড়ার কাজ সম্পন্ন করে। যখন একটি ফাইল পড়া হয়, তখন ক্লায়েন্ট লাইব্রেরি নেম নোডের কাছ থেকে জানতে পারে কোন ডেটা নোডে সেই ফাইলের ডেটা রয়েছে এবং এরপর সেই ডেটা নোড থেকে ফাইলটি রিড করা হয়।
ফাইল রাইট করার সময়ও একই প্রক্রিয়া অনুসরণ করা হয়। নেম নোড নির্দেশনা দেয়, কোন কোন ডেটা নোডে ফাইলের ব্লকগুলো আপলোড করতে হবে এবং ডেটা নোডে সেগুলো স্টোর করা হয়।
ডেটা রেপ্লিকেশন হলো ডিস্ট্রিবিউটেড ফাইল সিস্টেমের আরেকটি গুরুত্বপূর্ণ বৈশিষ্ট্য। প্রতিটি ডেটার একাধিক কপি তৈরি করে রাখা হয় বিভিন্ন ডেটা নোডে, যাতে কোনো একটি ডেটা নোড নষ্ট হলেও ডেটা হারিয়ে না যায়। এটি High Availability নিশ্চিত করে।
একটি ডিস্ট্রিবিউটেড ফাইল সিস্টেমে Rack Awareness নামক একটি অপটিমাইজেশন থাকে, যেখানে ডেটার রেপ্লিকাগুলো বিভিন্ন র্যাকে রাখা হয়, যাতে একটি র্যাক নষ্ট হলেও ডেটার কপি অন্য র্যাকে থেকে যায়।
লিডার নোড ডাউন হলে, সেকেন্ডারি লিডার নোড লিডারের দায়িত্ব নেয় এবং লিডার পুনরুদ্ধার হলে প্রাইমারি ও সেকেন্ডারি লিডারের ভূমিকা পরিবর্তিত হয়।
তবে সব সিস্টেমেই কিছু ফেইলিওর সম্ভাবনা থাকে, এবং ১০০% ফেইলসেফ কোনো সিস্টেম নেই।
এটা কোনো কাল্পনিক সিস্টেম নয়। এই পুরো আর্কিটেকচারটি হলো Apache Hadoop Distributed File System (HDFS)। HDFS বড় ডেটা স্টোরেজ ও প্রসেসিংয়ের জন্য বিখ্যাত।
HDFS সিস্টেমে ডেটা প্রক্রিয়াকরণের জন্য MapReduce টেকনিক ব্যবহার করা হয়।
Don’t worry, we don’t spam!