بسمه الله الرحمن الرحیم
پروژه : اطلاعاتی درباره Hadoopو کاربرد ها آن
استاد : جناب آقای یعقوبی تبار
محقق : محمد جواد رهسپار یگانه
آشنایی باHadoop
تاریخچه
هادوپ توسط Doug Cutting خالق Lucene (کتابخانه پرکاربرد جستجوی متن) ساخته شد. هادوپ در پروژه Nutch (موتور جستجوی بازمتن وب) ریشه دارد که خود بخشی از پروژه Lucene بود.
ساخت موتور جستجوی وب از صفر هدفی بزرگ محسوب میشود چرا که از یکسو نوشتن نرمافزاری که در وبسایتها بخزد و آنها را نمایهسازی کند کاری پیچیده است و از دیگر سو اجرای آم بدون یک تیم عملیاتی تماموقت اختصاصی چالشبرانگیز است.
؛ Nutch در سال ۲۰۰۲ آغاز شد و به سرعت یک خزندهی وب و یک سامانه جستجو برای آن ساخته شد. تیم سازنده دریافتند که معماری آنها برای میلیاردها صفحه روی وب گسترشپذیر نیست. چاپ مقالهای در سال ۲۰۰۳ به آنها کمک کرد که این مساله را حل نمایند. در این سال مقالهای چاپ شد که در آن معماری سیستمفایل توزیعشده گوگل یا همان GFS توضیح داده شده بود و این نیاز آنها به ذخیرهسازی فایلهای بسیار بزرگی که از خروجی فرآیند خزیدن در وب و نمایهسازی آن ساخته شده بود را حل میکرد. در سال۲۰۰۴ آنها آغاز به پیادهسازی نسخهای بازمتن از آن کردند و آن را سیستمفایل توزیع شده ناچ (NDFS) نامیدند.
سال ۲۰۰۴ گوگل مقالهی دیگری چاپ کرد که در آن MapReduce را به جهانیان معرفی کرد. اوایل سال ۲۰۰۵ سازندگانNutch نسخهی پیادهسازی شده از MapReduce را ساخته بودند و در میانه سال همهی الگوریتمهای اصلی Nutch برای کار با MapReduce و NDFS تغییر یافته بودند.
نسخهی پیادهسازی شده از MapReduce و NDFS در Nutch برای کاربریهایی فراتر از جستجو نیز کاربرد داشت بنابراین در آغاز ۲۰۰۶ آنها از Nutch جدا ومستقل شده وHadoop نام گرفتند.
تقریباً همزمان با این کار Doug Cutting به یاهو پیوست که تیم و منابع اختصاصی را برای کار بر روی هادوپ فراهم کرده بود تا آن را به سیستمی برای کار در مقیاس وب تبدیل کند.
در فوریه ۲۰۰۸ یاهو اعلام کرد که نمایه جستجوی آن توسط کلاستری از هادوپ با ۱۰۰۰۰هسته ساخته میشود.
در ژانویه ۲۰۰۸ هادوپ یک پروژه سطح بالای بنیاد آپاچی شد که نشان دهنده موفقیت، مقبولیت و جامعه کاربری فعال آن است.
تا این زمان هادوپ توسط شرکتهای بسیاری دیگری جز یاهو نیز بکار گرفته شده است. از آن جملهاند Last.fm، فیس بوک و نیویورک تایمز.
در یک کار جالب نییورک تایمز از سرویس ابری EC2 آمازون استفاده کرد تا ۴ ترابایت صفحه اسکن شده را به PDF مناسب برای وب تبدیل نماید پردازش با استفاده از ۱۰۰سرور کمتر از ۲۴ ساعت زمان برد.
( واحدهای حافظه )
در آوریل ۲۰۰۸ هادوپ رکورد جهانی را شکست و تیدیل به سریعترین سیستم مرتبسازی یک ترابایت داده شد. با اجرا روی کلاستری با ۹۱۰ گره، هادوپ یک ترابایت را در ۲۰۹ ثانیه (کمتر از ۳/۵ دقیقه) مرتب کرد و از رکورد سال پیش که ۲۹۷ ثانیه بود گذشت.
در نوامبر گوگل اعلام کرد که پیادهسازی MapReduce یک ترابایت را در ۶۸ ثانیه مرتب کرده است. در می ۲۰۰۹ یاهو اعلام کرد که توانسته یک ترابایت را با استفاده از هادوپ در۶۲ ثاتیه مرتب نماید.
در سال ۲۰۱۰ هادوپ با اقبال عمومی روبرو شده است.
هدوپ چیست ؟
؛ Hadoop یک چارچوب متن باز برای ذخیره سازی و پردازش داده های بزرگ است که در ابتداDoug Cutting در شرکت Apache آن را ارائه داد و نام فیل اسباب بازی فرزندش را روی آن نهاد، هدف اصلی آنها از تولید این ابزار استفاده از آن در موتور جستجوی Apache به نامNutch بود که پس از آن بسیاری از شرکت های بزرگ مانند Facebook ، Google ، Yahoo و… از آن استفاده کردند. این تکنولوژی با ترکیب و توزیع داده به ذخیره سازی آن می پردازد و به زبان جاوا پیاده سازی شده است. بسیاری از داده هایی که سیستم های امروزی با آن سر و کار دارند داده های دارای ساختار هستند مانند یک فایل اکسل ، اما Hadoop کارایی تحلیل و پردازش داده های ساختارمند و غیر ساختارمند را نیز دارد.
برای نمونه علاوه بر پردازش و ذخیره سازی ، از Hadoop برای ذخیره اطلاعات ساخت نیافته یا شبه ساخت یافته در پایگاه داده های NoSql نیز استفاده می شود.از آنجاییکه پایگاه داده های رابطه ای پس از بزرگ شدن داده ها و پخش داده ها روی سرورهای مختلف کارایی بالای خود رو از دست می دهند حرکت به سوی پایگاه داده های NoSql آغاز شد و امروز Hadoop بستری برای NoSql می باشد.
؛Hadoop DFS
در شکل مولفه های سیستم فایل توزیع شده ی Hadoop نشان داده شده است. Hadoopبرای ذخیره سازی اطلاعات آنها را به تکه های کوچکتر تقسیم می کند و هر تکه را روی یک نود ذخیره کرده و آدرس آن را نگه داری می کند. اندازه ی بلاک ها یا همان تکه ها بطور پیش فرض 64 مگابایت می باشد ولی قابل افزایش است، همچنین به طور پیش فرض هر بلاک روی سه ماشین ذخیره می شود که این عمل باعث افزایش کارایی پردازش ها و ذخیره مطمئن داده ها می شود[1]. در این بخش نود های سرور به دو نوع (Master and Slave) تقسیم می شوند که نود های Master وظیفه ی کنترل نودهای دیگر را بر عهده دارد و با نام NameNodeمشخص شده اند ، گاهی در یک سیستم دو NameNode خواهیم داشت که آنها داده ها را برای نودهای دیگر ارسال می کنند تا نودهای جانبی داده ها را ذخیره کنند. از وظایف دیگر آنها می توان به موارد زیر اشاره کرد :
1- ذخیره و مدیریت داده های مربوط به FS
2- دریافت محل بلوکها از DataNode ها
3- نگهداری شماره و محل بلاکهایی که تشکیل یک فایل را می دهند
4- مدیریت و ارسال مجدد بلاکهای گم شده
5- کنترل نوع دسترسی(خواندن و نوشتن) به فایلها
نودهای Slave با نام DataNode مشخص می شوند و تعداد آنها بیش از یک مورد خواهد بود و گاهی اوقات با توجه به توان و کارایی سیستم به صدها و هزاران نود می رسد.وظیفه ی نود های Slave که در واقع همان سرور های جانبی هستند ذخیره سازی اطلاعات روی هارد دیسک خود می باشد.علاوه بر این آنها باید در مورد بلاکهایی که
در اختیار دارند به NameNode ها اطلاع دهند و به درخواست های خواندن و نوشتن روی داده ها پاسخ دهند.
یکی از مکانیزم های دیگری که در HDFS برای افزایش تحمل خطا وجود دارد رونوشت داده ها می باشد ، بطوریکه هر بلاک داده روی چندین سرور ذخیره می شود و اگر بلاکی گم شد یا سرور دچار مشکل شد امکان بازیابی آن وجود داشته باشد. با اعمال Data Replication علاوه بر افزایش تحمل خطا و خرابی در سیستم ، نیازی به استفاده از تکنولوژی RAID نمی باشد و در استفاده از فضای دیسک صرفه جویی می شود.
؛MapReduce
نگاشت – کاهش یک مدل برنامه نویسی موازی جهت پردازش داده های موجود روی کلاسترها می باشد که از دو مرحله ی نگاشت و کاهش جهت پردازش داده ها تشکیل شده است.از استفاده های آن می توان به موارد زیر اشاره کرد :
ü گوگل : ایندکس کردن صفحات برای SE ، تحلیل ترجمه گوگل و…
ü یاهو: جستجوی نقشه یاهو ، شناسایی هرزنامه ها
ü فیسبوک: داده کاوی ، بهینه سازی تبلیغات و شناسایی هرزنامه ها
تعاریف :
1- فاز نگاشت : نودهای Master داده ها را به بلاک هایی تقسیم می کنند و آنها را در اختیار نودهای Slave قرار می دهند، گاهی اوقات نود Slave نیز خود این کار را انجام می دهد.
2- فاز کاهش : داده های تکه تکه شده پس از بر خوردن در اختیار تابع کاهش قرار می گیرند و این تابع بر اساس مقدار کلید آنها داده های مربوط به یک فایل یا پردازش را با هم ترکیب می کند.
علاوه بر موارد ذکر شده در نگاشت-کاهش به هر برنامه ی کامل یک Job و به اجرای هر یک از دو فاز مذکور Task گفته می شود.بنابراین یک Job روی نود Master و Task روی نودهای Slaveاجرا می شود.
اعمال موجود در نگاشت-کاهش:
1-Job Tracker : در این تابع عملیات از کاربران دریافت می شود، سپس وظایف Map و Reduceدر قالب تابع Task Tracker به نودهای Slave محول می شود. زمانبندی ، برنامه ریزی و مدیریت وظایف نیز در این بخش کنترل می شود و در صورت ایجاد مشکل در انجام یک وظیفه مجددا آن را فراخوانی و اجرا می کند.
2-Task Tracker : این تابع وظایف نگاشت و کاهش محول شده توسط Job Tracker را اجرا میکند و پس از تولید نتایج آنرا برای بخش بعدی می فرستد.
تحمل خطا در نگاشت-کاهش
1- اگر یک Task با خطا مواجه شود : آن عمل روی نود دیگر تکرار می شود، بنابراین نگاشت با مشکلی مواجه نمی شود چون وابسته به نودها نمی باشد و همچنین کاهش نیز مشکلی نخواهد داشت چرا که خروجی ها در دیسک ها هستند.
2- اگر یک نود با خطا مواجه شود : عمل کنونی این نود و همه ی نگاشت های انجام شده توسط آن روی نود دیگری مجددا اجرا می شوند.
3- اگر یک Task با سرعت اجرا نشود : یک کپی از آن عمل روی نود دیگری گرفته شده و اجرا می شود ، از نتیجه ی عملی که زودتر به پایان برسد استفاده شده و دیگری kill می شود.
سیستم بدین صورت عمل میکند که اطلاعات دریافت شده به صورت تکه تکه (بطور پیشفرض بلاک های ۶۴ مگابایتی) در آمده و هر تکه در یک سرور جداگانه ذخیره می شود. در تصویر بالا سرور Name node در واقع همان سرور اصلی (Master) می باشد که وظیفه ی کنترل سرور های دیگر (Slave) را به عهده دارد. بخش Map Reduce نیز بر روی سرور اصلی اجرا می شود و بخش HDFS یا همان Hadoop Distributed File System بر روی سرورهای جانبی اجرا می شود. سرورهای جانبی وظیفه ی ذخیره سازی اطلاعات را بر روی هارد دیسک های خود به عهده دارند. یعنی زمانی که کاربر درخواست فراخوانی یک فایل را صادر می کند، سرور اصلی از طریق آدرس هایی که در اختیار دارد، بلاک های مورد نظر را از سرور های مختلف فراخوانی کرده و پس از سر هم کردن و تکمیل کردن فایل، آن را به کاربر تحویل می دهد.
امّا نکته ی جالب ماجرا مربوط به Data Replication می شود. الگوریتم این برنامه طوری نوشته شده است که چندین نسخه کپی از بلاک ها بر روی دیگر سرور ها قرار می گیرد و این امر دو مزیت بزرگ دارد: اول این که شما در مقابل خطاهای سخت افزاری از قبیل سوختن هارد دیسک، اشکالات سخت افزاری سرورها و … در امان هستید و در صورتی که هر یک از سرور ها به دلایلی از شبکه خارج شوند، اطلاعات مورد نظر از روی سرور های دیگر فراخوانی می شوند. مزیت دوم این قابلیت این است که شما دیگر نیازی به استفاده از تکنولوژی RAID ندارید و می توانید از حداکثر فضای هارد دیسک های خود استفاده کنید!!
هدوپ برای چه اهدافی کاربرد دارد؟
سیستم هدوپ در واقع برای ذخیره سازی و فراخوانی اطلاعات حجیم (در حد گیگابایت، ترابایت و یا حتی پتابایت) مورد استفاده قرار می گیرد. این اطلاعات می تواند شامل فایل و یا پردازش باشد. برای مثال چندی قبل شرکت یاهو که بزرگترین سیستم هدوپ را در اختیار دارد، موفق شد رقم ۲،۰۰۰،۰۰۰،۰۰۰،۰۰۰،۰۰۰ام عدد پی و چند رقم بعد و قبل آن را محاسبه کند !! جالب است بدانید که این عملیات که بر روی ۱۰۰۰ سرور صورت گرفته به مدت ۲۳ روز به طول انجامید، در حالی که اگر این عملیات را بر روی یک سیستم اجرا کنیم، حدود ۵۰۳ سال به طول خواهد انجامید !!
چه کسانی از هدوپ استفاده می کنند؟
اکثر کمپانی های بزرگ دنیا از قبیل AOL،Facebook،Yahoo،IBM و ….. از این تکنولوژی استفاده می کنند. برای مثال شرکت یاهو با بیش از ۱۰۰،۰۰۰ هسته ی CPU در بیش از۴۰،۰۰۰ سرور بزرگترین مجری سیستم هدوپ در دنیا محسوب می شود. بزرگترین کلاستر (Cluster) این شرکت شامل ۴۵۰۰ سرور می باشد که هر کدام دارای ۲ پردازشگر۴ هسته ای، ۴ هارد دیسک ۱ ترابایتی و ۱۶ گیگابایت حافظه ی رم می باشند! برای مشاهده ی لیست کامل این شرکت ها به این لینک مراجعه فرمایید.
چگونه فیسبوک داده های میلیون کاربر را در کسری از ثانیه پردازش میکند؟
آیا می دانید فیسبوک در هر ثانیه میلیون ها عکس را ذخیره می کند و میلیونها پست و کامنت را ثبت می کند؟
آیا می دانید پردازش داده های حجیم در محیط های ابری چگونه است؟
امروزه با رشد روزافزون ابزارهایی مانند شبکه های اجتماعی و ظهور مفاهیمی همچون وب معنایی ، حجم داده ها و پردازش ها در سیستم های بزرگ بطور شگفت انگیزی افزایش یافته است. برای نمونه یک موتورجستجو در کسری از ثانیه نتایج جستجوهای کاربر را آماده می کند که این ناشی از تحلیلی کارآمد روی اطلاعات حجیم جمع آوری شده از سطح وب می باشد بنابراین وجود مکانیزمی برای پردازش اطلاعات حجیم با هزینه ای مقرون به صرفه بسیار پر اهمیت است. یکی از جنبه های مهم رایانش ابری که بسیار مورد استفاده قرار می گیرد پردازش روی مجموعه داده های حجیم می باشد. چارچوب متن باز Hadoop بستری روی ابر برای ذخیره سازی و پردازش این نوع داده های حجیم می باشد که توسط Apache ارائه شده است که با توجه به متن باز بودن آن از نظر اقتصادی نیز مقرون به صرفه تر می باشد. سیستم فایل توزیع شده ی هدوپ که برای مدیریت داده های حجیم طراحی شده و سرویس نگاشت کاهش که چارچوبی برای پردازش داده های حجیم در محیط توزیع شده ارائه شده است ، دو بخش مهم هدوپ، می باشند.
فایل سیستم توزیعشده هادوپ
اچدیافاس (به انگلیسی: Hadoop Distributed File System) یک فایل سیستم توزیعشده، قابلگسترش و قابلحمل است که در جاوا نوشته شده. هر گره در یک نمونه هادوپ تنها یک گره داده دارد. هر گره داده با استفاده از یک پروتکل بلاک خاص اچدیافاس بلاکهایی از داده را در سرتاسر شبکه در اختیار میگذارد. این فایل سیستمی برای برقراری ارتباط از لایه مجموعه پروتکل اینترنت استفاده میکند و کارگزارها (به انگلیسی: client) برای گفتگو با هم از RPC استفاده میکنند. اچدیافاس فایلهای بزرگ (اندازه مناسب برای یک فایل ضریبی از ۶۴ مگابایت است.) را در چندین ماشین ذخیره نموده و با تکرار کردن یک داده روی هاستهای متفاوت قابلیت اطمینان را افزایش میدهد؛ و به همین دلیل نیازی به ذخیرهسازی آرایه چندگانه دیسکهای مستقل روی هاستها ندارد. به صورت پیشفرض، داده روی سه گره، دو بار روی رک یکسان و یک بار روی رکی متفاوت ذخیره میشود. همچنین گرههای داده میتوانند با هم برای مواردی از قبیل متوازنسازی دادهها، انتقال کپیها، و بالا نگه داشتن تعداد نسخ صحبت کنند. اچدیافاس چندان تابع پازیکس نیست، زیرا اصولاً اهداف یک فایل سیستمی POSIX با اهدافی که هادوپ دنبال میکند، متفاوت است؛ که نتیجه این امر، کارایی بالا برای گذردهی دادههاست و اچدیافاس نه به هدف فراهمکردن دسترسپذیری بالا، بلکه برای پاسخگویی به فایلهای بسیار بزرگ طراحی شدهاست.
یک نمونه فایلسیستمی اچدیافاس به یک سرور منحصربهفرد، یعنی همان گره نام احتیاج دارد که تنها نقطه خطای سیستم است. به این معنی که اگر گره نام با مشکل مواجه شود، فایلسیستمی قابل استفاده نخواهد بود و هرگاه دوباره برگردد، گره نام میبایست تمام عملیات ثبتنشده را تکرار کند. این فرایند تکرار ممکن است بیش از نیم ساعت برای یک خوشه بزرگ به طول انجامد. این فایلسیستمی دارای یک گرهٔ نام ثانویهاست که بسیاری را به این تصور اشتباه میاندازد که زمانی که گره نام اصلی از کار بیفتد، گره نام ثانویه جای آن را خواهدگرفت. در حقیقت، گره نام ثانویه مرتباً به گره نام اصلی وصل میشود و تصاویری لحظهای از اطلاعات دایرکتوری آن گرفته و در دایرکتوریهای محلی یا دوردست ذخیره میکند. این تصاویر میتوانند برای راهاندازی مجدد یک گره نام اصلی که دچار خطا شده مورد استفاده قرار گیرند، بدون این که نیاز باشد تمام عملیات فایلسیستمی دوباره تکرار شود.
یک مزیت استفاده از فایلسیستمی اچدیافاس آگاهی از دادهها بین دنبالکننده کار و دنبالکننده وظیفهاست. دنبالکننده کار، کارهای نگاشت/کاهش دنبالکننده وظیفه را با آگاهی از محل دادهها مدیریت میکند. فرض کنیم گره A شامل داده (x,y،z) و گره Bشامل داده (a,b،c) باشد. دنبالکننده کار به این طریق مدیریت میکند که گره B را مسئول انجام کارهای نگاشت/کاهش روی (a,b،c) و گره A را موظف به انجام نگاشت/کاهشهای روی (x,y،z) میکند. بدینترتیب، حجم ترافیک روی شبکه کاهش پیدا میکند و از انتقال غیرضروری دادهها ممانعت به عمل میآید؛ که تاثیر قابلتوجهی روی بهبود زمان اتمام کارها دارد. شایان ذکر است زمانی که هادوپ روی فایلسیستمهای دیگر اجرا میشود، این مزیت همیشه وجود ندارد.
سایر فایل سیستمها
تا مه ۲۰۱۱، فهرست فایلهای سیستمی مورد پشتیبانی عبارت بود از:
· اچدیافاس (به انگلیسی: HDFS)
· آمازون اس ۳ (به انگلیسی: Amazon S3)
· کلود استور (به انگلیسی: Cloud Store)
· افتیپی (به انگلیسی: FTP)
· فایلهای سیستمی اچتیتیپی تنها قابل خواندن و اچتیتیپی (به انگلیسی: Read-only HTTP and HTTP)
هادوپ میتواند مستقیماً با هر فایلسیستمی توزیعشدهای که قابلیت نصبشدن روی سیستمهای عامل سازگار را داشتهباشد، به-آسانی با استفاده از یک آدرس //:file کار کند. هرچند که این با پرداخت هزینهای صورت میگیرد: از دست رفتن محلیت. برای کاهشدادن ترافیک شبکه، هادوپ باید بداند که کدام سرور به داده نزدیکتر است و این اطلاعاتی است که فایلسیستم خاص هادوپ میتواند فراهم کند.
دنبالکننده کار و دنبالکننده وظیفه: موتور نگاشت/کاهش
؛(Job Tracker & Task Tracker / Reduced Map )
بعد از فایلهای سیستمی، موتور نگاشت/کاهش قرار دارد که از یک دنبالکننده کار تشکیل شده که برنامههای کارگزار روی آن کارهای نگاشت/کاهش را ثبت میکنند. این دنبالکننده کار، کار را به گرههای دنبالکننده وظیفه در دسترس خوشه میدهد و تلاش میکند کار را تا حدامکان نزدیک داده نگه دارد. با یک فایلسیستم آگاه از رک، دنبالکننده وظیفه میداند که هر گره چه دادههایی را شامل میشود و چه ماشینهای دیگری در نزدیکی هستند. اگر امکان این وجود نداشته باشد که کار روی همان گرهای که شامل دادهاست، انجام شود، اولویت به گرههایی داده میشود که روی همان رک هستند. اگر یک دنبالکننده وظیفه دچار خطا شود یا زمانش تمام شود، آن بخش از کار دوباره زمانبندی میگردد. دنبالکننده وظیفه روی هر گره، یک پردازه جدای ماشین مجازی جاواتولید میکند تا خود دنبالکننده وظیفه در صورت مشکلدار بودن کار در حال اجرا، از خطا مصون بماند. هر چند دقیقه یک ضربان از سوی دنبالکننده وظیفه به دنبالکننده کار فرستاده میشود تا وضعیتش بررسی شود. وضعیت و اطلاعات این دو دنبالکننده به وسیله بلنداسکله نمایش داده میشود و از طریق یک مرورگر وب میتوان آن را مشاهده کرد.
در نسخه هادوپ ۰٫۲۰ یا پایینتر، اگر دنبالکننده کار دچار خطا میشد، تمام کار در حال پیشرفت از دست میرفت. نسخه ۰٫۲۱ هادوپ تعدادی نقطه بررسی به این فرایند اضافه کرد. به این صورت که دنبالکننده کار، کاری که تا آن لحظه انجام داده را در فایلسیستمی ذخیره میکند. زمانی که یک دنبالکننده کار آغاز به کار میکند، به دنبال هر گونه از چنین دادهای میگردد و کار را از همان جایی که قبلاً رها کردهبود شروع مینماید.
سایر برنامههای کاربردی
فایل سیستمی اچدیافاس محدود به کارهای نگاشت/کاهش نمیشود. بلکه میتواند برای برنامههای دیگر بسیاری که در آپاچی در حال اجرا و توسعه هستند، از قبیل پایگاه داده HBase، سیستم یادگیری ماشینی Mahout آپاچی، و سیستم انباره داده Hiveآپاچی مورد استفاده قرار گیرند. هادوپ در واقع میتواند برای هر گونه کار که بیش ازreal-time بودن، batch-oriented باشد، استفاده شود و قادر است با بخشهایی از داده به صورت موازی کار کند. به طور مثال در اکتبر ۲۰۰۹، برنامههای تجاری هادوپ عبارت بودنداز:
· ثبت وقایع و تحلیل کلیکاستریم به انواع مختلف
· تحلیلهای بازاریابی (به انگلیسی: Marketing Analytics)
· یادگیری ماشینی و/یا استخراج دادههای پیچیده
· پردازش تصویری
· پردازش پیامهای XML
· خزندگی وب (به انگلیسی: Web Crawling) و/یا پردازش متن
· بایگانی عمومی (به انگلیسی: General Archiving) شامل دادههای رابطهای و جدولی
استفادهکنندگان مهم
یاهو
در ۱۹ فوریه ۲۰۰۸، شرکت یاهو چیزی را شروع کرد که ادعا میکرد بزرگترین محصول کاربردی هادوپ در جهان است. نقشه جستجوی یاهو یک برنامهٔ هادوپ میباشد که بیش از ۱۰۰۰۰ خوشه هسته لینوکس دارد و دادههایی را که اکنون در هر درخواست جستجوی یاهو استفاده میشود، تولید میکند. در یاهو چندین خوشه هادوپ وجود دارند که هرکدام یک مرکز داده را اشغال میکنند. هیچ فایلسیستمی اچدیافاس یا کار نگاشت/کاهشی بین مراکز داده مختلف تقسیم نمیشود؛ در عوض، هر مرکز داده یک فایلسیستمی و بارکاری جدا دارد. در ۱۰ ژوئن ۲۰۰۹، یاهو کد منبع نسخهای از هادوپ را که در محصولاتش استفاده میکرد، عرضه کرد. یاهو تمام کاری را که روی هادوپ انجام میدهد، به جامعه متن باز (به انگلیسی: Open Source) برمیگرداند و همچنین برنامهنویسان شرکت، اشکالات را رفع کرده و آن را پیشرفت میدهند و این کد منبع اصلاحشده را منتشر میکنند تا سایر کاربران هم از این تلاشها بهرهمند شوند.
سایر استفاده کنندگان
· 1&1
· A9
· Amazon.com
· AOL
· Apple
· Hamilton
· EHarmony
· eBay
· Fox Interactive media
· FreeBase
· Hewlett-Packard
· IBM
· ImageShack
· ISI
· Joost
· Last.fm
· Meebo
· Metaweb
· NetFlix
· The NewYork Times
· Ning
· Powerset
· RackSpace
· Razorfish
· StumbleUpon
هادوپ روی سرویسهای آمازون EC2/S3
میتوان هادوپ را روی ابر محاسباتی الاستیک آمازون (به انگلیسی: EC2) و سرویس ذخیرهسازی سادهٔ آمازون (به انگلیسی: S3) اجرا کرد. به عنوان مثال نیویورک تایمز۱۰۰ نمونه آمازون ای سی ۲ و یک برنامه هادوپ را برای پردازش ۴ ترابایت داده تصویری خام TIFF (ذخیرهشده در اس ۳) به ۱۱ میلیون PDF در فضای ۲۴ ساعت با هزینه حدود۲۴۰ دلار (بدون پهنای باند) به کار برد.
هادوپ فایل سیستمی اس ۳ را پشتیبانی میکند و تیم هادوپ بعد از هر انتشار تصاویر ماشین ای سی ۲ را تولید میکنند. مشاهدات نشان داده که هادوپ روی این دو سرویس اس ۳ و ای سی ۲ کارآمد نیست، چرا که اس ۳ یک فایل سیستمی دوردست میباشد و در ازای اینکه تضمین شود دادهها در هر عملیات نوشتن از بین نمیروند، تاخیری به سیستم تحمیل میکند؛ و این، مزیت محلیت هادوپ را که کار را نزدیک به داده نگه میداشت، قربانی میکند. در دوم آوریل ۲۰۰۹، آمازون انتشار نسخه بتای یک سرویس جدید به نام نگاشت/کاهش الاستیک آمازون را اعلام کرد، با شعار “یک سرویس وب که به تجار، محققان، تحلیلگران داده و برنامهنویسان امکان پردازش آسان و بهینه حجم عظیمی از داده را میدهد.”
هادوپ روی گوگل و آیبیام
آیبیام و گوگل در سال ۲۰۰۷ در یک ابتکار برای حمایت رشتههای دانشگاهی در برنامهنویسی کامپیوتر توزیعشده اعلام آمادگی کردند.
در سال ۲۰۰۸، این موسسه، بنیاد پردازش ابری آکادمیک (به انگلیسی: ACCI)، با بنیاد ملی علوم برای حمایت تحقیقات آکادمیک در شاخه برنامههای با حجم بالای داده شریک شد. این اقدام، به ایجاد برنامه Cluster Exploratory انجامید.
کاربرد Hadoop<br/> نقش Hadoop در تولید بازی Candy Crush
?
چطورHadoop و In-Memory analysis کمک کردند تا یکی از بازیهای معتادکننده جهان با نام Candy Crush ساخته شود. مردم این بازی را دوست دارند چون آنها در این بازی قادرند تعادل بین رقابت و لذت را برقرار کنند.
؛King Digital Entertainment با 195 بازی در بیش از 200 کشور دنیا سالیانه به طور متوسط 1 petabyte داده تولید می کند. تحلیل داده ها و مدارک جمع آوری شده حاکیست که روزانه 1.5 میلیارد بازی توسط کاربران در دنیا اجرا می شود . کمپانیKing از این آمار 149 میلیون کاربر فعال دارد که روزانه به جمعیت آنها نیز افزوده می شوند. برای کنترل این حجم عظیم داده ، King از ترکیب Hadoop و ابزارهای In-Memory analysis برای رسیدن به این هدف استفاده کرده است.
داده ها در مراحل تولید بازیهای King بسیار مهم هستند و EXASOL با ابزارهایش این زمینه را فراهم کرده است تا Kingبتواند محصولاتش را به بهترین نحو در اختیار کاربرانش بگذارد. King با استفاده از تجزیه و تحلیل داده هایش توانسته است زمینه های نوآوری را برای طراحانش به وجود آورد و بازیهایش را به طور مدام ارتقاء دهد .
برای مثال در مرحله 65 از بازی Candy crush saga ، با تحلیل دقیق داده ها King دریافتند که کاربران در این level با مشکل روبرو می شوند و در حقیقت عبور از این مرحله خیلی مشکل است و باعث شده خیلی از کاربران از این بازی صرف نظر کنند ، آنها به این نتیجه رسیدند که باید این مرحله را تغییر دهند.
زیربنا و ساختار King قبل از اینکه به سمت Mobile برود تغییر یافت و به سمت Hadoop کشیده شد. در این حالت King می توانست به سرعت پردازش و مقیاس پذیری مورد نظرش برسد و هدوپ King را مجبور کرد که صدها سرور و تعداد زیادی از مهندسان خودش را از رده خارج کند و همه اینها به معنی کاهش هزینه ها بود.
هدوپ در پردازش و توزیع داده ها بسیار قوی است ولی همه نیاز ما این نیست. هدوپ در زمینه آنالیز داده ها زیاد گزینه مناسبی نیست و به همین علت شرکت King به دنبال تکمیل رفع نقص موجود شروع به تحقیق کرد. متخصصان King بعد از مدتی تصمیم گرفتند که از MPP برای عملیات تحلیل بانکهای اطلاعاتیشان استفاده کنند.
از مزایای ترکیب Hadoop و MPP سرعت بسیار بالای انجام Queryها می باشد. برای مثال Queryهایی که ساعتها طول می کشید که اجرا شوند با ترکیب این دو تکنولوژی اکنون طی چند ثانیه قابل انجام شدن هستند.
چطورHadoop و In-Memory analysis کمک کردند تا یکی از بازیهای معتادکننده جهان با نام Candy Crush ساخته شود. مردم این بازی را دوست دارند چون آنها در این بازی قادرند تعادل بین رقابت و لذت را برقرار کنند.
؛King Digital Entertainment با 195 بازی در بیش از 200 کشور دنیا سالیانه به طور متوسط 1 petabyte داده تولید می کند. تحلیل داده ها و مدارک جمع آوری شده حاکیست که روزانه 1.5 میلیارد بازی توسط کاربران در دنیا اجرا می شود . کمپانیKing از این آمار 149 میلیون کاربر فعال دارد که روزانه به جمعیت آنها نیز افزوده می شوند. برای کنترل این حجم عظیم داده ، King از ترکیب Hadoop و ابزارهای In-Memory analysis برای رسیدن به این هدف استفاده کرده است.
؛<br/> چطور NASA(ناسا) برای پیش بینی آب و هوا از هدوپ استفاده می کند
در چند سال اخیر بحث هواشناسی و بحران آب یکی از مباحث داغ و مهم جوامع بین المللی بوده است و کشورهای مختلف بنا بر ظرفیتهای خود به دنبال راه حلهای مختلف جهت بیش بینی و جلوگیری از تخریب روزافزون آن هستند. ایالات متحده نیز در این بین با استفاده از سازمانهای گوناگون خود از جمله Nasa به دنبال یافتن راه حلهای موجود است.
دانشمندان هواشناسی برای پیش بینی آب و هوا نیاز دارند تا داده های جمع آوری شده که مقدار آن بسیار زیاد است را به صورت کاملا نامرتب جمع آوری کنند ، سپس بعد از مراحل مرتب سازی و تمیز کردن داده ها آنها را ذخیره و استفاده کنند در این بین زمان بسیار زیادی هدر خواهد رفت. علاوه برآن پردازش این حجم عظیم داده نیازمند هزینه ای بسیار بالاست. در این موقعیت ، دولت شروع به سرمایه گذاری برای حل این مشکل می کند.
ناسا تصمیم گرفت به وسیله تکنولوژی های فناوری اطلاعات، نسل آینده تحلیل و پیش بینی هواشناسی را تولید و راه اندازی کند. ناسا برای شبیه سازی و تحلیل آب و هوا از Apache Hadoop بدلیل بهره وری بالا استفاده می کند. زیرا هدوپ با توزیع داده ها مشکلاتی از قبیل دسترس پذیری داده ها و قابلیت اعتماد را حل کرده و علاوه بر آن با قابلیت پردازش موازی داده ها سرعت پردازش را بطور چشمگیری افزایش داده است.
هدوپ یا هادوپ؟
همواره این موضوع بین پژوهشگران و صاحب نظران حوزه داده های کلان مبتنی بر فریم ورک هدوپ در ایران مطرح بوده است که تلفظ صحیح این تکنولوژی چگونه است. ما نیز همواره به آنها یادآوری می کردیم که تلفظ صحیح این تکنولوژی ، هدوپ است و نه هادوپ!
این موضوع به حدی همه گیر شده بود که ما تصمیم گرفتیم یک بار برای همیشه به این موضوع به عنوان یک مقاله نگاه کنیم و تحقیقات خود را شروع کردیم. پس از بررسی ویدئو ههای مختلف و چک کردن سایت های مربوطه به این نتیجه رسیدیم که واژه "هدوپ" بهترین ترجمه پارسی برای این کلمه می باشد.<br/>
نصب هدوپ
نوع نصب: Single Node Cluster (نصب به صورت Multi-Node)
برای نصب هدوپ راه های گوناگونی وجود دارد. با توجه به سطح آشنایی شما با فریم ورک هدوپ می تواند این فرآیند آسان و یا سخت باشد ولی نگران نباشید ما تمامی مراحل را شرح می دهیم.
بسته عمومی هدوپ یا Hadoop Common
بسته عمومی هدوپ که از سایت رسمی به صورت بسته رسمی هدوپ قابل دریافت است و همینطور در صفحه اصلی این سایت به صورت مستقیم قرار گرفته است شامل پروژه ها و سرویس های HDFS یا سیستم فایل توزیع شده هدوپ،YARN یا زمان بند وظایف و مدیر کلاستر،MapReduce یا سیستم پردازش موازی داده های عظیم و همچنین فایل اجرایی hadoop می باشد که برای پیکربندی کلی هدوپ می باشد. به دلیل اینکه هدوپ به زبان جاوا نوشته شده است نسخه های مختلف برای سیستم عامل های مختلف وجود ندارد و یک بسته می تواند با استفاده از JRE بر روی تمامی سیستم عامل ها اجرا شود.
مراحل نصب عادی بسته عمومی
قبل از هر چیز مطمئن شوید که JRE یا Java Runtime Environment را بر روی سیستم خود نصب کرده اید. می توانید با اجرای دستور java –version در محیط خط فرمان از نصب بودن این برنامه مطمئن شوید.
بسته عمومی هدوپ را از سایت رسمی یا از طریق همین وب سایت دانلود و فایل ها را استخراج نمایید. (توجه: اگر در سیستم عامل لینوکس هستید مطمئن شوید فایل ها را در مکانی استخراج کرده اید که دسترسی مدیر را دارا می باشد و همینطور قابلیت اجرا را به فایل هاعمال کرده اید. به همین جهت پیشنهاد می شود بسته را در پوشه Home خود استخراج کنید.)
پس از استخراج به پوشه موردنظر رفته و وارد پوشه bin شوید. در اینجا فایل ها و پروژه هایی که در بالا توضیح داده شد را مشاهده می کنید.
در اینجا با مراجعه به خط فرمان سیستم عامل خود و تغییر پوشه جاری به پوشه ای که استخراج کردید و همینطور پوشه bin ، می تواند با اجرای هر دستور مثل hadoop ، hadoop fs شروع به کار با هدوپ کنید.
شکل زیر معماری Hadoop V.1 و دو مؤلفه اصلی آن را نمایش میدهد. همانطور که از شکل زیر پیداست، هادوپ (Hadoop) از یک گره (Node) یا کامپیوتر Master و چندین گره یا کامپیوتر Slave تشکیل شده است. (مجموع این گرههای متصلبههم را کلاستر هادوپ مینامیم) گره Master یک گره اصلی است که گرههای Slave را مدیریت و مراقبت میکند. هم گره Master و هم گرههای Slave شامل دو مؤلفه اصلی هادوپ یعنی HDFS و MapReduce میباشند.
?
فایل سیستم توزیعشده هادوپ (Hadoop) یا HDFS که دارای خواصی چون مقیاسپذیری و دسترسپذیری بالا میباشد، جهت ذخیرهسازی و مدیریت دادهها استفاده میگردد. مؤلفه HDFS بهگونهای بهینهسازی شده است که به بهترین نحو ممکن عملیات خواندن و نوشتن کلان داده ها (بیگ دیتا) را انجام دهد.
مؤلفه HDFS خود دارای دو زیرمولفه میباشد:
زیر مؤلفه NameNode که در گره Master قرار میگیرد برای ذخیرهسازی MetaData های مربوط به DataNode ها استفاده میشود. برخی از MetaData هایی که ذخیره میشوند عبارتاند از: تعداد بلوکهای ذخیرهشده در DataNode ها، لیست DataNode های دارای داده، محل DataNode ها، جزئیات گرههای Slave و غیره.
زیر مؤلفه DataNode که در گرههای Slave قرار میگیرد بهمنظور ذخیرهسازی دادههای واقعی در HDFS استفاده میشوند و بهصورت پیشفرض دادهها را در بلوکهای ۶۴مگابایتی ذخیره میکنند.
فریم ورک MapReduce یک فریمورک محاسباتی توزیعشده برای پردازشهای دستهای است که موازیسازی کارها را بر روی حجم عظیمی از دادهها امکانپذیر میسازد. اجرای چنین کارهایی که ممکن است با استفاده از تکنیکهای برنامهنویسی سریال، چندین روز طول بکشد، میتواند در عرض چند دقیقه با استفاده از MapReduce بر روی کلاستر هادوپ (Hadoop) انجام شود.
؛MapReduce هادوپ (Hadoop) سیستمی برای پردازش موازی حجم بزرگی از دادهها بر روی کلاسترهای بسیار بزرگ است. این سیستم در برابر خطا مقاوم بوده و امکان میدهد دادهها بهصورت توزیعشده بر روی نودهای کلاستر ذخیره گردند. در این مدل برنامهنویسی دادههای ورودی به قطعات کوچکتری شکسته میشوند که ورودیهای توابع Map را شکل میدهند. سپس توابع Map این قطعههای داده را روی DataNode های کلاستر هادوپ(Hadoop)، فیلتر و دستهبندی میکنند. خروجی پردازشهای Map به فرآیندهای Reduce تحویل داده شده که اطلاعات را برای تولید خروجی نهایی، درهمآمیخته و خلاصه میکند.
نقش برنامهنویس در اینجا تنها تعریف توابع Map و Reduce بوده و از وارد شدن به جزئیات کار با سیستمهای توزیعی (مانند توزیع کارها، مدیریت سختافزار و نرمافزار و غیره) معاف است. خروجی تابع Map دوتاییهای کلید/مقدار (Key/Value) است که این خروجیها توسط تابع Reduce بهمنظور ایجاد خروجی نهایی پردازش میشوند.
مؤلفه MapReduce نیز همانند مؤلفه HDFS دارای دو زیرمولفه میباشد:
؛Job Tracker بهمنظور اختصاص کارها به Task Tracker ها و دریافت خروجی از آنها استفاده میشود. در مواردی که یک Task Tracker به هر دلیلی از دسترس خارج شود، Job Tracker، کار اختصاص یافته به آن را به Task Tracker دیگری میدهد. بدین منظور Job Tracker همه وضعیتهای Task Tracker ها مانند بالا بودن، در حال اجرا بودن، خراب بودن و بازیابی شده را نگهداری میکند.
؛Task Tracker ها وظیفه اجرای کارهایی را دارند که توسط Job Tracker ها به آنها اختصاص داده میشود. همچنین آنها وضعیت کارهای اختصاصی خود را به Job Tracker ها ارسال میکنند. Task Tracker خود شامل دو جزء میباشد که این دو جزء عبارتاند از: (۱) Map Task و (۲) Reduce Task.
مسئولیتهای چهار مؤلفه فوق و نحوه تعامل آنها با یکدیگر برای اجرای کارهای برنامه کاربردی کلاینت بهصورت زیر است:
· کلاینت (کلاینتها) کار (درخواست) خود را به سیستم هادوپ ارسال میکند.
· سیستم هادوپ درخواست کلاینت را با استفاده از گرهMaster دریافت میکند.
· مؤلفه Job Tracker در گره Master مسئول دریافت کار کلاینت و تقسیم آن به بخشهای مستقل قابل مدیریت و اختصاص این بخشها به Task Trackersها میباشد.
؛· Task Trackers ها کارهای دریافتی را با استفاده مؤلفه MapReduce اجرا میکنند.
· هنگامیکه همهTask Tracker ها کارهای خود را به اتمام رساندند، Job Tracker خروجی آنها را گرفته و برای تولید خروجی نهایی آنها را ترکیب میکند.
· درنهایت سیستم هادوپ(Hadoop)خروجی نهایی را برای کلاینت ارسال میکند.
در کل سیستم هادوپ(Hadoop) دو نوع درخواست از کلاینت دریافت میکند: (۱) درخواست ذخیرهسازی؛ و (۲) درخواست محاسبات
هنگامیکه سیستم هادوپ(Hadoop) درخواستی را برای ذخیرهسازی یک فایل دادهای بزرگ در HDFS دریافت میکند، آن را به بلوکهای قابل مدیریت و معنیدار تقسیم کرده و سپس این بلوکها را بین گرههای متفاوت (با سه کپی) توزیع میکند. (فاکتور تکرار پیشفرض در هادوپ ۳ میباشد).
هنگامیکه هادوپ (Hadoop) یک درخواست محاسبات دریافت میکند، ابتدا برای بازیابی بلوکهای دادهای مرتبط با درخواست، با نزدیکترین گرهها تماس حاصل میکند و سپس محاسبات را انجام میدهد. هنگام خواندن داده و یا انجام محاسبات، اگر یک یا چند گره از دسترس خارج شوند، سیستم هادوپ (Hadoop) بهصورت خودکار، کارها را به نزدیکترین گرههای در دسترس اختصاص میدهد. بهاینترتیب سیستم هادوپ (Hadoop)، دسترسپذیری و تحملپذیری در مقابل خطا را مدیریت میکند.
مقایسه نسخههای هادوپ
؛Hadoop V.1 تنها یک مدل برنامهنویسی را پشتیبانی میکند که همان MR) MapReduce) است؛ اما Hadoop V.2 به واسطه وجودYarn، چندین مدل شاملMR, Spark, Storm, Streaming, Graph و … را پشتیبانی میکند.
؛ Hadoop V.1 تنها برای پردازش دستهای کاربرد دارد درحالیکه Hadoop V.2 برای پردازشهای بیدرنگ و کار با دادههای جریانی نیز کاربرد دارد.
· در Hadoop V.1، بسیاری از وظایف بر عهده JobTracker است و اگر این مؤلفه از دسترس خارج شود، مشکل ایجاد خواهد شد.
؛ Hadoop V.1 حداکثر از ۴۰۰۰ گره در هر کلاستر پشتیبانی میکند اما Hadoop V.2 بیشتر از ۱۰۰۰۰ گره در هر کلاستر را نیز پشتیبانی میکند.
؛ Hadoop V.1 برخی محدودیتها در رابطه با مقیاسپذیری دارد که در Hadoop V.2 حل شده است.