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