آپاچی هدوپ

معماری

هدوپ، مشترکات هدوپ را شامل می‌شود که امکان دسترسی به سامانهٔ پرونده را، که توسط هدوپ پشتیبانی می‌شود، فراهم می‌آورد. بسته مشترکات هدوپ شامل فایل‌های جار (فایل اجرایی تولید شده توسط مترجم جاوا) و نیز اسکریپت‌هایی است که برای راه‌اندازی هدوپ لازم هستند. این بسته همچنین شامل کد منبع، مستندات و بخشی برای همکاری با پروژه‌های جامعهٔ هدوپ است.

خصوصیت کلیدی برای زمان‌بندی مؤثر کار، آن است که هر پروندهٔ سیستمی باید مکان خود را اعلان نماید: نام رَک (به صورت دقیقتر سویچ شبکه) همان جایی که گرهٔ کارگر قرار دارد. برنامهٔ کاربردی هدوپ از این اطلاعات برای اجرای کار بر روی گره‌هایی که داده‌ها در آن‌ها قرار دارد (و در صورت عدم امکان روی همان رک یا سوئیچ) استفاده می‌کنند و بدین ترتیب از ترافیک در ستون فقرات شبکه (به انگلیسی: Backbone) می‌کاهند. فایل‌های سیستمی اچ‌دی‌اف‌اس از این روش برای ایجاد نسخ مختلفی از یک داده روی رک‌های متفاوت استفاده می‌نماید. هدف این است که فشار روی یک رک یا خطای سوئیچ کاهش پیدا کند تا حتی در صورت رخداد چنین حوادثی، داده کماکان قابل خواندن باشد.

یک خوشهٔ کوچک هدوپ شامل یک گرهٔ ارباب و چندین گرهٔ کارگر می‌باشد. گرهٔ ارباب از یک دنبال‌کنندهٔ کار (به انگلیسی: Jobtracker)، دنبال‌کنندهٔ وظیفه (به انگلیسی: Tasktracker)، گرهٔ نام (به انگلیسی: NameNode) و گرهٔ داده (به انگلیسی: DataNode)، و گرهٔ کارگر از یک گرهٔ داده و یک دنبال‌کنندهٔ وظیفه تشکیل شده‌اند. گره‌های کارگر همچنین می‌توانند تنها شامل داده یا تنها محاسباتی باشند. هدوپ برای اجرا نیاز به نسخهٔ JRE 1.6 یا بالاتر دارد و برای شروع و پایان استاندارد اسکریپت‌ها و ارتباط بین گره‌ها در خوشه وجود پوسته امن الزامی است.

فایل سیستم توزیع‌شدهٔ هدوپ

اچ‌دی‌اف‌اس (به انگلیسی: Hadoop Distributed File System) یک فایل سیستم توزیع‌شده، قابل‌گسترش و قابل‌حمل است که در جاوا نوشته شده. هر گره در یک نمونهٔ هدوپ تنها یک گرهٔ داده دارد. هر گرهٔ داده با استفاده از یک پروتکل بلاک خاص اچ‌دی‌اف‌اس بلاک‌هایی از داده را در سرتاسر شبکه در اختیار می‌گذارد. این فایل سیستمی برای برقراری ارتباط از لایهٔ مجموعه پروتکل اینترنت استفاده می‌کند و کارگزارها (به انگلیسی: client) برای گفتگو با هم از RPC استفاده می‌کنند. اچ‌دی‌اف‌اس فایل‌های بزرگ (اندازهٔ مناسب برای یک فایل ضریبی از ۶۴ مگابایت است.) را در چندین ماشین ذخیره نموده و با تکرار کردن یک داده روی هاست‌های متفاوت قابلیت اطمینان را افزایش می‌دهد؛ و به همین دلیل نیازی به ذخیره‌سازی آرایه چندگانه دیسک‌های مستقل روی هاست‌ها ندارد. به صورت پیش‌فرض، داده روی سه گره، دو بار روی رک یکسان و یک بار روی رکی متفاوت ذخیره می‌شود. همچنین گره‌های داده می‌توانند با هم برای مواردی از قبیل متوازن‌سازی داده‌ها، انتقال کپی‌ها، و بالا نگه داشتن تعداد نسخ صحبت کنند. اچ‌دی‌اف‌اس چندان تابع پازیکس نیست، زیرا اصولاً اهداف یک فایل سیستمی POSIX با اهدافی که هدوپ دنبال می‌کند، متفاوت است؛ که نتیجهٔ این امر، کارایی بالا برای گذردهی داده‌هاست و اچ‌دی‌اف‌اس نه به هدف فراهم کردن دسترس‌پذیری بالا، بلکه برای پاسخگویی به فایل‌های بسیار بزرگ طراحی شده‌است.

