2-1-1-4- انعطاف پذیری سریع:8
2-1-1-5- خدمات اندازه گیری شده:9
2-1-2- مدلهای سرویس دهی رایانش ابری:9
2-1-2-1- نرم افزار بعنوان سرویس:9
2-1-2-2- پلتفرم بعنوان سروریس:9
2-1-2-3- زیرساخت بعنوان سرویس:9
2-1-3- مدل‌های خدمات رایانش ابری:10
2-1-3-1- ابر عمومی:10
2-1-3-2- ابر خصوصی:10
2-1-3-3- ابر گروهی:10
2-1-3-4- ابر ترکیبی:10
2-2- نگاشت‌کاهش10
2-3- آپاچی هدوپ13
2-3-1- فایل سیستم توزیع یافته هدوپ (HDFS)15
2-3-2- چارچوب نگاشت‌کاهش(MapReduce)17
3- مروری بر تحقیقات انجام شده20
4- روش تحقیق40
4-1- مقدمه40
4-2- انتخاب پارامترها40
4-2-1- مقیاس پذیری41
4-2-1-1- Scale up41
4-2-1-2- Scale in41
4-2-1-3- Scale out41
4-2-2- تعداد Map Taskهای همزمان41
4-2-3- حجم قطعات تصاویر42
4-2-4- تعداد تکرار داده ها روی شبکه42
4-2-5- حجم داده مورد بررسی42
4-3- برنامه مورد استفاده42
4-4- بررسی پارامترها44
4-4-1- سناریو اول: تاثیر مقیاس پذیری عمودی(Scale Up) بر زمان پردازش44
4-4-2- سناریو دوم: بررسی تاثیر مقیاس پذیری (Scale in) بر زمان پردازش47
4-4-3- سناریو سوم: بررسی تاثیر حجم قطعات تصاویر بر زمان پردازش52
4-4-4- سناریو چهارم: بررسی تاثیر تعداد Map Task های همزمان بر زمان پردازش55
4-4-5- سناریو پنجم: بررسی تاثیر تعداد تکرار تصاویر بر زمان پردازش58
4-4-6- سناریو ششم: بررسی پارامتر حجم داده‌ها63
4-4-7- سناریو هفتم: تاثیر مقیاس پذیری افقی(Scale Out) بر زمان پردازش65
4-5- نتایج68
5- بررسی و تحلیل یافته‌های تحقیق71
6- نتیجه‌گیری و پیشنهادها77

فهرست جدول‌هاعنوان صفحهجدول ‏3-1: زمان صرف شده نسبت به حجم داده ورودی در [32]23
جدول ‏3-2: خلاصه پژوهش های انجام شده در زمینه پردازش تصویر بکمک مدل نگاشت کاهش38
جدول ‏4-1: مشخصات سیستم برای بررسی مقیاس پذیری عمودی45
جدول ‏4-2: ساختار کلاستر اول با 16ماشین48
جدول ‏4-3: ساختار کلاستر دوم با 8 ماشین48
جدول ‏4-4: ساختار کلاستر سوم با 5 ماشین48
جدول ‏4-5: پیکربندی حالت سریال49
جدول ‏4-6: ساختار کلاستر با 7 ماشین53
جدول ‏4-7: نتایج بررسی پارامتر حجم قطعات تصاویر53
جدول ‏4-8: نتیجه تاثیر تعداد Map Taskها بر زمان پردازش در روش دوم56
جدول ‏4-9: نتایج بررسی پارامتر تعداد تکرار59
جدول ‏4-10: تغییر زمان پردازش با افزایش حجم تصاویر ورودی63
جدول ‏4-11: نتایج بررسی تاثیر مقیاس پذیری افقی برزمان پردازش66
جدول ‏4-12: مدل پیشنهادی69
جدول ‏5-1: مقادیر پیشنهادی برای پارامترها در بررسی موردی74

