ف آن ماشین را بدون توقف برنامه، به ماشینهای دیگر سپرد و داده‌های رویش را نیز بازیابی کرد. همچنین گاهی ممکن است قدرت ماشین‌های یک سیستم توزیع شده با هم برابر نبوده و ماشین‌ها با سرعت‌های مختلف وظایفشان را انجام دهند. لذا برنامه نویس باید بتواند بطور متعادلی توزیع بار9 پردازشی را روی ماشین‌های شبکه انجام دهد. بنابراین استفاده از روشی که بتواند برنامه نویس را در ایجاد و اجرای برنامه‌هایش یاری رساند بسیار مفید و موثر خواهد بود. همچنین در پردزاش داده‌های حجیم، زمان، فاکتور مهمی‌بوده و یافتن روش‌هایی که باعث کاهش زمان اجرای برنامه‌ها شود، از اهمیت بالایی برخوردار است.
1-3- هدف تحقیق
یکی از روش‌هایی که مشکلات فوق را حل می‌کند استفاده از مدل برنامه نویسی نگاشت‌کاهش10 است. وظیفه‌ی این مدل برنامه نویسی که توسط گوگل11 معرفی شد، پردازش حجم بالایی از داده‌ها به شکلی موازی است [3, 4]. مدل برنامه نویسی نگاشت‌کاهش به برنامه نویسان اجازه می‌دهد تا با نوشتن توابعی، داده‌ها را پردازش کنند. دو تابع اصلی در این مدل برنامه نویسی وجود دارد. یکی تابع نگاشت12 و دیگری تابع کاهش13 نام دارد. تابع نگاشت داده ورودی را پردازش و نتایج میانی را تولید می‌کند. تابع کاهش نتایج میانی را تحلیل و نتایج نهایی را تولید می‌کند. یکی از ویژگیهای مفید این مدل این است که برنامه‌نویس بدون توجه به مسائل زمان اجرا که در قسمت قبل به آن اشاره شد، تمرکز خود را فقط بر روی برنامه و ایجاد توابع مورد نیاز معطوف می‌کند. هدف این پژوهش، پردازش تصاویر بصورت موازی با استفاده از مدل برنامه نویسی نگاشت‌کاهش و ارائه یک مدل استقرار بهینه برای اجرای برنامه ها در محیط توزیع شده است بطوریکه با استفاده بهینه از منابع پردازشی و رسیدن به بالاترین کارایی ممکن بکمک این مدل برنامه نویسی، سرعت پردازش را افزایش داد. با توجه به حجم وسیع داده‌ها در مسائل پردازش تصویر، نیاز به بهره‌وری از منابع و سرعت بالا یک نیاز اساسی تلقی می‌شود. علاوه‌براین بکمک مدل برنامه نویسی نگاشت‌کاهش حتی برنامه نویسانی که دانشی درباره‌ی برنامه نویسی تحت شبکه و مدیریت خطاها در شبکه ندارند نیز می‌توانند برنامه‌های خود را با سهولت بیشتری ایجاد و روی محیط توزیع شده انتقال و اجرا کنند.
1-4- گفتارهای پایان نامه
این پایان نامه در شش فصل تهیه شده‌است. فصل اول شامل مقدمه، تشریح صورت مساله و بیان اهداف است. در فصل دوم مبانی نظری و مفهومی‌تحقیق، شامل مفاهیم علمی‌پایه و مستندات مرتبط با تحقیق شرح داده شده‌است. فصل سوم به بررسی تحقیقات پیشین و ارتباط منطقی میان اطلاعات پژوهش‌های قبلی و مساله‌ی تحقیق می‌پردازد.
فصل چهارم، روش انجام تحقیق، ارائه مدل و زیرساخت بکار رفته را در بر می‌گیرد. فصل پنجم به مقایسه نتایج تحقیق با پژوهش‌های پیشین می‌پردازد و در فصل ششم، نتیجه گیری ارائه می‌گردد .

1-
فصل دوم
مبانی نظری تحقیـق

