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

هادوپ یک نرم افزار کد باز (Open source) است که برای تقسیم بندی و توزیع فایل های متمرکز به کار می رود. هادوپ تحت لیسانس آپاچی (Apache) ارائه می شود و توسط جاوا برنامه نویسی شده است. امّا هادوپ چگونه به وجود آمد؟ شرکت گوگل در پی افزایش حجم تبادل اطلاعات، به دنبال راه حلّی برای افزایش سرعت و راندمان سرورهای خود بود که سیستم توزیع (Distribution) منحصر به فردی برای خود ابداع کرد به نام GFS که مخفف Google File System بود. در پی این موفقیت، انجمن توزیع Apache به فکر گسترش این تکنولوژی در سطح وسیع تری افتاد و سیستم هادوپ به وجود آمد.
در ابتدا بهتر است که بدانیم هدوپ چه چیزی نیست:
هدوپ پایگاه داده نیست.
هدوپ یک نرم افزار نیست.
یک فریم ورک یا مجموعه ای از نرم افزارها و کتابخانه هایی است که ساز و کار پردازش حجم عظیمی از داده های توزیع شده را فراهم میکند. در واقع Hadoop را می توان به یک سیستم عامل تشبیه کرد که طراحی شده تا بتواند حجم زیادی از داده ها را بر روی ماشین های مختلف پردازش و مدیریت کند.
ساختار کلی هدوپ:
تکنولوژی هدوپ از دو بخش کلی اچ دی اف اس یا سیستم فایل انتشاری هدوپ (Hadoop Distribition File System) و همچنین تکنیک با کیفیت پردازی اطلاعات به نام مپ ریدیوس (MapReduce) استفاده می کند.
ساختار کلی اطلاعاتی در هدوپ بدینگونه می باشد که اطلاعات توسط سیستم هدوپ شکسته شده و به چندین سرور فرستاده می شود.سرورها بسته به نوع اطلاعات که ممکن است پردازشی یا ذخیره ای باشد اطلاعات را پردازش یا ذخیره سازی می کنند. در هنگام در خواست اطلاعات مجدد سیستم اطلاعات را از سرور های مختلف گرفته ، مونتاژ کرده و در خروجی نمایش می دهد.
خوبی این سیستم تهیه نسخه پشتیبان از اطلاعات بصورت خودکار است. هر تکه از اطلاعات در چندین قسمت ( سرور ) ذخیره می شود و در صورت آسیب دیدن یکی از سرورها ، سرور دیگر قادر است مسؤولیت را بر عهده گرفته و اطلاعات مورد نظر را جایگزین کند.
برای پیاده سازی هدوپ، کمترین تعداد سرور چند عدد است؟ هرچند پیاده سازی سیستم هدوپ بر روی یک تک سیستم کامپیوتری پیشنهاد نشده است اما نصب و راه اندازی آن تنها برای تست و کسب تجربه روی یک سیستم امکانپذیر است. با توجه به اینکه در این سیستم نیاز به ایجاد نود-سرور هستیم لذا پیشنهاد می کنم در صورتی که مایل به راه اندازی سیستم ذخیره سازی هدوپ برای سازمان خود هستید از چهار سیستم کامپیوتری ( یک سیستم مرکزی و سه نود) استفاده کنید.
چه شرکت هایی نیاز به نصب هدوپ دارند؟ سیستم هدوپ برای ذخیره سازی و پردازش حجم اطلاعات بسیار بالا طراحی شده است لذا اگر شرکت شما در رده شرکت های بزرگ ( اینترپرایز)بوده و دارای چندین هزار کارمند و چندین نرمافزار حجیم اطلاعاتی است از این سیستم استفاده کنید.
Map/Reduce هادوپ
Map/Reduce یک نمونه برنامهنویسی است که یک محاسبه بزرگ توزیع شده را به صورت دنبالهای از عملیات توزیع شده بر روی مجموعه دادهای از زوجهای کلید/مقدار بیان میکند. چارچوب Map/Reduce هادوپ، یک خوشه از ماشینها را به اختیار خود گرفته و کارهای Map/Reduce تعریف شده توسط کاربر را بر روی نودهای این خوشه اجرا میکند. محاسبات Map/Reduce دو فاز دارد: فاز map (نگاشت) و فاز reduce (کاهش). ورودی این محاسبه، مجموعه دادهای از جفتهای کلید/مقدار است.
در فاز map، چارچوب، داده ورودی را به تعداد زیادی قطعه تقسیم کرده و هر قطعه به یک تسک map تخصیص مییابد. چارچوب همچنین تسکهای map (که تعداد زیادی دارند) را بین گرههای یک خوشه برای اجرا توزیع میکند. هر تسک map از زوج کلید/مقدار بخش تخصیص یافتهاش استفاده کرده و مجموعهای از زوجهای میانی کلید/مقدار را تولید میکند. برای هر زوج کلید/مقدار (K, V)، تسک map یک تابع map تعریف شده توسط کاربر را احضار میکند که ورودی را به زوج کلید/مقدار متفاوتی تبدیل میکند(‘K’,V).
به دنبال فاز map، چارچوب، دادههای میانی را با توجه به کلید مرتبسازی میکند و مجموعهای از چندتاییهای (*’K’,V) تولید میکند تا تمام مقادیر مربوط به یک کلید مشخص، با هم نشان داده شوند. چارچوب همچنین مجموعه چندتاییها را به چندین قطعه برابر با تعداد تسکهای reduce تقسیم میکند.
در فاز reduce، هر تسک reduce قطعه شامل چندتایی (*’K’,V) اختصاص داده شده به خود را مصرف میکند. برای هر چندتایی، هر تسک reduce یک تابع reduce تعریف شده توسط کاربر را احضار میکند که چندتایی را به یک خروجی زوج کلید/مقدار (K, V) تبدیل میکند. یک بار دیگر، چارچوب تسکهای reduce فراوانی را بر روی گرههای خوشه توزیع کرده و قطعه مناسب داده میانی را به هر تسک reduce منتقل میکند.
تسکها در هر فاز به صورت تحملپذیر در مقابل خطا اجرا میشوند؛ اگر گرهای در بین محاسبه دچار خرابی شود، تسک تخصیص یافته به آن در بین گرههای باقیمانده باز-توزیع میشود. داشتن تسکهای زیاد map و reduce باعث توزیع مناسب بار شده و اجازه میدهد تا تسکهای ناموفق با سربار زمانی کم دوباره اجرا شوند.
معماری:
چارچوب Map/Reduce هادوپ دارای یک معماری master/slave (ارباب/برده) است. این چارچوب دارای یک سرور ارباب به نام jobtracker (دنبالکننده کار) و سرورهای برده متعدد به نام tasktracker (دنبالکننده تسک یا وظیفه)، به ازای هر گره در خوشه است. Jobtracker نقطه تعامل بین کاربران و چارچوب است. کاربران کارهای map/reduce را به jobtracker تحویل میدهند، که jobtracker این کارها را در یک صف از کارهای معلق قرار داده و آنها را بر اساس اصل first come/first service (هر که سریعتر آمده، سریعتر اجرا میشود) اجرا میکند. jobtracker تخصیص تسکهای map و reduce به tasktrackerها را مدیریت میکند. tasktrackerها، تسکها را بر اساس دستورالعمل jobtracker اجرا کرده و همچنین مسئولیت حرکت داده بین فازهای map و reduce را بر عهده میگیرند.
HDFS هادوپ
سیستم فایل توزیع شده هادوپ برای ذخیره مطمئن فایلهای بسیار بزرگ بر روی ماشینهای یک خوشه بزرگ طراحی شده است. این فایل سیستم الهام گرفته شده از فایل سیستم گوگل میباشد. HDFS هر فایل را به صورت یک دنباله از بلوکها ذخیره میکند، که تمام بلوکهای موجود در یک فایل به غیر از آخرین بلوک هم اندازه هستند. از بلوکهای متعلق به یک فایل برای تحملپذیری در برابر خطا، نسخه کپی تهیه میشود (replication). اندازه بلوک و فاکتور تهیه کپی، در هر فایل قابل تنظیم است. فایلهای موجود در HDFS همه “wrire once” هستند و تنها یک نویسنده در هر زمان دارند.