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- مروري بر تحقيقات انجام شده


پاسخ دهید