فهرست شکل‌ها
عنوان صفحهشکل ‏2-1: مراحل مدل نگاشت کاهش12
شکل ‏2-2: شمای کلی مدل برنامه نویسی نگاشت کاهش12
شکل ‏2-3: نحوه اجرای برنامه WordCount در نگاشت‌کاهش13
شکل ‏2-4: برخی از شرکت‌هایی که از هدوپ استفاده می‌کنند14
شکل ‏2-5: نمونه‌ای از یک کلاستر هدوپ14
شکل ‏2-6: ذخیره فایل در فایل سیستم توزیع شده هدوپ16
شکل ‏2-7: نحوه نوشتن فایل درHDFS17
شکل ‏2-8: ساختار کلی یک کلاستر هدوپ18
شکل ‏3-1: تاثیر افزایش داده ها بر زمان پردازش در کلاسترهای مختلف21
شکل ‏3-2: تاثیر تعداد Map Task هایی که بطور همزمان روی هر نود اجرا می شوند بر زمان پردازش22
شکل ‏3-3 : تاثیر افزایش حجم تصویر بر زمان پردازش در الگوریتم Auto-Contrast26
شکل ‏3-4 : تاثیر افزایش حجم تصویر بر زمان پردازش در الگوریتم تشخیص لبه26
شکل ‏3-5: تاثیر افزایش حجم تصویر بر زمان پردازش در الگوریتم Color Sharpening27
شکل ‏3-6: تاثیر افزایش نود بر زمان پردازش در دیتاست کوچک30
شکل ‏3-7: تاثیر افزایش تعداد نود بر زمان پردازش در دیتاست بزرگ30
شکل ‏3-8: تاثیر افزایش نود بر زمان پردازش در دو حالت توزیع داده ها31
شکل ‏3-9: تاثیر افزایش نودها بر کارایی در الگوریتم بازیابی تصاویر32
شکل ‏3-10: نحوه رفتار الگوریتم بازیابی تصاویر با افزایش داده32
شکل ‏3-11: پیچیدگی محاسباتی با اجرای برنامه MLC33
شکل ‏3-12: تاثیر حجم داده ورودی بر اجرای برنامه MLC34
شکل ‏3-13: ساختار ترکیب Hadoop و Cuda35
شکل ‏3-14: نمودار جریان داده در ترکیب Hadoop با Cuda36
شکل ‏4-1: نتیجه اجرای برنامه تشخیص لبه روی تصاویر43
شکل ‏4-2: تغییر مقیاس عمودی45
شکل ‏4-3: تاثیر مقیاس پذیری عمودی بر زمان پردازش در حالت سریال و موازی46
شکل ‏4-4: ساختار مقیاس پذیری Scale In47
شکل ‏4-5: تاثیر تعداد ماشین‌ها با تعداد مپرهای مختلف بر زمان پردازش50
شکل ‏4-6: تاثیر تعداد ماشین‌ها با تعداد مپرهای برابر بر زمان پردازش51
شکل ‏4-7: مقایسه روش‌های موازی با تعداد وظایف مختلف، با پردازش سریال51
شکل ‏4-8: نمودار تاثیر حجم قطعات تصاویر بر زمان پردازش54
شکل ‏4-9: تاثیر تعداد Map Task های مختلف بر زمان پردازش در روش دوم57
شکل ‏4-10: نمودار تاثیر تعداد تکرار بر زمان پردازش60
شکل ‏4-11: تاثیر تعداد تکرار تصاویر بر توان عملیاتی62
شکل ‏4-12: نحوه تغییر زمان پردازش با افزایش حجم تصاویر ورودی64
شکل ‏4-13: تغییر مقیاس افقی65
شکل ‏4-14: نحوه تاثیر مقیاس پذیری افقی بر زمان پردازش67

فهرست نشانه‌های اختصاری

HDFSHadoop Distributed File System
GFSGoogle File System
GPGPUGeneral Purpose Graphics Processing Units
IaaSInfrastructure as a Service
PaaSPlatform as a Service
SaaSSoftware as a Service
VMVirtual Machine

1-
فصل اول
مقـدمه

