آموزش

MapReduce در هدوپ

MapReduce یک چارچوب پردازش موازی توزیع شده است که برای پردازش مجموعه داده های بزرگ در خوشه های رایانه ای استفاده می شود. این چارچوب به طور گسترده ای در هدوپ برای تجزیه و تحلیل داده های بزرگ استفاده می شود.

مراحل MapReduce:

  1. مرحله Map:

    • داده های ورودی به قطعات کوچک تقسیم می شوند.
    • هر قطعه به یک وظیفه map اختصاص داده می شود.
    • هر وظیفه map، داده های خود را پردازش می کند و خروجی را به صورت جفت کلید-مقدار تولید می کند.
  2. مرحله Reduce:

    • خروجی های مرحله map بر اساس کلید مرتب می شوند.
    • داده های مرتب شده به وظایف reduce اختصاص داده می شوند.
    • هر وظیفه reduce، داده های مرتبط با یک کلید خاص را جمع آوری و پردازش می کند و خروجی نهایی را تولید می کند.

مزایای MapReduce:

  • مقیاس پذیری: می تواند مجموعه داده های بسیار بزرگ را در خوشه های رایانه ای به طور موازی پردازش کند.
  • مقاومت در برابر خطا: وظایف Map و Reduce می توانند به طور مستقل اجرا شوند و در صورت خرابی یک گره، می توان آن را مجددا راه اندازی کرد.
  • سهولت استفاده: چارچوب MapReduce یک API ساده برای توسعه برنامه های پردازش داده ارائه می دهد.

معایب MapReduce:

  • مناسب برای همه مشکلات نیست: MapReduce برای پردازش داده هایی که به خوبی به مدل کلید-مقدار نگاشت می شوند، مناسب است. برای مشکلات دیگر، ممکن است چارچوب های پردازش داده دیگری مناسب تر باشند.
  • کارایی: می تواند برای برخی از الگوریتم ها کارایی کمتری داشته باشد.

مثال:

فرض کنید می خواهید تعداد کلمات موجود در یک مجموعه بزرگ از اسناد را بشمارید. شما می توانید از MapReduce برای این کار به شرح زیر استفاده کنید:

  • مرحله Map: هر سندی به کلمات آن تقسیم می شود و هر کلمه به عنوان کلید و 1 به عنوان مقدار خروجی داده می شود.
  • مرحله Reduce: خروجی های مرحله map بر اساس کلید مرتب می شوند و وظایف reduce تعداد مقادیر (تعداد کلمات) را برای هر کلید (کلمه) جمع می کنند.

 

 

مثال MapReduce:

فرض کنید می خواهیم تعداد کلمات موجود در یک مجموعه بزرگ از اسناد را بشماریم. می توانیم از MapReduce برای این کار به شرح زیر استفاده کنیم:

1. مرحله Map:

  • هر سندی به کلمات آن تقسیم می شود.
  • هر کلمه به عنوان کلید و 1 به عنوان مقدار خروجی داده می شود.

2. مرحله Reduce:

  • خروجی های مرحله map بر اساس کلید مرتب می شوند.
  • وظایف reduce تعداد مقادیر (تعداد کلمات) را برای هر کلید (کلمه) جمع می کنند.

شبه کد:

def map(document):
  for word in document.split():
    yield word, 1

def reduce(key, values):
  yield key, sum(values)

# اجرا
job = Job()
job.mapper(map)
job.reducer(reduce)
job.input_path("/path/to/documents")
job.output_path("/path/to/results")
job.run()

خروجی:

(word1, count1)
(word2, count2)
...

نکات:

  • این فقط یک مثال ساده است. MapReduce می تواند برای وظایف پیچیده تر مانند پیوستن مجموعه داده ها یا مرتب سازی داده ها استفاده شود.
  • کتابخانه های زیادی برای ساده سازی برنامه نویسی MapReduce در دسترس هستند.

مثال های دیگر:

  • محاسبه میانگین: برای محاسبه میانگین یک مجموعه داده، می توانید از MapReduce برای جمع آوری مجموع و تعداد مقادیر و سپس تقسیم مجموع بر تعداد استفاده کنید.
  • پیدا کردن حداکثر و حداقل: برای پیدا کردن حداکثر و حداقل یک مجموعه داده، می توانید از MapReduce برای ردیابی حداکثر و حداقل فعلی در هر وظیفه و سپس مقایسه مقادیر نهایی در مرحله reduce استفاده کنید.
  • فیلتر کردن داده ها: برای فیلتر کردن داده ها بر اساس یک شرط خاص، می توانید از MapReduce برای حذف داده هایی که شرط را برآورده نمی کنند استفاده کنید.

 

مثال واضح تر MapReduce:

فرض کنید می خواهیم تعداد دفعات ظهور هر کلمه در یک جمله را بشماریم. جمله مورد نظر ما “من عاشق ایران هستم. ایران کشور زیبایی است.” است.

1. مرحله Map:

  • جمله به کلمات آن تقسیم می شود: [“من”, “عاشق”, “ایران”, “هستم”, “ایران”, “کشور”, “زیبایی”, “است”]
  • هر کلمه به عنوان کلید و 1 به عنوان مقدار خروجی داده می شود:
("من", 1)
("عاشق", 1)
("ایران", 1)
("هستم", 1)
("ایران", 1)
("کشور", 1)
("زیبایی", 1)
("است", 1)

2. مرحله Reduce:

  • خروجی های مرحله map بر اساس کلید مرتب می شوند:
("ایران", 2)
("من", 1)
("عاشق", 1)
("است", 1)
("کشور", 1)
("زیبایی", 1)
("هستم", 1)
  • وظایف reduce تعداد مقادیر (تعداد دفعات ظهور) را برای هر کلید (کلمه) جمع می کنند:
("ایران", 2)
("من", 1)
("عاشق", 1)
("است", 1)
("کشور", 1)
("زیبایی", 1)
("هستم", 1)

خروجی:

(ایران, 2)
(من, 1)
(عاشق, 1)
(است, 1)
(کشور, 1)
(زیبایی, 1)
(هستم, 1)

نکات:

  • در این مثال، از یک جمله ساده برای نشان دادن نحوه کار MapReduce استفاده شده است. MapReduce می تواند برای پردازش مجموعه داده های بسیار بزرگ و پیچیده تر استفاده شود.
  • کتابخانه های زیادی برای ساده سازی برنامه نویسی MapReduce در دسترس هستند.

 

 

فریم ورک های جایگزین:

در حالی که MapReduce هنوز یک چارچوب محبوب برای پردازش داده های بزرگ است، فریم ورک های مدرن دیگری مانند Spark و Apache Flink نیز ظاهر شده اند که به طور بالقوه عملکرد و انعطاف پذیری بیشتری را ارائه می دهند.

منابع:

نمایش بیشتر

نوشته‌های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا