گفتارهای پایان نامه
این پایان نامه در شش فصل تهیه شدهاست. فصل اول شامل مقدمه، تشریح صورت مساله و بیان اهداف است. در فصل دوم مبانی نظری و مفهومیتحقیق، شامل مفاهیم علمیپایه و مستندات مرتبط با تحقیق شرح داده شدهاست. فصل سوم به بررسی تحقیقات پیشین و ارتباط منطقی میان اطلاعات پژوهشهای قبلی و مسالهی تحقیق میپردازد.
فصل چهارم، روش انجام تحقیق، ارائه مدل و زیرساخت بکار رفته را در بر میگیرد. فصل پنجم به مقایسه نتایج تحقیق با پژوهشهای پیشین میپردازد و در فصل ششم، نتیجه گیری ارائه میگردد .
فصل دوم
مبانی نظری تحقیـق
مبانی نظری تحقیق
رایانش ابری
امروزه دنیای فناوری اطلاعات و اینترنت روز به روز در حال گسترش و توسعه است. همسو با آن نیازهای دیگری مانند امنیت اطلاعات، پردازش سریع، صرفهجویی در زمان و هزینه و … اهمیت زیادی یافته است. لذا شرکتهای کامپیوتری همواره به دنبال راهی برای رفع نیازهای کاربران و ارتقای خدمات خود بوده و در این میان شرکتهایی که خدمات بهتر و سریعتری ارائه دهند برندهی این میدان خواهند بود. راه حلی که امروزه برای اینگونه مشکلات پیشنهاد میشود فناوری جدیدی است به نام رایانش ابری، که به شدت توسط شرکتهای مختلف و نیز کاربران مورد استقبال واقع شده است.
نتیجه تصویری درباره فناوری اطلاعات
در اواخر اولین دهه قرن ۲۱، شاهد توسعه و گسترش بسیار سریع فناوری جدیدی بنام رایانش ابری بودهایم که بطور کلی مدل متفاوتی از رایانش را ارائه میکند. یک سیستم ابری در سادهترین تعریف، ارائه سرویس کامپیوتری روی اینترنت است. به جای آنکه تاسیسات و امکانات فناوری اطلاعات خود را برای نگهداری دادهها و یا نرمافزار هزینه کرده و بسازید، از امکانات شرکتهای دیگر استفاده میکنید. به عبارت دیگر شرکتهایی زیرساختهای خاصی درست میکنند که این امکانات را در اختیار شما قرار میدهند. بدین ترتیب شرکت شما از طریق اینترنت میتواند از دادهها و نرمافزار آنها استفاده کند. از این سیستم به نام ابر یا cloud نام برده میشود [۵].
هنوز تعریف استاندارد علمیکه مورد قبول عام باشد، برای رایانش ابری ارائه نشده است. موسسه ملی فناوری و استانداردها ، رایانش ابری را اینگونه تعریف میکند: “رایانش ابری مدلی است برای داشتن دسترسی فراگیر و آسان و بنا به سفارش شبکه به مجموعه ای از منابع رایانشی پیکره بندی پذیر مثل: شبکه ها ، سرورها ، فضای ذخیره سازی ، برنامه های کاربردی و سرویس ها که بتوانند با کمترین کار و زحمت یا نیاز به دخالت فراهم کنندهی سرویس به سرعت فراهم شده یا آزاد (رها) گردد.”
رایانش ابری پنج مشخصه اساسی دارد و از سه مدل سرویس دهی و چهار مدل پیادهسازی تشکیل شده است که در قسمت زیر به معرفی آن میپردازیم [۶].
برای دانلود متن کامل پایان نامه به سایت zusa.ir مراجعه نمایید.
ویژگیهای اساسی رایانش ابری:
دسترسی سلف سرویس و بنا به تقاضا[۱۴]:
مصرف کنندگان خدمات رایانش ابری، بنا به تقاضا، بدون نیاز به تماس مستقیم با نماینده فروش یا کارمند پشتیبانی فنی، با ورود به حساب کاربری خود از طریق یک وبسایت، میتوانند به منابع رایانشی دسترسی یافته و از خدمات تدارک دیده، استفاده نمایند.
دسترسی تحت شبکه[۱۵]:
به دلیل تحت وب بودن خدمات ابری، به کمک هر وسیله متصل به اینترنت، میتوان از این خدمات استفاده کرد؛ یک مرورگر وب در یک کامپیوتر شخصی، یک پایانهی کامپیوتری و در مواردی حتی ابزارهای دستی مثل iPhone و Blackberry
تجمیع منابع[۱۶]:
در رایانش ابری منابعی که از نظر فیزیکی ممکن است در نقاط مختلفی قرار داشته باشند، در قالب مجموعه ای متمرکز و بصورت اشتراکی در معرض استفادهی مصرف کنندگان قرار میگیرند.
انعطاف پذیری سریع[۱۷]:
فناوری رایانش ابری، انعطاف پذیری قابل توجهی در تامین و تدارک خدمات فراهم میکند؛ منابع بصورت پویا به درخواستها تخصیص داده میشودکه این امر تخصیص یا آزادسازی سریع منابع متناسب با تغییر نیاز مصرف کنندگان را ممکن میسازد. به این ترتیب مشتریان خدمات میتوانند در هر زمان، متناسب با نیازها و شرایط خود، بدون هیچ مقدمهای، از خدمات بیشتر یا کمتری استفاده کنند.
خدمات اندازه گیری شده[۱۸]:
رایانش ابری، امکان کنترل و ثبت خودکار کلیه خدمات مورد استفاده و منابعی که به مشتریان تخصیص داده شده است را فراهم میکند. این امر، پیاده سازی مدل پرداخت به ازای استفاده را برای تامین کنندگان خدمات ممکن میسازد.
مدلهای سرویس دهی رایانش ابری:
نرم افزار بعنوان سرویس[۱۹]:
خدمات نرم افزاری رایانش ابری شامل برنامه های نرم افزاری است که از طریق وب در معرض استفاده مشتریان بالقوه قرار می گیرند. عدم نیاز به نصب برنامه و امکان تعریف سریع و آسان کاربران جدید و به کارگیری مدل پراخت بازای استفاده، این خدمات را به یک فرصت بزرگ برای افراد و سازمان ها تبدیل کرده است.نمونه ی شناخته شده ی این خدمات، پست الکترونیک تحت وب است.
پلتفرم بعنوان سروریس[۲۰]:
این خدمات، پلتفرم های آنلاینی برای ایجاد، تست و راه اندازی برنامه های تحت وب فراهم می کندکه می توانند با بهره گرفتن از ابزارهای برنامه نویسی و توسعه نرم افزار مبتنی بر مرورگر مورد استفاده قرار گیرند. در این روش دیگر نیازی به نصب و پیکربندی پلتفرم ها و ابزارها و برنامه های توسعه نرم افزار نیست.
زیرساخت بعنوان سرویس[۲۱]:
این خدمات، امکان دسترسی به منابع رایانشی اصلی همچون توان پردازش، رسانه های ذخیره سازی و شبکه ها را برای مصرف کنندگان فراهم می آورد.
مدلهای خدمات رایانش ابری:
ابر عمومی[۲۲]:
این خدمات در معرض استفاده عموم قرار می گیرد و منابع رایانشی بصورت اشتراکی مورد استفاده مصر ف کنندگان قرار می گیرد. این مدل، رایانش ابری محض است. کلیه مشخصات و ویژگی های رایانش ابری در این مدل بطور واضح دیده می شود.
ابر خصوصی[۲۳]:
در این مدل رایانش ابری در سطح دپارتمان ها و بخش های یک سازمان پیاده سازی می شود. سازمان ها، سرویس دهنده ها، نرم افزارها و داده هایشان را در مراکز داده خود داشته باشند. به عبارت دیگر منابع رایانشی و خدمات توسط بخش های مختلف صرفا یک سازمان، اما در چارچوب فناوری رایانش ابری مورد استفاده قرار می گیرد.
ابر گروهی[۲۴]:
در این مدل خدمات ابری صرفا برای گروه مشخصی از سازمان ها تدارک دیده شده است. کلیه خدمات ابرهای عمومی در این مدل هم ارائه می شود تنها مصرف کنندگان به مجموعه مشخصی محدود می شوند.
ابر ترکیبی[۲۵]:
مصرف کننده در این مدل بخشی از نیازهای 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 دچار مشکل شده و بطور غیرمعمول از اجرا خارج میشود، بتواند مجددا شروع به کار کند. بدون اینکه نیاز باشد بسیاری از اعمال را مجددا انجام دهد [۲۱].