مدیریت هدوپ

در این فصل به دنبال روشی برای اجرای درست کلاستر هستیم.

HDFS

ساختار داده‌ای مقاوم

به عنوان یک مدیر، ارزشمند است که درک ساده‌ای از چگونگی اجزای سیستم HDFS داشته باشید(namenode، Second namenode و datanode). دانستن اینکه کدام فایل‌ها می‌تواند به تشخیص مشکلات شما کمک کند یا چیزی را که درست است مشخص کنید.

ساختار دایرکتوری namenode

یک namenode در حال کار یک ساختار دایرکتوری مانند این شکل دارد:

VERSION موجود یک فایل جاوا است که شامل اطلاعاتی درباره نسخه HDFS در حال اجرا می‌باشد. در اینجا محتوای چنین فایلی را مشاهده می‌کنید.

LayoutVersion یک عدد صحیح منفی است که که نسخه‌ای از ساختار مداوم داده‌ها را مشخص می‌کند. این شماره نسخه هیچ ارتباطی با شماره انتشار هدوپ ندارد.

namespaceID یک شناسته واحد برای namespace سیستم می‌باشد که زمانی که namespace برای اولین بار فرمت شده است، ایجاد می‌شود. clusterID یک شناسه واحد برای کلاستر HDFS به عنوان یک کل می‌باشد. blockpoolID یک شناسه واحد برای مخزن بلوکها می‌باشد که شامل تمام فایلهای namespace است که به وسیله namenode مدیریت می‌شود.

ویژگی cTime زمان ایجاد ذخیره‌سازی namenode را نشان می‌دهد.

storageType نشان‌ می‌دهد که این دایرکتوری ذخیره‌سازی شامل ساختار داده برای namenode می‌باشد.

فایل in_use.lock که توسط namenode برای قفل کردن دایرکتوری ذخیره‌سازی استفاده می‌شود.

The filesystem image and edit log

موقعی که فایل‌سیستم یک عملیات نوشتن را انجام می‌دهد، معامله ابتدا در edit log ثبت می‌شود. Namenode نیز یک حافظه از فراداده‌های فایل‌سیستم را دارد که پس از هر تغییر در edit log آپدیت می‌شود. به طور مفهومی edit log یک موجودیت تنها است اما نشان‌دهنده تعداد فایلها بر دیسک می‌باشد.

ساختار دایرکتوری namenode ثانویه

برخلاف namenode، datanode فرمت مشخص ندارند زیرا آنها دایرکتوری ذخیره‌سازی خود را در هنگام راه‌اندازی ایجاد می‌کنند.

 بلوک HDFS در فایل‌هایی با پیشوند _blk ذخیره می‌شوند. هر بلوک دارای یک فایل فرداده مرتبط با پسوند .meta می‌باشد. هر بلوک متعلق به یک  blockpoolاست و هر blockpool دارای دایرکتوری ذخیره‌سازی است که از شناسه آن تشکیل شده است(همان شناسه blockpool از نسخه فایل namenode). هنگامی که تعداد بلوکها در یک پوشه به اندازه خاصی رشد کند، datanode یک زیر پوشه جدید ایجاد می‌کند که در آن بلوکهای جدید و فراداده‌های همراه آن ایجاد می‌شود.

Safe Mode

موقعی که namenode شروع می‌کند، اولین کاری که انجام می‌دهد، فایل تصویر آن(fsimage) را در حافظه بارگذاری می‌کند و ویرایش‌ها از edit log را به کار می‌گیرد. هنگامی که یک تصویر ثابت در حافظه را از فراداده فایل سیستم بازسازی کرد، یک فایل جدید fsimage و یک ورودی خالی از edit log ایجاد می‌کند.

وارد شدن و خارج شدن از safe mode

وقتی که namenode در safe mode است، شما می‌توانید از دستور dfsadmin استفاده کنید.

%hdfs dfsadmin -safemode get

Safe mode is ON

