مطلب ۱۱ : فایل سیستم توزیع شده هدوپ، بلاک
کوچکترین واحد خواندن و یا نوشتن داده در دیسک را بلاک می نامند. فایل سیستم های معمول که با یک دیسک ارتباط دارند، داده را در تعدادی بلاک سطح بالا تقسیم بندی می نمایند. معمولا اندازه یک بلاک در فایل سیستم چند کیلو بایت است در حالیکه اندازه یک بلاک در دیسک 512 بایت می باشد. البته این نوع تقسیم بندی از دید کاربران پوشیده می باشد.
فایل سیستم توزیع شده هدوپ (HDFS) هم از مفهوم بلاک استفاده می نماید، اما با این تفاوت که بلاک ها اندازه بزرگتری دارند(بصورت پیش فرض 64 مگابایت). همانند یک فایل سیستم معمول، فایل ها در HDFS به بلاک های معینی تقسیم شده و بصورت جداگانه نگهداری می شوند. همچنین برخلاف یک فایل سیستم معمول، درصورتیکه که یک فایل در HDFS کوچکتر از یک بلاک باشد، باقی مانده فضای آن بلاک در اختیار فایل های دیگر قرار خواهد گرفت. یکی از دلایل بزرگ بودن اندازه بلاک در HDFS:به حداقل رساندن هزینه جستجوی آنها هنگام خواندن و یا نوشتن می باشد.
استفاده از مفهوم بلاک برای فایل سیستم های توزیع شده فوایدی را بدنبال خواهد داشت. اولین فایده که به خوبی آشکار است: اندازه یک فایل می تواند بزرگتر از اندازه هر یک از دیسک ها در سطح شبکه باشد. از آنجایی که هیچگونه محدودیتی در مورد نگهداری بلاک های یک فایل روی یک دیسک وجود ندارد، بنابراین آنها می توانند روی هر یک از دیسک های موجود در سطح کلاستر قرار گیرند. در واقع، هر چند غیر طبیعی اما این امکان وجود دارد که تنها ذخیره سازی یک فایل روی HDFS باعث پر شدن تمامی دیسک های فعال در سطح کلاستر شود.
دومین فایده، استفاده از بلاک بجای فایل به عنوان یک واحد انتزاعی باعث ساده تر شدن سیستم ذخیره سازی داده می شود. ساده سازی موضوعی است که تمامی سیستم ها بخصوص سیستم های توزیع شده بدنبال آن می باشند. این سیستم با بلاک ها در ارتباط بوده و از آنجایی که اندازه یک بلاک مشخص و ثابت است، تقسیم و مدیریت داده در آن راحتر صورت می پذیرد. توجه داشته باشید که بلاک ها صرفا قطعه های مشخصی از داده هستند که در HDFS نگهداری می شوند و هر گونه فراداده (Metadata) مربوط به یک فایل نظیر اطلاعات امنیتی و غیره می تواند بصورت جداگانه نگهداری شده و مورد استفاده قرار گیرد.
علاوه بر آن، بلاک ها به خوبی با مکانیزم تکثیر(Replication) به منظور جلوگیری از Data Loss و انجام کامل پردازش، هماهنگی دارند. به منظور آمادگی سیستم در برابر بلاک های خراب و هرگونه عیب و نقص فنی در سخت افزار، هر بلاک براساس تعداد مشخص شده در تنظیمات (معمولا 3) روی ماشین های جداگانه در سطح کلاستر تکثیر می شود. اگر یک بلاک به هر دلیلی غیر قابل دسترس شود، بدون اینکه کاربر از آن مطلع گردد، کپی دیگری از آن بلاک مورد استفاده قرار خواهد گرفت. HDFS به منظور حفظ یکپارچگی مکانیزم تکثیر بلاک، بلاک خراب و یا غیر قابل دسترس را توسط نسخه دیگری از آن مجددا ایجاد نموده و روی ماشین دیگری تکثیر می نماید.
تنظیم عامل تکثیر(Replication Factor) در شرایط مختلف می بایست ارزیابی گردد. مثلا، فرض کنید در سطح کلاستر فایل مهمی وجود دارد که دائما توسط کاربران مورد استفاده قرار می گیرد. یکی از راه های بالا بردن سرعت دسترسی و پخش کردن بار خواندن داده، زیاد نمودن عامل تکثیر به منظور درگیر کردن تعداد بیشتری از نودهای موجود در سطح کلاستر می باشد.
Hadoop: The Definitive Guide by Tom White