بررسی نقش Secondary NameNode در هدوپ

Secondary NameNode  یکی از گمراه کننده ترین عناوین در اکوسیستم هدوپ است. چرا که کاربر هدوپ بعد از شنیدن این کلمه فکر میکند کار پشتیبان گیری از NameNode در هدوپ بر دوش این گره می باشد و زمانی که NameNode با خطا مواجه شد می توان به این گره رجوع کرد. متاسفانه اینطور نیست. در ابتدا شاید فکر کنید که بلاخره یک ارتباطی بین NameNode و Secondary NameNode وجود دارد که قطعا همینطور است ولی در تعریف و کاربرد هرکدام تفاوت هایی وجود دارد. در این مقاله قصد داریم نقش واقعی Secondary NameNode در هدوپ را مورد بررسی قرار دهیم. 

NameNode چیست؟
NameNode به صورت کلی ابرداده یا Metadata مربوط به فایل سیستم توزیع شده هدوپ را نگه داری می کند که این ابرداده ها شامل اطلاعاتی مثل اطلاعات فضای نام،بلاک های داده و غیره می شود. وقتی که این گره در حال اجرا است،اطلاعات در حافضه اصلی نگه داری می شود. همچنین برای حفظ ماندگاری و پایداری داده ها بر روی دیسک هم ذخیره می شوند.

NameNode با دو فایل اصلی کار میکند:

  1. fsimage : یک تصویر از فایل سیستم در زمان راه اندازی اولیه است.
  2. Edit logs : ترتیبی از تغییرات فایل سیستم را بعد از زمان راه اندازی نگه داری می کند.

در زمان راه اندازی مجدد NameNode تمامی تغییرات موجود در Edit logs بر روی fsimage اعمال می شود ولی نکته مهمی که وجود دارد این است که راه اندازی مجدد در کلاستری که در محیط تولید فعالیت می کند به ندرت اتفاق می افتد که به این معنی است که حجم فایل Edit logs در طولانی مدت بسیار زیاد می شود. در این زمان با مشکلات زیر روبرو می شویم:

  1. حجم فایل Edit logs در حدی افزایش می یابد که قابل مدیریت نیست.
  2. راه اندازی مجدد NameNode ممکن است زمان زیادی طول بکشد زیرا تمامی تغییرات می بایست با فایل fsimage ادغام شود.
  3. در زمان خطا،مقدار زیادی از ابرداده ها را از دست می دهیم چرا که fsimage ما به روز نیست.

برای حل کردن این مشکلات،ما به مکانیزمی احتیاج داریم که حجم فایل Edit logs را کاهش دهد و عملیات به روزرسانی fsimage سریع تر انجام گیرد. این عملیات باعث کاهش بار کاری بر روی NameNode می شود. این مکانیزم شبیه کاری است که در Windows Restore انجام می شود. در زمانی یک تصویر از سیستم تهیه می شود که اگر سیستم عامل با خطا مواجه شد بتوان به آن تصویر رجوع کرد و سیستم را به حالت پایدار برگرداند.

پس ما تا به حال نقش NameNode و مشکلاتی که وجود دارد را متوجه شدیم. حالا نوبت آن رسیده است که به نقش Secondary NameNode بپردازیم.

Secondary NameNode مشکلاتی که در بالا مطرح شد را حل می کند به این صورت که در بازه های زمانی مشخص Edit logs ها را با فایل fsimage در NameNode ادغام می کند.

مراحل زیر در Secondary NameNode اتفاق می افتند:

  1. فایل Edit logs را در بازه های زمانی مشخص از NameNode می خواند و بر روی fsimage اعمال می کند.
  2. وقتی که تغییرات انجام شد فایل fsimage جدید را به NameNode بر میگرداند.
  3. NameNode این فایل را در راه اندازی مجدد خود مورد استفاده قرار می دهد که باعث کاهش زمان راه اندازی می شود.

در نهایت متوجه شدیم که Secondary NameNode نقش یک کمک کننده را ایفا می کند تا NameNode کارایی بهتری داشته باشد. به همین دلیل نام آن در بین متخصصان این حوزه به Checkpoint Node معروف شده است. نکته ای که در انتها می توان به آن رسید این است که Secondary NameNode یک جایگزین و یا پشتیبان برای NameNode اصلی نیست.

منبع
مترجم: مبین رنجبر

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

پاسخ دهید

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