یک نمونهٔ فایل سیستمی اچ‌دی‌اف‌اس به یک سرور منحصربه‌فرد، یعنی همان گرهٔ نام احتیاج دارد که تنها نقطهٔ خطای سیستم است. به این معنی که اگر گرهٔ نام با مشکل مواجه شود، فایل سیستمی قابل‌استفاده نخواهد بود و هرگاه دوباره برگردد، گرهٔ نام می‌بایست تمام عملیات ثبت‌نشده را تکرار کند. این فرایند تکرار ممکن است بیش از نیم ساعت برای یک خوشهٔ بزرگ به طول انجامد. این فایل سیستمی دارای یک گرهٔ نام ثانویه‌است که بسیاری را به این تصور اشتباه می‌اندازد که زمانی که گرهٔ نام اصلی از کار بیفتد، گرهٔ نام ثانویه جای آن را خواهد گرفت. در حقیقت، گرهٔ نام ثانویه مرتباً به گرهٔ نام اصلی وصل می‌شود و تصاویری لحظه‌ای از اطلاعات دایرکتوری آن گرفته و در دایرکتوری‌های محلی یا دوردست ذخیره می‌کند. این تصاویر می‌توانند برای راه‌اندازی مجدد یک گرهٔ نام اصلی که دچار خطا شده مورد استفاده قرار گیرند، بدون این که نیاز باشد تمام عملیات فایل سیستمی دوباره تکرار شود.

یک مزیت استفاده از فایل سیستمی اچ‌دی‌اف‌اس آگاهی از داده‌ها بین دنبال‌کنندهٔ کار و دنبال‌کنندهٔ وظیفه‌است. دنبال‌کنندهٔ کار، کارهای نگاشت/کاهش دنبال‌کنندهٔ وظیفه را با آگاهی از محل داده‌ها مدیریت می‌کند. فرض کنیم گرهٔ A شامل دادهٔ (x,y،z) و گرهٔ B شامل دادهٔ (a,b،c) باشد. دنبال‌کنندهٔ کار به این طریق مدیریت می‌کند که گرهٔ B را مسئول انجام کارهای نگاشت/کاهش روی (a,b،c) و گرهٔ A را موظف به انجام نگاشت/کاهش‌های روی (x,y،z) می‌کند. بدین‌ترتیب، حجم ترافیک روی شبکه کاهش پیدا می‌کند و از انتقال غیرضروری داده‌ها ممانعت به عمل می‌آید؛ که تأثیر قابل‌توجهی روی بهبود زمان اتمام کارها دارد. شایان ذکر است زمانی که هدوپ روی فایل سیستم‌های دیگر اجرا می‌شود، این مزیت همیشه وجود ندارد.

دنبال‌کنندهٔ کار و دنبال‌کنندهٔ وظیفه: موتور نگاشت/کاهش

بعد از فایل‌های سیستمی، موتور نگاشت/کاهش قرار دارد که از یک دنبال‌کنندهٔ کار تشکیل شده که برنامه‌های کارگزار روی آن کارهای نگاشت/کاهش را ثبت می‌کنند. این دنبال‌کنندهٔ کار، کار را به گره‌های دنبال‌کنندهٔ وظیفهٔ در دسترس خوشه می‌دهد و تلاش می‌کند کار را تا حد امکان نزدیک داده نگه دارد. با یک فایل سیستم آگاه از رک، دنبال‌کنندهٔ وظیفه می‌داند که هر گره چه داده‌هایی را شامل می‌شود و چه ماشین‌های دیگری در نزدیکی هستند. اگر امکان این وجود نداشته باشد که کار روی همان گره‌ای که شامل داده‌است، انجام شود، اولویت به گره‌هایی داده می‌شود که روی همان رک هستند. اگر یک دنبال‌کنندهٔ وظیفه دچار خطا شود یا زمانش تمام شود، آن بخش از کار دوباره زمان‌بندی می‌گردد. دنبال‌کنندهٔ وظیفه روی هر گره، یک پردازهٔ جدای ماشین مجازی جاوا تولید می‌کند تا خود دنبال‌کنندهٔ وظیفه در صورت مشکل‌دار بودن کار در حال اجرا، از خطا مصون بماند. هر چند دقیقه یک ضربان از سوی دنبال‌کنندهٔ وظیفه به دنبال‌کنندهٔ کار فرستاده می‌شود تا وضعیتش بررسی شود. وضعیت و اطلاعات این دو دنبال‌کننده به وسیلهٔ بلنداسکله نمایش داده می‌شود و از طریق یک مرورگر وب می‌توان آن را مشاهده کرد.

