مطلب ۳ (قسمت دوم) : مقایسه با دیگر سیستم ها
محاسبات شبکه ای
از جمله روش های محاسباتی پیشرفته که در آن داده حجیم با سرعت بالا مورد محاسبه قرار می گیرد، محاسبات شبکه ای می باشد. در این روش، ابتدا کار در کلاستری از نودها توزیع می گردد، که هر کدام دسترسی مستقیم به یک فایل سیستم مشترک تحت SAN دارند. این روش در پردازش های سنگین به خوبی عمل می کند، اما عیب آن زمانی ظاهر می شود که یک نود حجم زیادی داده را واکشی نماید (اینجا نقطه ای است که MapReduce قوی ظاهر می شود). در این حالت پهنای باند شبکه خود تبدیل به یک معظل می گردد و باعث می شود تا اتمام عمل واکشی، آن نود بیکار منتظر بمانند.
در MapReduce تمرکز بر جای دادن داده در کنار نود پردازش کننده می باشد، بنابراین از آنجایی که دسترسی محلی است، سرعت پردازش بالا خواهد بود. این ویژگی مهم را محلی سازی داده (Data Locality) می نامند. باتوجه به اینکه پهنای باند شبکه مهمترین منبع در یک دیتاسنتر است، MapReduce به گونه ای پیاده سازی شده است تا بتواند آن را از طریق مدل سازی ساختار شبکه به بهترین نحو محافظت نماید. توجه داشته باشید که این چیدمان مانع انجام تحلیل های سنگین در MapReduce نمی شود.
روش پیاده سازی یک کار در MapReduce برخلاف دیگر روش ها که برنامه نویسان به صورت جزئی درگیر محاسبات می شوند، بصورت کاملا سطح بالا انجام می شود، بدین معنی که آنها فقط در سطح توابعی از زوج های "Key & Value" برنامه می نویسند، و الباقی جریان داده بصورت ضمنی صورت می پذیرد.
هماهنگ سازی بین پردازش ها در یک محاسبه توزیع شده وسیع، کار دشواری است. مدیریت قسمت های ناموفق کار در شرایطی که محاسبات به صورت کلی در حال انجام و پیشرفت باشد، کار پیچیده ای به نظر می رسد. برای مثال، تشخیص اینکه آیا یک پردازش غیر محلی (Remote) موفق بوده یا خیر. MapReduce دغدغه کنترل قسمت های ناموفق کار را خود به عهده می گیرد، به طوری که با نظارت بر map ها و reduce ها، مواردی که با خطا مواجه می شوند را ردیابی نموده و مجددا سر زمان و مکان خاصی آنها را به اجرا در می آورد. و از آنجایی که MapReduce منطبق بر الگوی Shared-Nothing طراحی شده است، بدین معنی که تسک ها هیچ گونه وابستگی به یکدیگر ندارند، قادر به انجام این کار می باشد. بنابراین از نگاه برنامه نویسان، ترتیب اجرای تسک ها اهمیتی نخواهد داشت. در مقابل، در روشهای دیگر از آنجایی که برنامه نویس خود مسئول انجام کارها بصورت مرحله به مرحله می باشد(کنترل بیشتر) ، طبیعی است که نوشتن این نوع برنامه ها سخت تر خواهد بود.
این طور به نظر می رسد که MapReduce یک مدل برنامه نویسی قانونمند است که در آن شما محدود به استفاده از مجموعه های "Key & Value" می باشید، و نیز تعدادی mapper و reducer وجود دارند که به ترتیب و هماهنگی خاصی اجرا می شوند.
سوال : آیا برنامه نویسان می توانند با آن کارهای مفید و مهم انجام دهند؟
جواب: بلی.
مهندسین شرکت Google مدل MapReduce را به عنوان روشی برای تولید شاخص های جستجوی محصول مطرح نمودند زیرا آنها همواره خود را در وضعیت حل یک مسئله تکراری می یافتند، اما تاکنون از این مدل در برنامه های مختلف زیادی حتی در صنایع گوناگون استفاده شده است. طیف الگوریتم هایی که با این مدل قابل پیاده سازی می باشند، از تحلیل تصویر گرفته، تا موضوعات حول گراف، تا الگوریتم های هوش مصنوعی واقعا دیدنی است. از آنجایی که آن تنها یک ابزار عمومی پردازش داده است، لذا نمی توان انتظار داشت که هر نوع مسئله ای را پاسخ دهد.
MapReduce برای حل مسائلی که مدت زمان اجرای آنها به دقیقه و یا ساعت می رسند، طراحی شده است. همچنین برای اجرای آن نیاز به یک سخت افزار قابل اعتمادی می باشد که معمولا در یک دیتاسنتر با شبکه داخلی سریع وجود دارد.
Hadoop: The Definitive Guide by Tom White