1- مقدمه
1-1- کلیات
امروزه با افزایش روش‌های مختلف اخذ اطلاعات گسسته مانند دوربین‌های دیجیتال، پویشگرها و ماهواره‌ها، پردازش تصویر کاربرد فراوانی یافته‌است. از زمینه‌های پر کاربرد پردازش تصویر می‌توان نجوم، زیست شناسی و پزشکی را نام برد. پردازش تصاویر ارسالی از ماهواره‌ها و تشخیص پلاک اتومبیل‌ها از نمونه‌های کاربردی و شناخته‌شده‌ی مسائل پردازش تصویر هستند.
با افزایش کاربردهای تصاویر رقمی1 در حوزه‌های مختلف، هر روز بر حجم تصاویر موجود در پایگاه‌های داده افزوده می شود. در پردازش تصاویر ارسالی از ماهواره‌ها حجم وسیعی از تصاویر برای پردازش ارسال می‌شوند که برای پردازش این حجم وسیع از تصاویر، نیاز به کامپیوترهای قدرتمندی است تا با سرعت بالایی تصاویر دریافتی را پردازش کنند. در سال‌های اخیر تلاش‌های بسیاری در زمینه‌ی پردازش داده‌های حجیم صورت گرفته‌است. در این بین، پردازش موازی و بطور خاص پردازش توزیع شده یکی از پر طرفدارترین این روش‌ها می‌باشد.
در بیشتر روش‌های توزیع شده برای پردازش داده‌ها، برنامه نویس باید دانش کافی در برنامه نویسی و شبکه داشته باشد و نیز بتواند مسائل مربوط به زمان اجرا را مدیریت و برطرف کند که‌این کار نیازمند تخصص و مهارت بالایی در برنامه نویسی و مباحث شبکه‌است. لذا روش‌هایی که در آن کاربر بتواند با سهولت بیشتری برنامه‌هایش را ایجاد و اجرا کند بسیار مورد استقبال قرار می‌گیرد.
یکی از تکنولوژی‌هایی که امروزه توجه بسیاری را به خود جلب کرده و تحول بزرگی در بسیاری از زمینه‌های مختلف کامپیوتری به ارمغان آورده‌است رایانش ابری است. ابرها بسیاری از نیازها در زمینه‌ی فناوری اطلاعات را بصورت یک سرویس ارائه می‌دهند که این سرویس از طریق اینترنت قابل دسترسی است. در این پژوهش به بررسی چالش‌هایی که کاربران برای اجرای مسائل پردازش تصویر خود در روی ابر و افزایش کارایی آن مواجهند می‌پردازیم و هدف این پژوهش ارائه روشی برای افزایش کارایی پردازش تصاویر در روی ابر که یک محیط توزیع شده‌است ارائه می‌شود. بطوریکه طی آن کاربر بتواند برنامه‌های خود را بصورت بهینه تر و کاراتری تولید، اجرا و مدیریت کند.
1-2- اهمیت تحقیق
با توجه به گستردگی کاربردهای پردازش تصویر در زمینه‌های مختلف، و نیز با روند کنونی افزایش حجم تصاویر، برای پردازش این حجم از داده‌ها در زمان مناسب، نیاز به سرعت بسیار بالایی داریم. لذا ناگزیر به استفاده از ماشین‌های غولپیکر و پردازش موازی2 برای پردازش این حجم از داده‌ها هستیم. در پردازش موازی، ماشینی با چندین پردازنده3 یا چندین هسته‌ی پردازنده4، برنامه داده شده را اجرا می‌کند [1]. پردازنده‌های چند هسته‌ای5 از نمونه‌ی این نوع پردازنده‌ها هستند. علاوه براین با اتصال کامپیوترهای تک پردازنده6 و تک هسته7 و ایجاد یک شبکه نیز میتوان پردازش موازی انجام داد. این کار بکمک نرم افزارهای توزیع شده صورت می‌پذیرد و به‌این نوع از پردازش موازی، اصطلاحا پردازش توزیع شده8 می‌گویند[2].
بسیاری از سازمان‌ها به دلایل مختلفی همچون هزینه‌های بالای خرید و نگهداری و نیاز به متخصصان و . . . قادر به فراهم سازی کامپیوترهای غول پیکر برای اجرای برنامه‌ها بصورت موازی نیستند. لذا پردازش توزیع شده بسیار مورد توجه محققان و نیز سازمان‌ها قرار گرفته‌است.
بطور معمول در برخی از روشهای توزیع شده برنامه نویس باید مهارت بالایی در برنامه نویسی و مدیریت خطاهای هنگام اجرا روی شبکه داشته باشد. برنامه نویس علاوه بر تمرکز روی هدف اصلی برنامه، باید مشکلات احتمالی هنگام اجرای برنامه را نیز پیش بینی و برای آن‌ها راه حل بیاندیشد. بعنوان مثال کاربر باید بتواند پردازش‌ها را بطور مناسب بین ماشین‌ها تقسیم و مدیریت کند و اگر در حین اجرای برنامه یکی از ماشین‌ها به هر علتی متوقف شود باید بتوان وظایف آن ماشین را بدون توقف برنامه، به ماشینهای دیگر سپرد و داده‌های رویش را نیز بازیابی کرد. همچنین گاهی ممکن است قدرت ماشین‌های یک سیستم توزیع شده با هم برابر نبوده و ماشین‌ها با سرعت‌های مختلف وظایفشان را انجام دهند. لذا برنامه نویس باید بتواند بطور متعادلی توزیع بار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]مورد استفاده قرار گرفته‌است. همچنین مدل نگاشت‌کاهش برای استفاده در محیط‌های مختلف رایانشی مانند سیستم‌های چند هسته‌ای30 [9, 10]، محیط‌های رایانشی داوطلبانه31 [11]، محیط‌های ابری پویا32 [12] و محیط‌های سیار33 [13] نیز تطبیق سازی شده‌است کرد [4]. بعنوان مثال شرکت گوگل برای اینکه‌ایندکس‌هایش را مجددا بطور کامل ایجاد کند از مدل نگاشت‌کاهش استفاده کرد [14]. لذا این مدل برنامه نویسی بشکل وسیعی در زمینه رایانش ابری مورد استفاده قرار گرفته‌است و پیاده سازی‌های مختلفی از این مدل برنامه نویسی، در ابرهای شرکت‌های بزرگ مانند گوگل و فیسبوک34 مورد استفاده قرار گرفته است.
مدل نگاشت‌کاهش همانطور که در شکل ‏2-1 نشان داده شده‌است از دو تابع اصلی تشکیل شده‌است. تابع نگاشت35 ورودی را در قالب جفت‌های کلید/مقدار36 دریافت و پردازش می‌کند و بعنوان خروجی جفت‌های کلید/مقدار میانی را برمی‌گرداند. کتابخانه‌ی نگاشت‌کاهش37، تمامی مقدارهای میانی که دارای کلید برابر هستند را در یک گروه جمع آوری کرده و به تابع کاهش38 ارسال می‌کند. ورودی تابع کاهش، یک کلید و لیستی از مقادیر مربوط به آن کلید است که پس از پردازش، خروجی نهایی را بر می‌گرداند [3]. همچنین در شکل ‏2-2 مراحل اصلی مدل و نیز مسیر حرکت داده‌ها در این مدل برنامه نویسی بشکل مصور نشان داده شده است.
شکل ‏2-1: مراحل مدل نگاشت کاهش
شکل ‏2-2: شمای کلی مدل برنامه نویسی نگاشت کاهش
[برگرفته از مقاله شماره [15]]
برای آشنایی بیشتر با مدل نگاشت‌کاهش، در شکل ‏2-3 نحوه اجرای برنامه WordCount نشان داده شده‌است. این برنامه فایل متنی را دریافت کرده و تعداد تکرار هر کلمه را محاسبه می‌کند. ورودی تابع نگاشت، یک جفت شامل آدرس شروع یک خط و محتوای آن خط می‌باشد و بعنوان خروجی، هر کلمه به همراه عدد یک را برمی‌گرداند. در مرحله‌ی shuffling، جفت‌هایی که کلید برابر دارند تشکیل یک لیست را می‌دهند که هر لیست به یک تابع کاهش ارسال می‌شود. خروجی تابع کاهش، جفتی شامل کلمه و تعداد تکرار آن می‌باشد.
شکل ‏2-3: نحوه اجرای برنامه WordCount در نگاشت‌کاهش
نگاشت‌کاهش اجازه می‌دهد تا عملیات نگاشت و کاهش بصورت توزیع یافته اجرا شود. هر یک از توابع نگاشت مستقل از دیگری اجرا می‌شوند که‌این ویژگی نشان دهنده‌ی اجرای موازی برنامه‌هاست. همچنین توابع کاهش نیز بطور مستقل و به موازات هم اجرا می‌شوند. در صورتی که یکی از ماشین‌های شبکه برای مدت زمان خاصی جوابی نرسد، آن ماشین بعنوان ماشین متوقف شده39 شناخته می‌شود و وظایفش به ماشین دیگری محول می‌شود [4]. لذا مدیریت اجرای برنامه هنگام بروز خطا بعهده‌ی این چارچوب نرم‌افزاری است.
2-3- آپاچی هدوپ
آپاچی هدوپ40 چارچوب نرم افزاری است که قادر به اجرای برنامه‌ها بصورت توزیع یافته، روی کلاسترهای بزرگی از کامپیوترهاست [16]. هدوپ کاربران را قادر می‌سازد تا بتوانند چندین پتابایت41 داده را بصورت توزیع یافته روی کلاسترهایی از هزاران کامپیوتر بطور موازی اجرا کنند. هدوپ از چارچوب نرم افزاری نگاشت‌کاهش و سیستم فایل گوگل42، مشتق شده‌است که با همکاری چندین شرکت [17] با زبان برنامه نویسی جاوا43 پیاده سازی شده‌است. شرکت یاهو بیشترین سهم را در تولید هدوپ دارد و بطور گسترده از این چارچوب استفاده می‌کند [18]. در شکل ‏2-4 تعدادی از شرکت‌هایی که از هدوپ استفاده می‌کنند و در شکل ‏2-5 نیز یک کلاستر هدوپ نشان داده شده‌است.
شکل ‏2-4: برخی از شرکت‌هایی که از هدوپ استفاده می‌کنند

