آشنایی با هدوپ ( 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 خواهیم داشت که آنها داده ها را برای نودهای دیگر ارسال می کنند تا نودهای جانبی داده ها را ذخیره کنند. از وظایف دیگر آنها می توان به موارد زیر اشاره کرد : در اختیار دارند به NameNode ها اطلاع دهند و به درخواست های خواندن و نوشتن روی داده ها پاسخ دهند. یکی از مکانیزم های دیگری که در HDFS برای افزایش تحمل خطا وجود دارد رونوشت داده ها می باشد ، بطوریکه هر بلاک داده روی چندین سرور ذخیره می شود و اگر بلاکی گم شد یا سرور دچار مشکل شد امکان بازیابی آن وجود داشته باشد. با اعمال Data Replication علاوه بر افزایش تحمل خطا و خرابی در سیستم ، نیازی به استفاده از تکنولوژی RAID نمی باشد و در استفاده از فضای دیسک صرفه جویی می شود.
هدوپ برای چه اهدافی کاربرد دارد؟ سیستم هدوپ در واقع برای ذخیره سازی و فراخوانی اطلاعات حجیم (در حد گیگابایت، ترابایت و یا حتی پتابایت) مورد استفاده قرار می گیرد. این اطلاعات می تواند شامل فایل و یا پردازش باشد. برای مثال چندی قبل شرکت یاهو که بزرگترین سیستم هدوپ را در اختیار دارد، موفق شد رقم ۲،۰۰۰،۰۰۰،۰۰۰،۰۰۰،۰۰۰ام عدد پی و چند رقم بعد و قبل آن را محاسبه کند !! جالب است بدانید که این عملیات که بر روی ۱۰۰۰ سرور صورت گرفته به مدت ۲۳ روز به طول انجامید، در حالی که اگر این عملیات را بر روی یک سیستم اجرا کنیم، حدود ۵۰۳ سال به طول خواهد انجامید !! چه کسانی از هدوپ استفاده می کنند؟ اکثر کمپانی های بزرگ دنیا از قبیل AOL،Facebook،Yahoo،IBM و ….. از این تکنولوژی استفاده می کنند. برای مثال شرکت یاهو با بیش از ۱۰۰،۰۰۰ هسته ی CPU در بیش از ۴۰،۰۰۰ سرور بزرگترین مجری سیستم هدوپ در دنیا محسوب می شود. بزرگترین کلاستر (Cluster) این شرکت شامل ۴۵۰۰ سرور می باشد که هر کدام دارای ۲ پردازشگر ۴ هسته ای، ۴ هارد دیسک ۱ ترابایتی و ۱۶ گیگابایت حافظه ی رم می باشند! برای مشاهده ی لیست کامل این شرکت ها به این لینک مراجعه فرمایید.
فایل سیستم توزیعشدهٔ هادوپ اچدیافاس (به انگلیسی: Hadoop Distributed File System) یک فایل سیستم توزیعشده، قابلگسترش و قابلحمل است که در جاوا نوشته شده. هر گره در یک نمونهٔ هادوپ تنها یک گرهٔ داده دارد. هر گرهٔ داده با استفاده از یک پروتکل بلاک خاص اچدیافاس بلاکهایی از داده را در سرتاسر شبکه در اختیار میگذارد. این فایل سیستمی برای برقراری ارتباط از لایهٔ مجموعه پروتکل اینترنت استفاده میکند و کارگزارها (به انگلیسی: client) برای گفتگو با هم از RPC استفاده میکنند. اچدیافاس فایلهای بزرگ (اندازهٔ مناسب برای یک فایل ضریبی از ۶۴ مگابایت است.) را در چندین ماشین ذخیره نموده و با تکرار کردن یک داده روی هاستهای متفاوت قابلیت اطمینان را افزایش میدهد؛ و به همین دلیل نیازی به ذخیرهسازی آرایه چندگانه دیسکهای مستقل روی هاستها ندارد. به صورت پیشفرض، داده روی سه گره، دو بار روی رک یکسان و یک بار روی رکی متفاوت ذخیره میشود. همچنین گرههای داده میتوانند با هم برای مواردی از قبیل متوازنسازی دادهها، انتقال کپیها، و بالا نگه داشتن تعداد نسخ صحبت کنند. اچدیافاس چندان تابع پازیکس نیست، زیرا اصولاً اهداف یک فایل سیستمی POSIX با اهدافی که هادوپ دنبال میکند، متفاوت است؛ که نتیجهٔ این امر، کارایی بالا برای گذردهی دادههاست و اچدیافاس نه به هدف فراهمکردن دسترسپذیری بالا، بلکه برای پاسخگویی به فایلهای بسیار بزرگ طراحی شدهاست. سایر فایل سیستمها تا مه ۲۰۱۱، فهرست فایلهای سیستمی مورد پشتیبانی عبارت بود از:
هادوپ میتواند مستقیماً با هر فایلسیستمی توزیعشدهای که قابلیت نصبشدن روی سیستمهای عامل سازگار را داشتهباشد، به-آسانی با استفاده از یک آدرس //:file کار کند. هرچند که این با پرداخت هزینهای صورت میگیرد: از دست رفتن محلیت. برای کاهشدادن ترافیک شبکه، هادوپ باید بداند که کدام سرور به داده نزدیکتر است و این اطلاعاتی است که فایلسیستم خاص هادوپ میتواند فراهم کند. دنبالکنندهٔ کار و دنبالکنندهٔ وظیفه: موتور نگاشت/کاهش(Job Tracker & Task Tracker / Reduced Map ) بعد از فایلهای سیستمی، موتور نگاشت/کاهش قرار دارد که از یک دنبالکنندهٔ کار تشکیل شده که برنامههای کارگزار روی آن کارهای نگاشت/کاهش را ثبت میکنند. این دنبالکنندهٔ کار، کار را به گرههای دنبالکنندهٔ وظیفهٔ در دسترس خوشه میدهد و تلاش میکند کار را تا حدامکان نزدیک داده نگه دارد. با یک فایلسیستم آگاه از رک، دنبالکنندهٔ وظیفه میداند که هر گره چه دادههایی را شامل میشود و چه ماشینهای دیگری در نزدیکی هستند. اگر امکان این وجود نداشته باشد که کار روی همان گرهای که شامل دادهاست، انجام شود، اولویت به گرههایی داده میشود که روی همان رک هستند. اگر یک دنبالکنندهٔ وظیفه دچار خطا شود یا زمانش تمام شود، آن بخش از کار دوباره زمانبندی میگردد. دنبالکنندهٔ وظیفه روی هر گره، یک پردازهٔ جدای ماشین مجازی جاوا تولید میکند تا خود دنبالکنندهٔ وظیفه در صورت مشکلدار بودن کار در حال اجرا، از خطا مصون بماند. هر چند دقیقه یک ضربان از سوی دنبالکنندهٔ وظیفه به دنبالکنندهٔ کار فرستاده میشود تا وضعیتش بررسی شود. وضعیت و اطلاعات این دو دنبالکننده به وسیلهٔ بلنداسکله نمایش داده میشود و از طریق یک مرورگر وب میتوان آن را مشاهده کرد. سایر برنامههای کاربردی فایل سیستمی اچدیافاس محدود به کارهای نگاشت/کاهش نمیشود. بلکه میتواند برای برنامههای دیگر بسیاری که در آپاچی در حال اجرا و توسعه هستند، از قبیل پایگاه دادهٔ HBase، سیستم یادگیری ماشینی Mahout آپاچی، و سیستم انبارهٔ دادهٔ Hive آپاچی مورد استفاده قرار گیرند. هادوپ در واقع میتواند برای هر گونه کار که بیش از real-time بودن، batch-oriented باشد، استفاده شود و قادر است با بخشهایی از داده به صورت موازی کار کند. به طور مثال در اکتبر ۲۰۰۹، برنامههای تجاری هادوپ عبارت بودند از:
استفادهکنندگان مهم یاهو در ۱۹ فوریه ۲۰۰۸، شرکت یاهو چیزی را شروع کرد که ادعا میکرد بزرگترین محصول کاربردی هادوپ در جهان است. نقشهٔ جستجوی یاهو یک برنامهٔ هادوپ میباشد که بیش از ۱۰۰۰۰ خوشهٔ هستهٔ لینوکس دارد و دادههایی را که اکنون در هر درخواست جستجوی یاهو استفاده میشود، تولید میکند. در یاهو چندین خوشهٔ هادوپ وجود دارند که هرکدام یک مرکز داده را اشغال میکنند. هیچ فایلسیستمی اچدیافاس یا کار نگاشت/کاهشی بین مراکز دادهٔ مختلف تقسیم نمیشود؛ در عوض، هر مرکز داده یک فایلسیستمی و بارکاری جدا دارد. در ۱۰ ژوئن ۲۰۰۹، یاهو کد منبع نسخهای از هادوپ را که در محصولاتش استفاده میکرد، عرضه کرد. یاهو تمام کاری را که روی هادوپ انجام میدهد، به جامعهٔ متن باز (به انگلیسی: Open Source) برمیگرداند و همچنین برنامهنویسان شرکت، اشکالات را رفع کرده و آن را پیشرفت میدهند و این کد منبع اصلاحشده را منتشر میکنند تا سایر کاربران هم از این تلاشها بهرهمند شوند. سایر استفاده کنندگان
هادوپ روی سرویسهای آمازون EC2/S3 میتوان هادوپ را روی ابر محاسباتی الاستیک آمازون (به انگلیسی: EC2) و سرویس ذخیرهسازی سادهٔ آمازون (به انگلیسی: S3) اجرا کرد. به عنوان مثال نیویورک تایمز ۱۰۰ نمونهٔ آمازون ای سی ۲ و یک برنامهٔ هادوپ را برای پردازش ۴ ترابایت دادهٔ تصویری خام TIFF (ذخیرهشده در اس ۳) به ۱۱ میلیون PDF در فضای ۲۴ ساعت با هزینهٔ حدود ۲۴۰ دلار (بدون پهنای باند) به کار برد. هادوپ فایل سیستمی اس ۳ را پشتیبانی میکند و تیم هادوپ بعد از هر انتشار تصاویر ماشین ای سی ۲ را تولید میکنند. مشاهدات نشان داده که هادوپ روی این دو سرویس اس ۳ و ای سی ۲ کارآمد نیست، چرا که اس ۳ یک فایل سیستمی دوردست میباشد و در ازای اینکه تضمین شود دادهها در هر عملیات نوشتن از بین نمیروند، تاخیری به سیستم تحمیل میکند؛ و این، مزیت محلیت هادوپ را که کار را نزدیک به داده نگه میداشت، قربانی میکند. در دوم آوریل ۲۰۰۹، آمازون انتشار نسخهٔ بتای یک سرویس جدید به نام نگاشت/کاهش الاستیک آمازون را اعلام کرد، با شعار "یک سرویس وب که به تجار، محققان، تحلیلگران داده و برنامهنویسان امکان پردازش آسان و بهینهٔ حجم عظیمی از داده را میدهد. هادوپ روی گوگل و آیبیام آیبیام و گوگل در سال ۲۰۰۷ در یک ابتکار برای حمایت رشتههای دانشگاهی در برنامهنویسی کامپیوتر توزیعشده اعلام آمادگی کردند.
|