<

عصر هدوپ

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

عصر هدوپ

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

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

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

چهارشنبه, ۱۰ دی ۱۳۹۳، ۰۸:۵۳ ق.ظ

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

هدوپ دارای یک فایل سیستم توزیع شده با نام Hadoop Distributed File System) HDFS) می باشد. HDFS بهترین و مهمترین فایل سیستم هدوپ است.


طراحی HDFS

HDFS فایل سیستمی است که به منظور نگهداری فایل های بسیار بزرگ با الگوهای دسترسی جریان داده و اجرا روی کلاستری از ماشین ها طراحی شده است. در زیر با جزئیات بیشتری به تعریف ارائه شده می پردازیم:

فایل های بسیار بزرگ

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

دسترسی جریان داده

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

کلاستری از ماشین ها

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


البته HDFS یک فایل سیستم توزیع شده فراگیری نمی باشد، از این جهت که محیط هایی هستند که این فایل سیستم با توجه به تعریف آن در آنها جایگاهی ندارد:

دسترسی داده با حداقل وقفه

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

تعداد زیادی فایل کوچک

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

چندین نویسنده، اصلاحات دلخواه فایل

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

Hadoop: The Definitive Guide by Tom White

استفاده از این مطلب با ذکر منبع بلامانع می باشد.
موافقین ۱ مخالفین ۰ ۹۳/۱۰/۱۰

نظرات  (۱)

۱۵ دی ۹۳ ، ۱۳:۴۰ مهدی نصیری
ممنون از زحمت خوب شما
پاسخ:
خواهش می کنم

ارسال نظر

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