در نسخهٔ هدوپ ۰٫۲۰ یا پایین‌تر، اگر دنبال‌کنندهٔ کار دچار خطا می‌شد، تمام کار در حال پیشرفت از دست می‌رفت. نسخهٔ ۰٫۲۱ هدوپ تعدادی نقطهٔ بررسی به این فرایند اضافه کرد. به این صورت که دنبال‌کنندهٔ کار، کاری که تا آن لحظه انجام داده را در فایل سیستمی ذخیره می‌کند. زمانی که یک دنبال‌کنندهٔ کار آغاز به کار می‌کند، به دنبال هر گونه از چنین داده‌ای می‌گردد و کار را از همان جایی که قبلاً رها کرده‌بود شروع می‌نماید.

یاهو

در ۱۹ فوریه ۲۰۰۸، شرکت یاهو چیزی را شروع کرد که ادعا می‌کرد بزرگترین محصول کاربردی هدوپ در جهان است. نقشهٔ جستجوی یاهو یک برنامهٔ هدوپ می‌باشد که بیش از ۱۰۰۰۰ خوشهٔ هستهٔ لینوکس دارد و داده‌هایی را که اکنون در هر درخواست جستجوی یاهو استفاده می‌شود، تولید می‌کند.
در یاهو چندین خوشهٔ هدوپ وجود دارند که هرکدام یک مرکز داده را اشغال می‌کنند. هیچ فایل سیستمی اچ‌دی‌اف‌اس یا کار نگاشت/کاهشی بین مراکز دادهٔ مختلف تقسیم نمی‌شود؛ در عوض، هر مرکز داده یک فایل سیستمی و بارکاری جدا دارد.
در ۱۰ ژوئن ۲۰۰۹، یاهو کد منبع نسخه‌ای از هدوپ را که در محصولاتش استفاده می‌کرد، عرضه کرد. یاهو تمام کاری را که روی هدوپ انجام می‌دهد، به جامعهٔ متن باز (به انگلیسی: Open Source) برمی‌گرداند و همچنین برنامه‌نویسان شرکت، اشکالات را رفع کرده و آن را پیشرفت می‌دهند و این کد منبع اصلاح‌شده را منتشر می‌کنند تا سایر کاربران هم از این تلاش‌ها بهره‌مند شوند.

هدوپ روی سرویس‌های آمازون EC2/S3

می‌توان هدوپ را روی ابر محاسباتی الاستیک آمازون (به انگلیسی: EC2) و سرویس ذخیره‌سازی سادهٔ آمازون (به انگلیسی: S3) اجرا کرد. به عنوان مثال نیویورک تایمز ۱۰۰ نمونهٔ آمازون ای سی ۲ و یک برنامهٔ هدوپ را برای پردازش ۴ ترابایت دادهٔ تصویری خام TIFF (ذخیره‌شده در اس ۳) به ۱۱ میلیون PDF در فضای ۲۴ ساعت با هزینهٔ حدود ۲۴۰ دلار (بدون پهنای باند) به کار برد.

هدوپ فایل سیستمی اس ۳ را پشتیبانی می‌کند و تیم هدوپ بعد از هر انتشار تصاویر ماشین ای سی ۲ را تولید می‌کنند. مشاهدات نشان داده که هدوپ روی این دو سرویس اس ۳ و ای سی ۲ کارآمد نیست، چرا که اس ۳ یک فایل سیستمی دوردست می‌باشد و در ازای اینکه تضمین شود داده‌ها در هر عملیات نوشتن از بین نمی‌روند، تأخیری به سیستم تحمیل می‌کند؛ و این، مزیت محلیت هدوپ را که کار را نزدیک به داده نگه می‌داشت، قربانی می‌کند.
در دوم آوریل ۲۰۰۹، آمازون انتشار نسخهٔ بتای یک سرویس جدید به نام نگاشت/کاهش الاستیک آمازون را اعلام کرد، با شعار «یک سرویس وب که به تجار، محققان، تحلیل‌گران داده و برنامه‌نویسان امکان پردازش آسان و بهینهٔ حجم عظیمی از داده را می‌دهد.»

هدوپ روی گوگل و آی‌بی‌ام

آی‌بی‌ام و گوگل در سال ۲۰۰۷ در یک ابتکار برای حمایت رشته‌های دانشگاهی در برنامه‌نویسی کامپیوتر توزیع‌شده اعلام آمادگی کردند.

در سال ۲۰۰۸، این مؤسسه، بنیاد پردازش ابری آکادمیک (به انگلیسی: ACCI)، با بنیاد ملی علوم برای حمایت تحقیقات آکادمیک در شاخهٔ برنامه‌های با حجم بالای داده شریک شد. این اقدام، به ایجاد برنامهٔ Cluster Exploratory انجامید.