<

عصر هدوپ

آشنایی با Big Data و کار با Hadoop

عصر هدوپ

آشنایی با Big Data و کار با Hadoop

عصر هدوپ
بایگانی

مطلب ۱۱ : فایل سیستم توزیع شده هدوپ، بلاک

پنجشنبه, ۱۸ دی ۱۳۹۳، ۰۸:۵۳ ق.ظ

کوچکترین واحد خواندن و یا نوشتن داده در دیسک را بلاک می نامند. فایل سیستم های معمول که با یک دیسک ارتباط دارند، داده را در تعدادی بلاک سطح بالا تقسیم بندی می نمایند. معمولا اندازه یک بلاک در فایل سیستم چند کیلو بایت است در حالیکه اندازه یک بلاک در دیسک  512 بایت می باشد. البته این نوع تقسیم بندی از دید کاربران پوشیده می باشد.

فایل سیستم توزیع شده هدوپ (HDFS) هم از مفهوم بلاک استفاده می نماید، اما با این تفاوت که بلاک ها اندازه بزرگتری دارند(بصورت پیش فرض 64 مگابایت). همانند یک فایل سیستم معمول، فایل ها در HDFS به بلاک های معینی تقسیم شده و بصورت جداگانه نگهداری می شوند. همچنین برخلاف یک فایل سیستم معمول، درصورتیکه که یک فایل در HDFS کوچکتر از یک بلاک باشد، باقی مانده فضای آن بلاک در اختیار فایل های دیگر قرار خواهد گرفت. یکی از دلایل بزرگ بودن اندازه بلاک در HDFS:به حداقل رساندن هزینه جستجوی آنها هنگام خواندن و یا نوشتن می باشد.

استفاده از مفهوم بلاک برای فایل سیستم های توزیع شده فوایدی را بدنبال خواهد داشت. اولین فایده که به خوبی آشکار است: اندازه یک فایل می تواند بزرگتر از اندازه هر یک از دیسک ها در سطح شبکه باشد. از آنجایی که هیچگونه محدودیتی در مورد نگهداری بلاک های یک فایل روی یک دیسک وجود ندارد، بنابراین آنها می توانند روی هر یک از دیسک های موجود در سطح کلاستر قرار گیرند. در واقع، هر چند غیر طبیعی اما این امکان وجود دارد که تنها ذخیره سازی یک فایل روی HDFS باعث پر شدن تمامی دیسک های فعال در سطح کلاستر شود.

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

علاوه بر آن، بلاک ها به خوبی با مکانیزم تکثیر(Replication) به منظور جلوگیری از Data Loss و انجام کامل پردازش، هماهنگی دارند. به منظور آمادگی سیستم در برابر بلاک های خراب و هرگونه عیب و نقص فنی در سخت افزار، هر بلاک براساس تعداد مشخص شده در تنظیمات (معمولا 3) روی ماشین های جداگانه در سطح کلاستر تکثیر می شود. اگر یک بلاک به هر دلیلی غیر قابل دسترس شود، بدون اینکه کاربر از آن مطلع گردد، کپی دیگری از آن بلاک مورد استفاده قرار خواهد گرفت. HDFS به منظور حفظ یکپارچگی مکانیزم تکثیر بلاک، بلاک خراب و یا غیر قابل دسترس را توسط نسخه دیگری از آن مجددا ایجاد نموده و روی ماشین دیگری تکثیر می نماید.

تنظیم عامل تکثیر(Replication Factor) در شرایط مختلف می بایست ارزیابی گردد. مثلا، فرض کنید در سطح کلاستر فایل مهمی وجود دارد که دائما توسط کاربران مورد استفاده قرار می گیرد. یکی از راه های بالا بردن سرعت دسترسی و پخش کردن بار خواندن داده، زیاد نمودن عامل تکثیر به منظور درگیر کردن تعداد بیشتری از نودهای موجود در سطح کلاستر می باشد.

Hadoop: The Definitive Guide by Tom White

استفاده از این مطلب با ذکر منبع بلامانع می باشد.

نظرات  (۱)

سلام؛ ممنون از شما؛ منظور از :
" در واقع، هر چند غیر طبیعی اما این امکان وجود دارد که تنها ذخیره سازی یک فایل روی HDFS باعث پر شدن تمامی دیسک های فعال در سطح کلاستر شود."
چیه؟ به این معنیه که چون سایز بلاک ها 64 مگه و یه فایل میتونه اونقدر بزرگ باشه که مثلا بشه چند هزارتا از این بلاک ها و یه هارد یک ترا بایتی رو پر کنه؟
پاسخ:
سلام بر شما.
از آنجایی که هیچگونه محدودیتی برای نگهداری یک فایل روی یک هاردیسک در سطح کلاستر وجود ندارد، لذا بلاک های یک فایل می توانند روی هاردیسک های متفاوت نگهداری شوند. مثلا چند بلاک روی هاردیسک الف و چند بلاک روی هاردیسک ب. در نتیجه اگر یک فایل به اندازه تمامی هاردیسک های موجود در سطح کلاستر باشد، HDFS مجبور است  کل بلاک های آن را در خود جای دهد. بنابراین تمامی هاردیسک ها را به خدمت خواهد گرفت. و البته این اصلا ربطی به اندازه بلاک که 64 مگابایت است ندارد. چون HDFS برخلاف دیگر فایل سیستم ها از تمامی ظرفیت یک بلاک بصورت کامل استفاده می کند و ممکن است دو فایل کوچک را در یک یک بلاک نگهداری نماید.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی