سیستم فایل توزیع شده هادوپ (HDFS )
HDFSیافایل سیستم توزیعشده هادوپ، از یک گره نام و چندین گره داده تشکیلشده است. HDFS با زبان جاواپیادهسازی شده است، بنابراین هر ماشینی که از جاوا پشتیبانی میکند، میتواند گره نام و گره داده را اجرا نماید. HDFS برای ذخیره مطمئن فایلهای بزرگ بر روی ماشینها در خوشههای بزرگ طراحی شده است. HDFS هر فایل را بهصورت بلوکهای پیدرپی ذخیره میکند. یک فایل به یک یا چند بلوک شکسته شده و این بلوکها در مجموعهای از گرههای داده ذخیره میشوند. همهی بلوکها بهجز بلوک آخر اندازهی یکسانی دارند. اندازهی بلوکها 64 یا 128 مگابایت هست که بهصورت پیشفرض 64 مگابایت هست.
هدف از این بزرگ بودن اندازهی بلوکها، کاهش زمان جستجو هست. اندازهی بلوک و تعداد تکرار برای هر فایل قابل تنظیم است. در حالت پیشفرض، 3 محل برای نگهداری هر بلوک وجود دارد؛
1- در سرور جاری که بلوک ابتدا در آن نوشتهشده است.
2- در سرور هم خوشه در سرور جاری
3- در سروری در خوشه دیگر
فایلها در HDFS، یکبار نوشتنی هستند و در هر زمان،دقیقاً و تنها فقط یک نویسنده دارند اما ممکن است در هر زمان تعدادی خواننده داشته باشد.
برنامه با ایجاد یک فایل جدید و نوشتن داده در آن، دادهها را به HDFS اضافه میکند.
پس از بسته شدن فایل، بایتهای نوشتهشده نمیتوانند تغییر داده شوند و یا حذف شوند، مگر اینکه دادههای جدید با باز کردن مجدد فایل به آن اضافه شوند.
کلاینتی که فایلی را برای نوشتن باز میکند، برای آن فایل به آن مجوز اعطا میشود. این مجوز بهمحض بسته شدن فایل، لغو میشود. یک فایل میتواند چندین خوانندهی همزمان داشته باشد اما فقط میتواند یک نویسنده در یکزمان داشته باشد.
HDFS برای سیستمهای بلادرنگ و سیستمهایی که دارای تغییرات زیادی هستند، مناسب نیست.
کلاستر HDFSدارای 2 نوع گره هست. یک گره نام (master) و چندین گره داده (Worker).
گره نام، یک گره سرور است که فضای فایل سیستم را مدیریت کرده و دسترسی کلاینتها به فایلها را کنترل میکند. تعدادی گره داده هم وجود دارد که هر یک از آنان در یک سرور جداگانه قرارمیگیرند.
گره نام مخزنی برای تمام متادادههای HDFSهست و دادههای کاربر در آن وارد نمیشوند. گره نام، عملیات فضای نام سیستم فایل بهمانند باز کردن، بستن و تغییر نام فایلها و دایرکتوریها را انجام میدهد. هر تغییری در فضای نام سیستم فایل یا خصوصیات آن توسط گره نام ثبت میشود.
گره داده، ذخیرهسازی و بازیابی بلوکها هنگامیکه توسط کلاینت یا گره نام صدا زده میشوند و گزارش به گره نام با لیستی از بلوکهای که آنها در حال ذخیرهسازی هستند.
بدون گره نام، فایل سیتم غیرقابلاستفاده میشود. اگر در ماشین در حال اجرا، گره نام پاک شود، دسترسی به فایلها از بین میرود یعنی اطلاعات از بین میرود.
به همین دلیل مهم هست که namenodeدر برابر شکست تحملپذیر هست. هدوپ، مکانیزمی برای این کار در نظر گرفته است.
تهیه نسخه پشتیبان از فایلها در وضعیت ثابت متا دیتا فایل سیستم.
هدوپ میتواند پیکربندی شود طوری که گره نام وضعیت ثابت خود را در چند فایل سیستم یادداشت کند. این نوشتنها همگام هست.
گره نام دوم ممکن است، همانند گره نام اول عمل نکند.
گره نام دوم معمولاً بر روی ماشین فیزیکی جداگانه اجرا میشود. به cpuبیشتری نیاز دارد و به حافظهای همانند گره نام اول نیازمند است. یک کپی از فضای نام mergeشده نگه میدارد.
HDFSناچار است تا از بعضي ويژگيها که در ساير سيستمهایفايلي وجود دارد، فاصله بگيرد زيرا اين سيستم فايلی بايد تضمين کند که ميتواند حجم زياد دادهاي را که روي صدهایا هزاران ماشين فيزيکي قرارگرفتهاند، بهخوبی مديريت کرده و از آنها استفاده کند.
- مـعماری
معماری master / slave خوشهی HDFSشامل یک Namenodeاست؛ یک سرور اصلی که فضای نام فایل سیستم را مدیریت میکند و تنظیم دسترسی با فایلها توسط مشتریان. تعدادی Datanodeمعمولاً در هر خوشه وجود دارد.Datanode ها حافظهی متصل به گرههایی که در آن اجرا میشوندرا مدیریت میکنند. HDFS فضای نام فایل سیستم را در معرض قرار میدهدتا اجازه بدهد دادههای کاربران در فایلها ذخیره شوند. یک فایل به یک یا چند بلوک تقسیم میشود و مجموعهای از بلوکها در Datanodeذخیره میشوند.
- NameNode
نگهداری Imageاز کل فضای نام فایل سیستم و فایل BlockMap در حافظه. 4گیگابایتRAMمحلی برای پشتیبانی از ساختارهای دادهای بالا که نشاندهندهیفایلها و دایرکتوریها هست، کافی است. هنگامیکهNameNodeشروع به کار میکند،FsImage و Editlog را از فایل سیستم محلی خود صدا میکند. FsImage را توسط اطلاعات Editlog بهروزرسانی میکند و سپس یک کپی ازFsImageرا در حافظه بهعنوانCheckPoint نگه میدارد. CheckPoint دورهای انجامشده است؛بنابراین سیستم میتواند به آخرین وضعیت checkpoint بازگردد درزمانیکهCrashاتفاق میافتد.
- DataNode
Datanode، اطلاعات را در فایلها در فایل سیستم محلی خود نگه میدارد. Datanode، هیچگونه دانشی در مورد فایل سیستم محلی HDFS ندارد. Datanode، هر بلوک ازHDFS dataرا در یک فایل جداگانه ذخیره میکند. Datanode، همهی فایلها را در یک دایرکتوری نمیسازد. با استفاده از فناوری هوشمند برای تعیین بهینهای از فایلها در دایرکتوری و ساخت دایرکتوری مناسب، هنگامیکه فایل سیستم شروع به کار میکند Datanode یک لیستی از تمام فایلهایHDFS تولید میکند و این لیست را به Namenode ارسال میکند.(blockreport)