در این سایت فقط تکه هایی از این مطلب با شماره بندی انتهای صفحه درج می شود که ممکن است هنگام انتقال از فایل ورد به داخل سایت کلمات به هم بریزد یا شکل ها درج نشود

شما می توانید تکه های دیگری از این مطلب را با جستجو در همین سایت بخوانید

ولی برای دانلود فایل اصلی با فرمت ورد حاوی تمامی قسمت ها با منابع کامل

اینجا کلیک کنید

[منبع [19]]
شکل ‏2-5: نمونه‌ای از یک کلاستر هدوپ
[منبع [20]]
آپاچی هدوپ از دو مولفه اصلی تشکیل شده‌است. برای اجرای برنامه‌ها، چارچوب نرم افزاری نگاشت‌کاهش را پیاده سازی می‌کند و برای ذخیره‌ی داده‌ها روی ماشین‌های پردازشگر، یک فایل سیستم توزیع یافته44 را فراهم می‌کند. نگاشت‌کاهش و سیستم فایل توزیع یافته طوری طراحی شده‌اند که هرگونه مشکل و عدم موفقیت در اجرای برنامه‌ها را بطور خودکار مدیریت و برطرف می‌کنند [16]. لذا کاربر کافیست تمرکز خود را روی برنامه‌ی خود معطوف کند و بدون داشتن دانشی درباره مباحث شبکه و مسائل اجرای توزیع یافته، برنامه اش را به شکل توزیع شده‌ای اجرا کند.
2-3-1- فایل سیستم توزیع یافته هدوپ (HDFS)
HDFS یک فایل سیستم توزیع یافته45، مقیاس پذیر46 و قابل حمل47 است که با زبان جاوا برای چارچوب هدوپ پیاده سازی شده‌است. این فایل سیستم می‌تواند داده‌های با حجم بسیار بالا را روی چندین ماشین ذخیره کند [21].
HDFS متادیتای مربوط به فایل سیستم و داده‌های نرم‌افزارها را بطور جداگانه نگهداری می‌کند. HDFS همانند سایر فایل سیستم‌های توزیع شده همانند PVFS [22, 23]، Lustre [24] و GFS [25, 26] متادیتا را روی یک سرور اختصاصی ذخیره می‌کند. این سرور اختصاصی در HDFS، NameNode نام دارد. داده‌های نرم‌افزارها روی سایر سرورها بنام DataNode ذخیره می‌شوند. تمامی سرورها به همدیگر متصل بوده و با پروتکل TCP/IP با یکدیگر تبادل داده دارند. برخلاف PVFS و Lustre، DataNodeها در HDFS از مکانیزم‌هایی همچون RAID [27] برای محافظت از داده‌ها استفاده نمی‌کنند. بلکه همانند GFS برای افزایش قابلیت اطمینان48، داده‌ها بصورت تکراری روی چندین DataNode ذخیره می‌شوند. محتوای فایل‌ها به بلاک‌های بزرگی تقسیم بندی می‌شود و هر بلاک مستقل از سایر بلاک‌ها در چند DataNode بصورت تکراری ذخیره می‌شود. تعداد تکرار داده‌ها بصورت پیش فرض برابر با سه‌است. اما کاربر بسته به نیاز می‌تواند آن را تغییر دهد [20].
در شکل ‏2-6 یک کلاستر هدوپ نشان داده شده‌است که از یک NameNode و چهار DataNode تشکیل شده‌است. همچنین نحوه ذخیره یک فایل متشکل از 4 بلاک نیز در شکل نشان داده شده‌است. NameNode می‌داند که هر فایل از کدام بلاک‌ها تشکیل شده‌است و این بلاک‌ها در کدام DataNodeها قرار دارند. در شکل ‏2-7 نحوه نوشتن فایل‌ها روی HDFS نمایش داده شده‌است. هنگام ایجاد یک فایل روی سیستم فایل، ابتدا کلاینت HDFS، آدرس فایل را به NameNode می‌دهد. NameNode به ازای هر بلاک از فایل، لیستی از DataNode‌هایی که می‌توانند بلاک‌ها را در خود ذخیره کنند را برمی‌گرداند. سپس کلاینت، بلاک‌ها را به روش لوله‌ای49 در DataNodeها ذخیره کرده و پیغام تایید50 به NameNode ارسال می‌شود. هنگام خواندن یک فایل از روی HDFS نیز ابتدا کلاینت آدرس بلاک‌های فایل مورد نظر را از NameNode دریافت کرده و سپس بلاک‌ها را از نزدیکترین DataNode می‌خواند.
شکل ‏2-6: ذخیره فایل در فایل سیستم توزیع شده هدوپ
[منبع[28]]

