MapReduce কী?
MapReduce হলো একটি প্রোগ্রামিং মডেল এবং প্রক্রিয়া যা Hadoop ক্লাস্টারে ডিস্ট্রিবিউটেড ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়। এটি দুইটি প্রধান পর্যায়ে কাজ করে: Map এবং Reduce। এই মডেলটি ডেটাকে ছোট ছোট অংশে ভাগ করে এবং প্রতিটি অংশকে আলাদা আলাদা প্রসেস করে, পরে একত্রিত করে একটি চূড়ান্ত ফলাফল তৈরি করে।
MapReduce এর মূল উদ্দেশ্য হলো খুব বড় পরিমাণ ডেটাকে দ্রুত এবং দক্ষভাবে প্রক্রিয়া করা, যা সাধারণ ডেটাবেস সিস্টেম বা একক কম্পিউটারের পক্ষে সম্ভব নয়।
MapReduce এর দুটি প্রধান ধাপ
১. Map Phase
Map ধাপে, একটি বড় ডেটাসেট ছোট ছোট অংশে বিভক্ত হয় এবং প্রতিটি অংশ আলাদা আলাদা মেশিন বা নোডে প্রক্রিয়া করা হয়। এই ধাপে ইনপুট ডেটা নিয়ে বিভিন্ন ম্যানিপুলেশন করা হয় এবং আউটপুট হিসাবে একটি intermediate (অস্থায়ী) ফলাফল তৈরি হয়।
- Input Data: প্রথমে ডেটা HDFS (Hadoop Distributed File System) থেকে ম্যাপ প্রোগ্রামে পাঠানো হয়।
- Key-Value Pair: Map ফাংশন ডেটাকে "key-value pair" আকারে আউটপুট করে। উদাহরণস্বরূপ, একটি শব্দ গণনা করার কাজ হলে, প্রতিটি শব্দ একটি key হিসেবে এবং তার সংখ্যা value হিসেবে চিহ্নিত হবে।
উদাহরণ: ডেটা = ["apple", "banana", "apple"] Map Output = [("apple", 1), ("banana", 1), ("apple", 1)]
২. Shuffle and Sort Phase
Map ফেজের পরে, একটি গুরুত্বপূর্ণ ধাপ হলো "Shuffle" এবং "Sort"। এই ধাপে, Map-এর আউটপুট (key-value pairs) একটি কেন্দ্রীয় স্থানে গ্রুপ করা হয় এবং key অনুসারে সাজানো হয়। এটি নিশ্চিত করে যে, একই key এর সমস্ত ভ্যালু একত্রিত হয়ে পরবর্তী ধাপে যায়।
উদাহরণ: Map Output = [("apple", 1), ("banana", 1), ("apple", 1)] Shuffle and Sort Output = [("apple", [1, 1]), ("banana", [1])]
৩. Reduce Phase
Reduce ফেজে, Shuffle and Sort থেকে পাওয়া "key-value" পেয়ারগুলি গ্রহণ করা হয় এবং একত্রিত বা সম্মিলিত করা হয়। এখানে মূল কাজ হলো, একই key এর সমস্ত value একত্রিত করে একটি একক ফলাফল তৈরি করা। উদাহরণস্বরূপ, যদি শব্দগণনার কাজ হয়, তাহলে একই শব্দের ভ্যালুগুলির যোগফল করা হবে।
উদাহরণ: Reduce Output = [("apple", 2), ("banana", 1)]
এখানে, "apple" শব্দের মোট ২টি occurrences এবং "banana" শব্দের ১টি occurrence পাওয়া গেছে।
MapReduce এর কাজের ধাপসমূহ
১. Input Split
MapReduce শুরু হয় ডেটার ইনপুট ভাগ (split) দিয়ে। বড় ডেটাসেটকে ছোট ছোট ভাগে ভাগ করা হয়, যাতে প্রতিটি ভাগ আলাদা নোডে প্রক্রিয়া করা যায়।
২. Map Task Execution
এটি প্রথম ধাপ যেখানে ইনপুট ডেটার উপর Map ফাংশন প্রয়োগ করা হয়। প্রতিটি ভাগে Map ফাংশন আলাদা আলাদা ভাবে কাজ করে এবং একটি intermediate output (key-value pair) তৈরি করে।
৩. Shuffle and Sort
Map ফেজের আউটপুটগুলি পরবর্তী ধাপে, Shuffle and Sort, পাঠানো হয়, যেখানে key গুলির উপর ভিত্তি করে ডেটা সজ্জিত এবং গ্রুপ করা হয়।
৪. Reduce Task Execution
এই ধাপে, একই key এর সমস্ত value একত্রিত করে একটি চূড়ান্ত ফলাফল তৈরি করা হয়। এটি কার্যকরভাবে ডেটার আউটপুট তৈরি করে, যেমন: শব্দগণনা, গড়, সর্বাধিক মান ইত্যাদি।
৫. Output
Reduce ফেজের শেষে, প্রাপ্ত ফলাফলকে HDFS বা অন্য কোনো স্টোরেজে লেখা হয়।
MapReduce এর সুবিধা
১. ডিস্ট্রিবিউটেড প্রসেসিং (Distributed Processing)
MapReduce ডেটাকে ছোট ছোট অংশে ভাগ করে এবং একাধিক নোডে প্রক্রিয়া করে, ফলে খুব বড় ডেটাসেট দ্রুত এবং কার্যকরভাবে প্রক্রিয়া করা সম্ভব হয়।
২. স্কেলেবিলিটি (Scalability)
Hadoop এবং MapReduce সহজেই স্কেল করা যায়, অর্থাৎ, নতুন নোড যোগ করে আরও বেশি ডেটা প্রক্রিয়া করা সম্ভব।
৩. ফল্ট টলারেন্স (Fault Tolerance)
Hadoop এবং MapReduce এর মধ্যে ফেইল-সেফ (fault-tolerant) ক্ষমতা রয়েছে। যদি কোনো নোডে সমস্যা হয়, তবে অন্য নোড থেকে কাজ পুনরায় শুরু করা যায়।
৪. কম খরচে কার্যক্রম (Cost-Effective Processing)
MapReduce সস্তা হার্ডওয়্যার ব্যবহার করে কার্যকরভাবে বড় ডেটাসেট প্রসেস করতে সক্ষম, যা সিস্টেমের খরচ কমিয়ে আনে।
MapReduce এর ব্যবহার
- শব্দগণনা (Word Count): একটি সাধারণ উদাহরণ যেখানে ডেটার মধ্যে একটি শব্দ কতবার এসেছে, তা গণনা করা হয়।
- ডেটা ফিল্টারিং: ডেটা থেকে নির্দিষ্ট মান বা শর্তের উপর ভিত্তি করে তথ্য ফিল্টার করা।
- সোর্স কোড বিশ্লেষণ: বিশাল পরিমাণ সোর্স কোডে নির্দিষ্ট প্যাটার্ন বা ত্রুটি অনুসন্ধান করা।
সারাংশ
MapReduce হলো একটি শক্তিশালী প্রোগ্রামিং মডেল যা Hadoop এর ডিস্ট্রিবিউটেড ফাইল সিস্টেম (HDFS) এর সঙ্গে কাজ করে। এটি ডেটাকে ছোট ছোট অংশে ভাগ করে, পৃথকভাবে প্রসেস করে এবং পরে সেই অংশগুলির ফলাফল একত্রিত করে। এটি Big Data প্রক্রিয়াকরণের জন্য অত্যন্ত কার্যকরী এবং স্কেলযোগ্য, যা বড় পরিমাণ ডেটা দ্রুত এবং দক্ষভাবে প্রক্রিয়া করতে সহায়ক।
Read more