فاز میانی Combine در Map Reduce

اشنایی با Combiner

کامباینر، که از آن به Semi-reducer یا Mini-Reducer هم تعبیر می گردد، یک کلاس اختیاری است که عملیات پذیرش ورودی از کلاس مپ و سپس پاس دادن زوج کلیدمقدار خروجی به کلاس ردیوسر را بر عهده دارد.
وظیفه اصلی یک کامباینر، خلاصه سازی رکوردهای خروجی کلاس مپ با کلید یکسان است. خروجی کامباینر(مجموعه ای از کلیدمقدارها) بر بستر شبکه، به عنوان ورودی به کلاس ردیوسر ارسال می گردد. نکته مهم اینکه نوع ورودی زوج کلیدمقدار و نوع خروجی زوج کلیدمقدار می بایست یکسان باشند.
مزیت کلدی کامباینر اینست که به تفکیک داده ها در چندین گروه مجزی برای فاز ردیوس کمک می کند، چرا که در اینصورت پردازش را بیش از پیش آسان تر می کند.
اما قرار نیست همیشه و همه جا این گام استفاده شود. سوالی که مطرح می شود این است که فاز کامباین چه زمانی استفاده نمی شود؟

بررسی مثال توییتر

توییتر. یک فایل دیتای حجیم شامل توییت های کاربران ایران با هشتگ اینترنت در HDFS داریم. هدف این است سری_زمانی تعداد تکرار کلمه قطعی در بازه های زمانی مختلف توسط کاربران بررسی شود. فاز Map برای هر Node تعداد تکرار کلمه ضرر را تاریخ های مختلف مشخص می کند. اگر در مرحله Combine تعداد تکرار در تاریخ های مختلف با هم ترکیب گردد رابطه زمانی دیتاها حذف می شود. در این تیپ مسائل نیازی به فاز کامباین نداریم.

نکته ای که باید مدنظر قرارگیرد اینست که کامباینر تضمین نمی کند که همیشه روی همه دیتا اعمال شود.

▫️بهتر هست کامباینر برای توابعی نظیر SUM استفاده شود، اما توابعی هم هستند که فاز کامباین نمی تواند همیشه روی آنها اعمال گردند، نظیر AVG.

وقتی نیازی نیست که دیتا روی دیسک ریخته شود مپ ردیوس فاز کامباین را اعمال نمی کند.
وقتی که نوع ورودی دیتاهای زوج کلیدمقدار یکسان نباشند، مپ ردیوس فاز کامباین را اعمال نمی کند.
در صورت عدم استفاده از کامباین شاهد افت محسوس ترافیک انتقال دیتا در شبکه هستیم.

نکته : اگر کامباینر برای تسک مدنظرمان Set شود، هدوپ خود تصمیم می گیرد با توجه به دیتای موردنظر، کامباینر را اجرا کند یا خیر!

اما حالا که موارد عدم استفاده فاز کامباین را ذکر کردیم، باید ذکر کنیم فاز کامباین چه زمانی استفاده می شود؟

کامباین تنها زمانی می تواند استفاده شود که تابع ردیوس هم بصورت commutative ظاهر می شود و هم بصورت associative.
مورد دیگر زمانی که فاز مپ دیتاهای فوق العاده حجیمی را در برابر کلیدهای یکسان تولید می کند.(شمارش کلمات)
وقتی که نوع ورودی دیتاهای زوج کلیدمقدار یکسان باشند، مپ ردیوس فاز کامباین را اعمال می کند.
هنگامی که Buffer نیاز به Flush داشته باشد، کامباین همیشه فراخوانی می گردد.

 

اشتراک گذاری:

مطالب زیر را حتما مطالعه کنید

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