شکل ‏2-7: نحوه نوشتن فایل درHDFS
]منبع [20][
علاوه‌براین HDFS شامل بخش دیگری به نام Secondary Namenode است. وظیفه‌ی این قسمت، این است که در بازه‌های زمانی منظم از ساختار حافظه‌ی Namenode تصویری51 تهیه می‌کند. این تصاویر باعث می‌شود زمانی که Namenode دچار مشکل شده و بطور غیرمعمول از اجرا خارج می‌شود، بتواند مجددا شروع به کار کند. بدون اینکه نیاز باشد بسیاری از اعمال را مجددا انجام دهد [21].
2-3-2- چارچوب نگاشت‌کاهش(MapReduce)
روی فایل سیستم توزیع شده(HDFS)، موتور نگاشت‌کاهش قرار می‌گیرد که از یک دنبال کننده برنامه یا JobTracker تشکیل شده‌است. نرم افزارهای کلاینت برای اجرای برنامه‌ها ابتدا برنامه را به JobTracker ارسال می‌کنند. ماشین‌های پردازشگر دارای یک دنبال‌کننده وظیفه یا TaskTracker برای اجرای وظایف دریافتی هستند. هنگامی که JobTracker یک برنامه را دریافت می‌کند آن را به چند وظیفه52 تقسیم کرده و وظایف را برای اجرا بین TaskTracker‌های موجود توزیع می‌کند. وظایف طوری بین TaskTrackerها توزیع می‌شود که داده‌های هر وظیفه در نزدیکترین مکان به آن TaskTracker باشد. در سیستم فایل‌های آگاه به قفسه53، JobTracker می‌داند که کدام ماشین حاوی داده موردنظر است و کدام ماشین‌ها مجاور یکدیگر قرار دارند. اگر JobTracker نتواند وظیفه را به ماشینی که داده در آن قرار دارد بدهد، اولویت با ماشینی است که در همان قفسه54 قرار دارد. این کار باعث کاهش ترافیک در شبکه اصلی می‌‌شود. درصورتی که یک TaskTracker موفق به انجام وظیفه خود نشود یا فرصت اجرای برنامه به اتمام برسد، آن بخش از برنامه مجددا برای اجرا زمانبندی و به TaskTracker دیگری ارسال می‌شود. در شکل ‏2-8 ارتباط بین این اجزا نمایش داده شده‌است. همانطور که در شکل مشاهده می‌شود، NameNode و JobTracker در ماشین Master اجرا می‌شوند و DataNode و TaskTracker در ماشین‌های Slave اجرا می‌شوند. کاربر برنامه‌ی موردنظر را به ماشین Master داده و این ماشین، برنامه را بین ماشین‌های Slave تقسیم و اجرا می‌کند. ماشین Master بطور خودکار اجرای برنامه را مدیریت می‌کند.
شکل ‏2-8: ساختار کلی یک کلاستر هدوپ
[منبع [29]]

فصل سوم
مروری بر تحقیقات انجام شده

3- مروری بر تحقیقات انجام شده


پاسخ دهید