این خدمات، امکان دسترسی به منابع رایانشی اصلی همچون توان پردازش، رسانه های ذخیره سازی و شبکه ها را برای مصرف کنندگان فراهم می آورد.
(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت nefo.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))
مدلهای خدمات رایانش ابری:
ابر عمومی[۲۲]:
این خدمات در معرض استفاده عموم قرار می گیرد و منابع رایانشی بصورت اشتراکی مورد استفاده مصر ف کنندگان قرار می گیرد. این مدل، رایانش ابری محض است. کلیه مشخصات و ویژگی های رایانش ابری در این مدل بطور واضح دیده می شود.
ابر خصوصی[۲۳]:
در این مدل رایانش ابری در سطح دپارتمان ها و بخش های یک سازمان پیاده سازی می شود. سازمان ها، سرویس دهنده ها، نرم افزارها و داده هایشان را در مراکز داده خود داشته باشند. به عبارت دیگر منابع رایانشی و خدمات توسط بخش های مختلف صرفا یک سازمان، اما در چارچوب فناوری رایانش ابری مورد استفاده قرار می گیرد.
ابر گروهی[۲۴]:
در این مدل خدمات ابری صرفا برای گروه مشخصی از سازمان ها تدارک دیده شده است. کلیه خدمات ابرهای عمومی در این مدل هم ارائه می شود تنها مصرف کنندگان به مجموعه مشخصی محدود می شوند.
ابر ترکیبی[۲۵]:
مصرف کننده در این مدل بخشی از نیازهای IT خود را به کمک ابرهای عمومی، بخشی را با ابرهای گروهی و بخشی را در ابرهای خصوصی و یا حتی با راهکارهای سنتی IT تامین میکند.
نگاشتکاهش
نگاشتکاهش یک مدل برنامهنویسی در مورد محاسبات توزیع شده بر روی حجم بالایی از دادهها میباشد. همچنین نگاشتکاهش یک چارچوب نرمافزاری است که در سال ۲۰۰۴ توسط گوگل برای پردازش توزیع شدهی دادههای با مقیاس بالا توسط کلاسترهایی از کامپیوترها ارائه شد [۷]. این چارچوب در زمینههای مختلفی همچون مرتب سازی توزیع یافته[۲۶]، ساخت اندیس معکوس[۲۷]، کلاستربندی اسناد[۲۸] و فراگیری ماشین[۲۹] [۸]مورد استفاده قرار گرفتهاست. همچنین مدل نگاشتکاهش برای استفاده در محیطهای مختلف رایانشی مانند سیستمهای چند هستهای[۳۰] [۹, ۱۰]، محیطهای رایانشی داوطلبانه[۳۱] [۱۱]، محیطهای ابری پویا[۳۲] [۱۲] و محیطهای سیار[۳۳] [۱۳] نیز تطبیق سازی شدهاست کرد [۴]. بعنوان مثال شرکت گوگل برای اینکهایندکسهایش را مجددا بطور کامل ایجاد کند از مدل نگاشتکاهش استفاده کرد [۱۴]. لذا این مدل برنامه نویسی بشکل وسیعی در زمینه رایانش ابری مورد استفاده قرار گرفتهاست و پیاده سازیهای مختلفی از این مدل برنامه نویسی، در ابرهای شرکتهای بزرگ مانند گوگل و فیسبوک[۳۴] مورد استفاده قرار گرفته است.
مدل نگاشتکاهش همانطور که در نشان داده شدهاست از دو تابع اصلی تشکیل شدهاست. تابع نگاشت[۳۵] ورودی را در قالب جفتهای کلید/مقدار[۳۶] دریافت و پردازش میکند و بعنوان خروجی جفتهای کلید/مقدار میانی را برمیگرداند. کتابخانهی نگاشتکاهش[۳۷]، تمامی مقدارهای میانی که دارای کلید برابر هستند را در یک گروه جمع آوری کرده و به تابع کاهش[۳۸] ارسال میکند. ورودی تابع کاهش، یک کلید و لیستی از مقادیر مربوط به آن کلید است که پس از پردازش، خروجی نهایی را بر میگرداند [۳]. همچنین در مراحل اصلی مدل و نیز مسیر حرکت دادهها در این مدل برنامه نویسی بشکل مصور نشان داده شده است.
شکل ۲‑۱: مراحل مدل نگاشت کاهش
شکل ۲‑۲: شمای کلی مدل برنامه نویسی نگاشت کاهش
[برگرفته از مقاله شماره [۱۵]]
برای آشنایی بیشتر با مدل نگاشتکاهش، در نحوه اجرای برنامه WordCount نشان داده شدهاست. این برنامه فایل متنی را دریافت کرده و تعداد تکرار هر کلمه را محاسبه میکند. ورودی تابع نگاشت، یک جفت شامل آدرس شروع یک خط و محتوای آن خط میباشد و بعنوان خروجی، هر کلمه به همراه عدد یک را برمیگرداند. در مرحلهی shuffling، جفتهایی که کلید برابر دارند تشکیل یک لیست را میدهند که هر لیست به یک تابع کاهش ارسال میشود. خروجی تابع کاهش، جفتی شامل کلمه و تعداد تکرار آن میباشد.
شکل ۲‑۳: نحوه اجرای برنامه WordCount در نگاشتکاهش
نگاشتکاهش اجازه میدهد تا عملیات نگاشت و کاهش بصورت توزیع یافته اجرا شود. هر یک از توابع نگاشت مستقل از دیگری اجرا میشوند کهاین ویژگی نشان دهندهی اجرای موازی برنامههاست. همچنین توابع کاهش نیز بطور مستقل و به موازات هم اجرا میشوند. در صورتی که یکی از ماشینهای شبکه برای مدت زمان خاصی جوابی نرسد، آن ماشین بعنوان ماشین متوقف شده[۳۹] شناخته میشود و وظایفش به ماشین دیگری محول میشود [۴]. لذا مدیریت اجرای برنامه هنگام بروز خطا بعهدهی این چارچوب نرمافزاری است.
آپاچی هدوپ
آپاچی هدوپ[۴۰] چارچوب نرم افزاری است که قادر به اجرای برنامهها بصورت توزیع یافته، روی کلاسترهای بزرگی از کامپیوترهاست [۱۶]. هدوپ کاربران را قادر میسازد تا بتوانند چندین پتابایت[۴۱] داده را بصورت توزیع یافته روی کلاسترهایی از هزاران کامپیوتر بطور موازی اجرا کنند. هدوپ از چارچوب نرم افزاری نگاشتکاهش و سیستم فایل گوگل[۴۲]، مشتق شدهاست که با همکاری چندین شرکت [۱۷] با زبان برنامه نویسی جاوا[۴۳] پیاده سازی شدهاست. شرکت یاهو بیشترین سهم را در تولید هدوپ دارد و بطور گسترده از این چارچوب استفاده میکند [۱۸]. در تعدادی از شرکتهایی که از هدوپ استفاده میکنند و در نیز یک کلاستر هدوپ نشان داده شدهاست.
شکل ۲‑۴: برخی از شرکتهایی که از هدوپ استفاده میکنند
[منبع [۱۹]]
شکل ۲‑۵: نمونهای از یک کلاستر هدوپ
[منبع [۲۰]]
آپاچی هدوپ از دو مولفه اصلی تشکیل شدهاست. برای اجرای برنامهها، چارچوب نرم افزاری نگاشتکاهش را پیاده سازی میکند و برای ذخیرهی دادهها روی ماشینهای پردازشگر، یک فایل سیستم توزیع یافته[۴۴] را فراهم میکند. نگاشتکاهش و سیستم فایل توزیع یافته طوری طراحی شدهاند که هرگونه مشکل و عدم موفقیت در اجرای برنامهها را بطور خودکار مدیریت و برطرف میکنند [۱۶]. لذا کاربر کافیست تمرکز خود را روی برنامهی خود معطوف کند و بدون داشتن دانشی درباره مباحث شبکه و مسائل اجرای توزیع یافته، برنامه اش را به شکل توزیع شدهای اجرا کند.
فایل سیستم توزیع یافته هدوپ (HDFS)
HDFS یک فایل سیستم توزیع یافته[۴۵]، مقیاس پذیر[۴۶] و قابل حمل[۴۷] است که با زبان جاوا برای چارچوب هدوپ پیاده سازی شدهاست. این فایل سیستم میتواند دادههای با حجم بسیار بالا را روی چندین ماشین ذخیره کند [۲۱].
HDFS متادیتای مربوط به فایل سیستم و دادههای نرمافزارها را بطور جداگانه نگهداری میکند. HDFS همانند سایر فایل سیستمهای توزیع شده همانند PVFS [22, 23]، Lustre [24] و GFS [25, 26] متادیتا را روی یک سرور اختصاصی ذخیره میکند. این سرور اختصاصی در HDFS، NameNode نام دارد. دادههای نرمافزارها روی سایر سرورها بنام DataNode ذخیره میشوند. تمامی سرورها به همدیگر متصل بوده و با پروتکل TCP/IP با یکدیگر تبادل داده دارند. برخلاف PVFS و Lustre، DataNodeها در HDFS از مکانیزمهایی همچون RAID [27] برای محافظت از دادهها استفاده نمیکنند. بلکه همانند GFS برای افزایش قابلیت اطمینان[۴۸]، دادهها بصورت تکراری روی چندین DataNode ذخیره میشوند. محتوای فایلها به بلاکهای بزرگی تقسیم بندی میشود و هر بلاک مستقل از سایر بلاکها در چند DataNode بصورت تکراری ذخیره میشود. تعداد تکرار دادهها بصورت پیش فرض برابر با سهاست. اما کاربر بسته به نیاز میتواند آن را تغییر دهد [۲۰].
در یک کلاستر هدوپ نشان داده شدهاست که از یک NameNode و چهار DataNode تشکیل شدهاست. همچنین نحوه ذخیره یک فایل متشکل از ۴ بلاک نیز در شکل نشان داده شدهاست. NameNode میداند که هر فایل از کدام بلاکها تشکیل شدهاست و این بلاکها در کدام DataNodeها قرار دارند. در نحوه نوشتن فایلها روی HDFS نمایش داده شدهاست. هنگام ایجاد یک فایل روی سیستم فایل، ابتدا کلاینت HDFS، آدرس فایل را به NameNode میدهد. NameNode به ازای هر بلاک از فایل، لیستی از DataNodeهایی که میتوانند بلاکها را در خود ذخیره کنند را برمیگرداند. سپس کلاینت، بلاکها را به روش لولهای[۴۹] در DataNodeها ذخیره کرده و پیغام تایید[۵۰] به NameNode ارسال میشود. هنگام خواندن یک فایل از روی HDFS نیز ابتدا کلاینت آدرس بلاکهای فایل مورد نظر را از NameNode دریافت کرده و سپس بلاکها را از نزدیکترین DataNode میخواند.
شکل ۲‑۶: ذخیره فایل در فایل سیستم توزیع شده هدوپ
[منبع[۲۸]]
شکل ۲‑۷: نحوه نوشتن فایل درHDFS
]منبع [۲۰][
علاوهبراین HDFS شامل بخش دیگری به نام Secondary Namenode است. وظیفهی این قسمت، این است که در بازههای زمانی منظم از ساختار حافظهی Namenode تصویری[۵۱] تهیه میکند. این تصاویر باعث میشود زمانی که Namenode دچار مشکل شده و بطور غیرمعمول از اجرا خارج میشود، بتواند مجددا شروع به کار کند. بدون اینکه نیاز باشد بسیاری از اعمال را مجددا انجام دهد [۲۱].
چارچوب نگاشتکاهش(MapReduce)
روی فایل سیستم توزیع شده(HDFS)، موتور نگاشتکاهش قرار میگیرد که از یک دنبال کننده برنامه یا JobTracker تشکیل شدهاست. نرم افزارهای کلاینت برای اجرای برنامهها ابتدا برنامه را به JobTracker ارسال میکنند. ماشینهای پردازشگر دارای یک دنبالکننده وظیفه یا TaskTracker برای اجرای وظایف دریافتی هستند. هنگامی که JobTracker یک برنامه را دریافت میکند آن را به چند وظیفه[۵۲] تقسیم کرده و وظایف را برای اجرا بین TaskTrackerهای موجود توزیع میکند. وظایف طوری بین TaskTrackerها توزیع میشود که دادههای هر وظیفه در نزدیکترین مکان به آن TaskTracker باشد. در سیستم فایلهای آگاه به قفسه[۵۳]، JobTracker میداند که کدام ماشین حاوی داده موردنظر است و کدام ماشینها مجاور یکدیگر قرار دارند. اگر JobTracker نتواند وظیفه را به ماشینی که داده در آن قرار دارد بدهد، اولویت با ماشینی است که در همان قفسه[۵۴] قرار دارد. این کار باعث کاهش ترافیک در شبکه اصلی میشود. درصورتی که یک TaskTracker موفق به انجام وظیفه خود نشود یا فرصت اجرای برنامه به اتمام برسد، آن بخش از برنامه مجددا برای اجرا زمانبندی و به TaskTracker دیگری ارسال میشود. در ارتباط بین این اجزا نمایش داده شدهاست. همانطور که در شکل مشاهده میشود، NameNode و JobTracker در ماشین Master اجرا میشوند و DataNode و TaskTracker در ماشینهای Slave اجرا میشوند. کاربر برنامهی موردنظر را به ماشین Master داده و این ماشین، برنامه را بین ماشینهای Slave تقسیم و اجرا میکند. ماشین Master بطور خودکار اجرای برنامه را مدیریت میکند.
شکل ۲‑۸: ساختار کلی یک کلاستر هدوپ
[منبع [۲۹]]
فصل سوم
مروری بر تحقیقات انجام شده
مروری بر تحقیقات انجام شده
استفاده از حداکثر توان ماشین ها و رسیدن به بالاترین سرعت ممکن در پردازش ها یکی از زمینه هایی است که در سال های اخیر بسیار مورد توجه محققان قرار گرفته است. لذا محققان همیشه سعی در استفاده حداکثری از توان پردازندهها و حافظه اصلی داشته اند که با ایجاد واحد پردازش گرافیکی چند منظوره[۵۵] تلاش های بسیاری نیز برای استفاده از این قدرت بالقوه در کناره پردازنده مرکزی صورت گرفته است. در ادامه برخی از تلاش هایی که برای استفاده بهینه از این منابع صورت گرفته ذکر شده است. این تلاش ها بطور خاص در خصوص استفاده بهینه از پردازنده و واحد پردازش گرافیکی و افزایش سرعت پردازش در مدل برنامه نویسی نگاشتکاهش میباشند. بعنوان مثال، [۳۰] به دنبال ارائه یک چارچوب مبتنی بر نگاشتکاهش بر روی GPU است. با توجه به اینکه پردازنده گرافیکی مورد استفاده در این مقاله محصول شرکت انویدیا[۵۶] است لذا در این مقاله از پلتفرم CUDA[57] با زبان برنامه نویسی C++ برای ایجاد برنامه خود براساس مدل نگاشتکاهش، که پردازش داده متنی است، استفاده می کند. طبق چارچوب ارائه شده سرعت پردازش نسبت به حالتی که برنامه روی CPU اجرا شده است ۳۲ بار سریعتر است. لذا با استفاده بهینه از توان پردازشی GPU سرعت را افزایش داده است. نکته ای که در این مقاله باید مورد توجه قرار گیرد این است که پیاده سازی انجام شده روی تنها یک ماشین بوده و برنامه روی فقط یک ماشین اجرا شده است. لذا مسائلی همچون زمان ارسال داده ها روی شبکه، ترافیک شبکه و سایر مسائل زمان اجرای برنامه روی شبکه مورد بررسی قرار نگرفته است.
یکی از زمینه هایی که با حجم بالایی از تصاویر سروکار دارد ستارهشناسی[۵۸] است. در این زمینه ما با تصاویر ماهواره ای بسیار زیاد و پردازش های مختلف روی آن ها مواجهیم. لذا تلاشهای بسیاری نیز برای پردازش تصاویر ماهواره ای صورت گرفته است. [۳۱] از الگوریتم ISODATA[59] برای خوشه بندی تصاویر ماهوارهای استفاده می کند. این مقاله برای افزایش سرعت پردازش، الگوریتم ISODATAی موازی مبتنی بر مدل برنامه نویسی نگاشت کاهش را پیاده سازی می کند. در این روش برای پردازش تصاویر، به ازای هر فایل تصویری، تعدادی فایل متنی ایجاد می کند. بطوری که هر خط از فایل متنی مشخص کنندهی مقدار یک پیکسل از تصویر است و برای پردازش تصاویر، محتوای فایل های متنی را پردازش می کند. در این برنامه که روی CPU و کلاستری حاوی ۹ ماشین اجرا شده است، تاثیر تعداد Mapها، حجم داده و تعداد ماشین ها مورد بررسی قرار گرفته است. هر ماشین پردازشگر حاوی ۸ هسته پردازنده و ۸ گیگابایت حافظه اصلی است. همانطور که در مشاهده می شود با توجه به شرایط مساله، زمان پردازش، تقریبا رابطه خطی با افزایش حجم داده ها دارد.
شکل ۳‑۱: تاثیر افزایش داده ها بر زمان پردازش در کلاسترهای مختلف
همچنین در حالتی که حجم داده ورودی ۱۰۰۰ مگابایت است زمان پردازش بین کلاسترهای مختلف تقریبا برابر است اما با افزایش داده ها اختلاف زمان بین کلاسترهای مختلف نیز افزایش می یابد بطوریکه در حالتی که ۸۰۰۰ مگابایت داده داریم زمان پردازش در کلاستری با ۸ ماشین، تقریبا یک سوم حالتی است که ۴ ماشین داریم و این نشان می دهد که هرچه کلاستر بزرگتر و داده ها بیشتر باشد، عملکرد هدوپ بهتر و کارایی نیز بیشتر است. علاوه براین در ادامه ی مقاله همانطور که در نشان داده شده است، بیان میشود که تغییر تعداد Map Taskهایی که بطور همزمان در هر نود اجرا می شود، تاثیر بسزایی در زمان پردازش دارد. انتخاب مقدار مناسب، زمان پردازش را بطور قابل ملاحظه ای کاهش می دهد. افزایش یا کاهش بیش از حد تعداد مپرها تاثیر منفی بر زمان پردازش داشته و سربار ایجاد شده، زمان پردازش را افزایش می دهد. البته در این مقاله مقدار مناسبی را برای تعداد Map Taskها تعیین نکرده و فقط روند کلی را نشان دادهاست.