2- مبانی نظری تحقیق
2-1- رایانش ابری
امروزه دنیای فناوری اطلاعات و اینترنت روز به روز در حال گسترش و توسعه است. همسو با آن نیازهای دیگری مانند امنیت اطلاعات، پردازش سریع، صرفه‌جویی در زمان و هزینه و … اهمیت زیادی یافته است. لذا شرکت‌های کامپیوتری همواره به دنبال راهی برای رفع نیازهای کاربران و ارتقای خدمات خود بوده و در این میان شرکتهایی که خدمات بهتر و سریعتری ارائه دهند برنده‌ی این میدان خواهند بود. راه حلی که امروزه برای اینگونه مشکلات پیشنهاد می‌شود فناوری جدیدی است به نام رایانش ابری، که به شدت توسط شرکت‌های مختلف و نیز کاربران مورد استقبال واقع شده است.
در اواخر اولین دهه‌ی قرن 21، شاهد توسعه و گسترش بسیار سریع فناوری جدیدی بنام رایانش ابری بوده‌ایم که بطور کلی مدل متفاوتی از رایانش را ارائه می‌کند. یک سیستم ابری در ساده‌ترین تعریف، ارائه‌ی سرویس کامپیوتری روی اینترنت است. به جای آنکه تاسیسات و امکانات فناوری اطلاعات خود را برای نگهداری داده‌ها و یا نرم‌افزار هزینه کرده و بسازید، از امکانات شرکتهای دیگر استفاده می‌کنید. به عبارت دیگر شرکتهایی زیرساختهای خاصی درست می‌کنند که این امکانات را در اختیار شما قرار می‌دهند. بدین ترتیب شرکت شما از طریق اینترنت می‌تواند از داده‌ها و نرم‌افزار آنها استفاده کند. از این سیستم به نام ابر یا cloud نام برده می‌شود [5].
هنوز تعریف استاندارد علمی‌که مورد قبول عام باشد، برای رایانش ابری ارائه نشده است. موسسه ملی فناوری و استانداردها ، رایانش ابری را اینگونه تعریف می‌کند: “رایانش ابری مدلی است برای داشتن دسترسی فراگیر و آسان و بنا به سفارش شبکه به مجموعه ای از منابع رایانشی پیکره بندی پذیر مثل: شبکه ها ، سرورها ، فضای ذخیره سازی ، برنامه های کاربردی و سرویس ها که بتوانند با کمترین کار و زحمت یا نیاز به دخالت فراهم کننده‌ی سرویس به سرعت فراهم شده یا آزاد (رها) گردد.”
رایانش ابری پنج مشخصه اساسی دارد و از سه مدل سرویس دهی و چهار مدل پیاده‌سازی تشکیل شده است که در قسمت زیر به معرفی آن می‌پردازیم [6].
2-1-1- ویژگی‌های اساسی رایانش ابری:
2-1-1-1- دسترسی سلف سرویس و بنا به تقاضا14:
مصرف کنندگان خدمات رایانش ابری، بنا به تقاضا، بدون نیاز به تماس مستقیم با نماینده فروش یا کارمند پشتیبانی فنی، با ورود به حساب کاربری خود از طریق یک وبسایت، می‌توانند به منابع رایانشی دسترسی یافته و از خدمات تدارک دیده، استفاده نمایند.
2-1-1-2- دسترسی تحت شبکه15:
به دلیل تحت وب بودن خدمات ابری، به کمک هر وسیله متصل به اینترنت، می‌توان از این خدمات استفاده کرد؛ یک مرورگر وب در یک کامپیوتر شخصی، یک پایانه‌ی کامپیوتری و در مواردی حتی ابزارهای دستی مثل iPhone و Blackberry
2-1-1-3- تجمیع منابع16:
در رایانش ابری منابعی که از نظر فیزیکی ممکن است در نقاط مختلفی قرار داشته باشند، در قالب مجموعه ای متمرکز و بصورت اشتراکی در معرض استفاده‌ی مصرف کنندگان قرار می‌گیرند.
2-1-1-4- انعطاف پذیری سریع17:
فناوری رایانش ابری، انعطاف پذیری قابل توجهی در تامین و تدارک خدمات فراهم می‌کند؛ منابع بصورت پویا به درخواست‌ها تخصیص داده می‌شودکه این امر تخصیص یا آزادسازی سریع منابع متناسب با تغییر نیاز مصرف کنندگان را ممکن می‌سازد. به این ترتیب مشتریان خدمات می‌توانند در هر زمان، متناسب با نیازها و شرایط خود، بدون هیچ مقدمه‌ای، از خدمات بیشتر یا کمتری استفاده کنند.
2-1-1-5- خدمات اندازه گیری شده18:
رایانش ابری، امکان کنترل و ثبت خودکار کلیه خدمات مورد استفاده و منابعی که به مشتریان تخصیص داده شده است را فراهم می‌کند. این امر، پیاده سازی مدل پرداخت به ازای استفاده را برای تامین کنندگان خدمات ممکن می‌سازد.
2-1-2- مدلهای سرویس دهی رایانش ابری:
2-1-2-1- نرم افزار بعنوان سرویس19:
خدمات نرم افزاری رایانش ابری شامل برنامه های نرم افزاری است که از طریق وب در معرض استفاده مشتریان بالقوه قرار می گیرند. عدم نیاز به نصب برنامه و امکان تعریف سریع و آسان کاربران جدید و به کارگیری مدل پراخت بازای استفاده، این خدمات را به یک فرصت بزرگ برای افراد و سازمان ها تبدیل کرده است.نمونه ی شناخته شده ی این خدمات، پست الکترونیک تحت وب است.
2-1-2-2- پلتفرم بعنوان سروریس20:
این خدمات، پلتفرم های آنلاینی برای ایجاد، تست و راه اندازی برنامه های تحت وب فراهم می کندکه می توانند با استفاده از ابزارهای برنامه نویسی و توسعه نرم افزار مبتنی بر مرورگر مورد استفاده قرار گیرند. در این روش دیگر نیازی به نصب و پیکربندی پلتفرم ها و ابزارها و برنامه های توسعه نرم افزار نیست.
2-1-2-3- زیرساخت بعنوان سرویس21:
این خدمات، امکان دسترسی به منابع رایانشی اصلی همچون توان پردازش، رسانه های ذخیره سازی و شبکه ها را برای مصرف کنندگان فراهم می آورد.
2-1-3- مدل‌های خدمات رایانش ابری:
2-1-3-1- ابر عمومی22:
این خدمات در معرض استفاده عموم قرار می گیرد و منابع رایانشی بصورت اشتراکی مورد استفاده مصر ف کنندگان قرار می گیرد. این مدل، رایانش ابری محض است. کلیه مشخصات و ویژگی های رایانش ابری در این مدل بطور واضح دیده می شود.
2-1-3-2- ابر خصوصی23:
در این مدل رایانش ابری در سطح دپارتمان ها و بخش های یک سازمان پیاده سازی می شود. سازمان ها، سرویس دهنده ها، نرم افزارها و داده هایشان را در مراکز داده خود داشته باشند. به عبارت دیگر منابع رایانشی و خدمات توسط بخش های مختلف صرفا یک سازمان، اما در چارچوب فناوری رایانش ابری مورد استفاده قرار می گیرد.
2-1-3-3- ابر گروهی24:
در این مدل خدمات ابری صرفا برای گروه مشخصی از سازمان ها تدارک دیده شده است. کلیه خدمات ابرهای عمومی در این مدل هم ارائه می شود تنها مصرف کنندگان به مجموعه مشخصی محدود می شوند.
2-1-3-4- ابر ترکیبی25:
مصرف کننده در این مدل بخشی از نیازهای IT خود را به کمک ابرهای عمومی، بخشی را با ابرهای گروهی و بخشی را در ابرهای خصوصی و یا حتی با راه‌کارهای سنتی IT تامین می‌کند.
2-2- نگاشت‌کاهش
نگاشت‌کاهش یک مدل برنامه‌نویسی در مورد محاسبات توزیع شده بر روی حجم بالایی از داده‌ها می‌باشد. همچنین نگاشت‌کاهش یک چارچوب نرم‌افزاری است که در سال 2004 توسط گوگل برای پردازش توزیع شده‌ی داده‌های با مقیاس بالا توسط کلاسترهایی از کامپیوترها ارائه شد [7]. این چارچوب در زمینه‌های مختلفی همچون مرتب سازی توزیع یافته26، ساخت اندیس معکوس27، کلاستربندی اسناد28 و فراگیری ماشین29 [8]مورد استفاده قرار گرفته‌است. همچنین مدل نگاشت‌کاهش برای استفاده در محیط‌های مختلف رایانشی مانند