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

سیستم فایل توزیع شده هدوپ نیازمند کامپیوترهای گران قیمت نیست و می توان با استفاده از کامپیوترهای ارزان و معمول مورد استفاده قرار گیرد. این سیستم فایل از کارایی بالایی برخوردار است. برای بالابردن کارایی دسترسی این سیستم فایل، فایل ها را در نزدیک ترین شبکه به سرویس گیرنده در شبکه ای مشابه تکثیر می کند. اگرچه، اشکال کل شبکه باعث از بین رفتن تمامی فایل هایی می شود که در این شبکه ذخیره شده اند.
این سیستم فایل توزیع شده تحت هدوپ کار می کند و یک چارچوبی برای تحلیل و تغییرشکل مجموعه داده های بسیار بزرگ با استفاده از Map/Reduce می باشد. یکی از مهم ترین ویژگی های هدوپ،پارتیشن بندی داده ها و محاسبات میان هزاران میزبان و اجرای برنامه های محاسباتی موازی بر روی داده هایشان است. یک خوشه هدوپ می تواند از نظر ظرفیت محاسباتی،ظرفیت ذخیره سازی و پهنای باند ورودی و خروجی از طریق اضافه کردن سرورهای معمولی توسعه یابد. کلاسترهای هدوپ در شرکت یاهو به 25000 سرور می رسند و 25 پتابایت از داده های برنامه های مختلف را ذخیره می کنند و بزرگ ترین کلاستر یاهو حاوی 3500 سرور است. تا به حال 100 سازمان جهانی اعلام کرده اند که از هدوپ استفاده می کنند.

HDFS جزئی از سیستم فایل هدوپ می باشد و فراداده و داده های برنامه ها را به صورت جداگانه ذخیره می کند. همانند سیستم فایل های دیگر مثل PVFS ، Lustre و GFS ، HDFS فراداده را بر روی یک سرور اختصاصی به نام NameNode ذخیره می کند. داده های برنامه ها نیز بر روی سرور های دیگر به نام DataNodes ذخیره می شوند. تمامی این سروری با هم از طریق پروتکل های مبتنی بر TCP با هم در ارتباط هستند.

 

معماری سیستم فایل توزیع شده هدوپ یا HDFS

الف: NameNode
فضای نام HDFS ، سلسله مراتبی از فایل ها و پوشه ها است. این فایل ها و پوشه ها بر روی NameNode ذخیره می شوند که خواصی مانند دسترسی ها،تاریخ تغییرات،فضای نام و میزان استفاده از فضا را ذخیره می کند. محتویات فایل به بخش های بزرگی که عموما 128 مگابایت هستند تقسیم می شوند و هر کدام از این بخش های فایل به صورت مستقل بین چندین NameNode ( عموما 3 تا) تکثیر می شوند. NameNode فضای نام درختی و نقشه یابی بخش های فایل را از DataNode (محل فیزیکی فایل های داده) نگه داری می کند. یک سرویس گیرنده HDFS زمانی که میخواهد یک فایل را بخواند می بایست اول به NameNode متقصل شوند تا محل بخش های مختلف فایل را دریافت کند و بعد از نزدیک ترین DataNode به سرویس گیرنده فایل ها را بخواند. وقتی که سرویس گیرنده می خواهد داده ها را بنویسد،ابتدا درخواست خود را به NameNode می فرستد تا NameNode مجموعه 3 تایی از DataNode ها را برای نگه داری بخش های تکثیر فایل کاندید کند. سپس سرویس گیرنده داده ها را با استفاده از رایانش خط لوله بر روی DataNode ها می نویسد. طراحی حاضر برای هر کلاستر یک NameNode دارد. کلاسترها می توانند هزاران DataNode و 10 تا هزار سرویس گیرنده HDFS در هر کلاستر داشته باشند که هر DataNode می تواند چندین وظیفه را به صورت همروند اجرا کنند.
HDFS کل فضای نام را در رم نگه داری می کند. داده های درون هر گره و لیست بخش های متعلق به هر فایل که شامل فراداده سیستم نام است تصویر یا Image نام دارد. نسخه ماندگار تصویر بر روی سیستم فایل محلی ذخیره می شود که نقطه تقابل یا Checkpoint نام دارد. NameNode همچنین گزارش تغییرات تصویر را در سیستم فایل محلی ذخیره میکند که ژورنال نام دارد. برای پایداری بهتر، کپی های Checkpoint و ژورنال می توانند بر روی سرورهای دیگر اضافه گردند. در طول ریستارت NameNode فضاهای نام را با استفاده از خواندن فضای نام وپاسخ ژورنال بازیابی می کند. مکان های تکثیر هر بخش از فایل ممکن است در طول زمان تغییر کند و جزئی از ماندگاری Checkpoint نمی باشند.

HDFSArchitecture

 