گاهی اوقات شما می‌خواهید قبل از اجرای یک دستور، به ویژه برای اسکریپتها، برای خروج namenode از حالت safe mode باشید که می‌توانید از گزینه wait استفاده کنید:

%hdfs dfsadmin –safemode wair

# command to read or wirte a file

بعضی اوقات لازم است که خروج و ورود به namenode را هنگام انجام تعمیرات در خوشه یا پس از ارتقا یک خوشه انجام دهید تا تاکید کنید که داده هنوز قابل خواندن است. برای ورود به safe mode می‌توانید از دستور زیر استفاده کنید:

%hdfs dfsadmin –safemode enter

Safe mode is ON

شما با استفاده از دستور زیر می‌توانید از حالت safe mode خارج شوید:

%hdfs dfsadmin –safemode leave

Safe mode is OFF

ابزار

  • Dfsadmin

این ابزار یک ابزار چند هدفه برای پیدا کردن اطلاعات درباره وضعیت HDFS و همچنین انجام عملیات مدیریت در HDFS می‌باشد.

  • FIlesystem check (fsck)

ابزار fsck برای چک کردن وضعیت سلامت فایلها در HDFS به کار گرفته می‌شود. این ابزار برای بلوک‌هایی که از تمام datenodeها پیاده مفقود شده‌اند و همچنین بلوک‌های زیر و یا پیش از حد تکرار شده است، به نظر می‌رسد.

  • Datonode block scanne

هر datanode یک اسکنر بلوک را اجرا می‌کند که به صورت دوره‌ای تمام بلوک‌های ذخیره شده در datanode را تایید می‌کند. این اجازه می‌دهد که بلوک‌های بد قبل از خواندن توسط مشتریان شناسایی و ثابت شوند.

  • Blancer

با گذشت زمان، توزیع بلوکها در بین datanodeها می‌تواند دچار بی‌ثباتی و عدم توازن شود. برنامه blancer یک سرویس‌دهی هدوپ است که بلوک‌ها را با توزیع آنها از بی‌ثباتی در می‌آورد.

Monitoring

هدف نظارت تشخیص زمانی است که خوشه سطح خدمات مورد انتظار را ارائه نمی‌کند. demons   اصلی مهمترین قسمت برای نظارت هستند: namenode (اصلی و ثانویه) و منابع مدیریت.

Logging

همه فایل‌های هدوپ logfile تولید می‌کنندکه می‌توانند در فهمیدن اتفاقاتی که در سیستم افتاده است به ما کمک کند.

Maintenance

  • Metadata backups

اگر فراداده namenode از بین رفته یا آسیب دیده باشد، کل سیستم غیرقابل استفاده می‌شود، بنابراین مهم است که پشتیان‌گیری از آن فایل‌ها انجام شود. شما باید در زمان‌های مختلف(هر ساعت، هر روز، هر هفته و هر ماه) نگه داشته باشید که در صورت مشکل، از آن حفاظت کنید.

  • Data backups

اگرچه HDFS برای ذخیره‌سازی داده‌ها طراحی شده است، از بین رفتن داده‌ها می‌تواند اتفاق بیوفتد و به همین دلیل استراتژی پشتیبان‌گیری ضروری است. چون داده‌های زیادی در هدوپ می‌توانند ذخیره شوند، چالش اصلی این است که تصمیم بگیرید از کدام داده‌ها پشتیبان بگیرید و کدام داده‌ها را ذخیره کنید. به همین علت باید داده‌ها را اولویت‌بندی کنید. داده‌هایی که نمی‌توان دوباره تولید کرد و برای کسب‌وکار ضروری است، در اولویت قرار دارند.

Upgrades

ارتقا یک کلاستر هدوپ به برنامه‌ریزی دقیقی نیاز دارد. اگر نسخه طرح filesystem تغییر کرده باشد، پس از آن ارتقا، به صورت خودکار داده‌ها و فراداده‌ها به فرمت جدید مهاجرت می‌کنند.