ب: DataNodes
هر بخش از داده های تکثیر شده بر روی DataNode توسط دو فایل در سیستم فایل محلی تعریف می گردد. اولین فایل حاوی خود داده است و دومین فایل فراداده های هر بخش مانند Checksum های بخش داده و مهر نسل آن بخش را نگه داری می کند. اندازه فایل داده برابر است با طول دقیق بلوک داده ای و برای قرارگیری در این بخش برخلاف سیستم فایل های سنتی نیاز به فضای اضافی ندارد.بنابراین، اگر یک بلوک نصف فضای کل حجم دارد به این معنی است که دقیقا نصف فضای کل روی درایو محلی را اشغال می کند.
در طول راه اندازی اولیه سیستم هر DataNode به NameNode متصل می شود و عملیات مذاکره برای همکاری را اجرا می کنند. هدف این کار این است که شناسه فضای نام و نسخه نرم افزار DataNode اعتبارسنجی شود. اگر هرکدام از آنها برابری نداشت،هر دوی DataNode و NameNode به صورت خودکار خاموش می شوند. شناسه فضای نام به نمونه ای از فایل سیستم نسبت داده می شود.
شناسه فضای نام بر روی همه گره های کلاستر به صورت ماندگار ذخیره می شود. گره های با شناسه فضای نام متفاوت نمی توانند که به کلاستر بپیوندند. به این معنی که از تمامیت فایل سیستم مراقبت می کند. برابری نسخه نرم افزار بسیار مهم است زیبا نسخه ناسازگار می تواند باعث از دست رفتن و خراب شدن داده ها شود و بر روی کلاسترهای بزرگی از هزاران ماشین آسان خواهد بود که بتوان فهمید کدام گره به دلیل به روزرسانی به طور مناسبی خاموش نشده است و یا در دسترس نبوده است.
یک DataNode ای که به تازگی راه اندازی شده است و شناسه فضای نام ندارد باید به کلاستری بپیوندد و شناسه فضای نام کلاستر دریافت کند.
بعد از عملیات مذاکره DataNode به همراه NameNode ثبت می شوند. DataNode ها شناسه های ذخیره سازی یکتای خود را ذخیره می کنند. شناسه ذخیره سازی یک شناسه درونی برای DataNode ها است که زمانی که با یک آدرس آی پی یا پورت مختلف وارد شبکه شد با این شناسه قابل تمایز باشند. شناسه ذخیره سازی زمانی به DataNode ها نسبت داده می شود که در یک NameNode ای برای اولین بار ثبت شوند و پس از آن تغییر نکند.

 

DataNodes

یک DataNode بلوک داده های تکثیر شده را در مالکیت NameNode از طریق ارسال گزارش بلوک شناسایی می کند. یک گزارش بلوک حاوی شناسه بلوک، مهر نسل و طول هر بلوک تکثیر شده ای که سرور میزبانی می کند است. اولین گزارش بلوک فورا بعد از ثبت DataNode ارسال می شود. بقیه پزارشهای بلوک هر ساعت ارسال می شود و NameNode را با مکان دقیق بلوک های تکثیر شده روی کلاستر به روز می کند.
در طول عملیات نرمال DataNode ها ضربان قبل خود را به NameNode ارسال می کنند تا اعلام کنند که در حال کار هستند و بلوک های داده ای تکثیر شده بر روی آنها در دسترس است. ضربان قلب پیش فرض بازه ای 3 ثانیه ای دارد. اگر NameNode ای پس از 10 دقیقه ضربان قلبی از DataNode دریافت نکرد،NameNode آنرا خراب تلقی کرده و بلوک های داده ای تکثیر شده بر روی آن از دسترس خارج می شوند. در این زمان، NameNode زمان بندی می کند که بلوک های داده ای را بر روی DataNode های دیگر تکثیر کند.
ضربان قلب DataNode همچنین حاوی اطلاعاتی مانند ظرفیت کل ذخیره سازی ، تکه بندی فضای ذخیره سازی در حال استفاده و تعداد داده های در حال انتقال می شود. این آمار برای تصمیمات تخصیص فضا و توازن بار NameNode مورد استفاده قرار می گیرد. NameNode به صورت مستقیم با DataNode ها رابطه ندارد و در واقع به ضربان قلب ها پاسخ می دهد تا دستورالعمل ها را به DataNode ها ارسال کند. دستورالعمل ها شامل دستورات زیر می شوند:
• بلوک ها را بر روی گره های دیگر تکثیر کن.
• بلوک داده ای تکثیر شده محلی را حذف کن.
• گروه را خاموش یا دوباره ثبت کن.
• گزارش بلوک فوری را ارسال کن.
این دستورات برای نگه داری درست سیستم کلی بسیار مهم است. به این دلیل،ضربان قلب مکرر حتی بر روی کلاسترهای بزرگ بسیار بحرانی است. NameNode می تواند هزاران ضربان قلب را در ثانیه بدون تاثیر گذاشتن بر روی بقیه عملیات NameNode پردازش کند.

از سرورهای ما برای اجرای پروژه های داده های کلان خود بدون اینکه درگیر پیچیدگی نصب شوید استفاده کنید. برای سفارش اینجا را کلیک کنید.
ما حتی می توانیم کلاستر و سرورهای هدوپ را برای شما ایجاد کنیم. برای درخواست راه اندازی اینجا را کلیک کنید.
اگر نیاز به مشاوره و یا کلاس آموزشی داشتید به اینجا مراجعه کنید.

لیست نظرات

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *