خانه / NoSQL / معرفی و آموزش / معرفی هدوپ و آشنایی با معماری آن
Hadoop

معرفی هدوپ و آشنایی با معماری آن

اين مطلب يكي از مقالات بخش ويژه نشريه ماهنامه شبكه در شماره ۱۳۳ با عنوان جنبش NoSQL مي‌باشد.
بر‌اساس گزارش IDC، حجم داده‌هاي دیجیتالی که در سال ۲۰۱۱ تولید‌ شده‌اند، ده برابر سال ۲۰۰۶ خواهد بود: ۱۸۰۰ اگزابایت! بخش اعظم این داده‌ها، داده‌هاي بی‌ساختار و پیچیده‌اي خواهند بود که برای مدیریت شدن با سیستم‌هاي رابطه‌اي سنتی اصلاً مناسب نیستند. این داده‌هاي بی‌ساختار شامل هر چیزی هستند: ‌از فایل‌هاي متنی، اطلاعات حسگرها، داده‌هاي تولید‌شده توسط کاربران، پیام‌هاي متنی، صدا، عکس و بسیاری از موارد دیگر. حجم عظیم داده‌هاي پیچیده مي‌تواند چشم‌اندازها و واقعیات بسیاری را به‌صورت پنهان در خود داشته‌باشد. واقعیت‌هايي نظیر الگوهای خرید مشتریان در فروشگاه‌هاي بزرگ، علاقه‌مندی‌هاي بازدیدکنندگان یک سایت و نمایش تبلیغاتی در زمینه علاقه آن‌ها، امکان تشکیل یک ژن از به هم چسبیدگی مجموعه‌اي از نوکلئوتیدها، پیش‌بینی وضعیت بازار و تخمین‌هاي اقتصادی پیچیده و بسیاری دیگر از مفاهیم معنایی دشوار. مواجهه با داده‌هاي بزرگ و امکان واکاوی چنین واقعیت‌هايي تنها از سیستم‌هاي ذخیره‌سازی ارزان قیمت و سیستم‌هاي نرم‌افزاری جدید برای تحلیل چنین داده‌هايي بر‌مي‌آید. این نیاز، دقیقاً زمينه تولد پروژه اپن‌سورسی با نام هدوپ است که شايد به یکی از مهم‌ترین فریم‌ورک‌هاي تحلیل داده‌هاي عظیم روی کلاسترهای ساخته‌شده از كامپيوترهاي نه چندان گران‌قیمت تبدیل‌شود. هدوپ، پروژه‌اي است که حتی مایکروسافت را نیز به خود علاقه‌مند کرده و دشمن دیرین جنبش اپن‌سورس، که زمانی آن را «سرطان» مي‌دانست، نیز به شایستگی خود متقاعد كرد.

هدوپ چیست؟

درصورتی که مقاله‌هاي مربوط به سیستم نرم‌افزاری کندور را در شماره‌های ۸۸ و ۸۹ ماهنامه خوانده‌اید، بهتر است بدانید که هدوپ از لحاظ مفهوم کاری به میزان بسیار زیادی به این پلتفرم شبیه است. با این حال، تفاوت‌هاي بنیادینی میان این دو پلتفرم محاسباتی وجود دارد که با خواندن ادامه این مقاله، به آن‌ها پی خواهید برد.

در بازه‌اي تقریباً دو ساله، هدوپ، یک نرم‌افزار اپن سورس رایگان، که از روی یک اسباب بازی نام‌گذاری‌شده بود، بسیاری از سایت‌هاي بزرگ و معروف دنیا را تسخیر‌کرد. این نرم‌افزار هم‌اکنون موتورهای جست‌وجوی بزرگ را کنترل مي‌کند و درباره نمایش تبلیغات در کنار نتایج جست‌وجو تصمیم مي‌گیرد، مطالبی را که در صفحه نخست یاهو نمایش داده مي‌شوند،تعیین مي‌کند یا در یافتن دوستی بسیار قدیمی در یک شبکه اجتماعی نقشی اساسی ایفا مي‌كند. هدوپ چنین قدرتی را از طریق ارزان سازی و ساده‌سازی تحلیل حجم غیر‌قابل تصور‌داده‌هایی که در سطح اینترنت پراکنده‌اند، به دست آورده‌است. با فراهم‌شدن امکان نگاشت اطلاعات روی هزاران كامپيوتر ارزان و خلق روش‌هاي آسان‌تر برای نوشتن پرس و جوهای تحلیلی، مهندسان از شر چالش‌هاي بزرگ برای واکاوی داده‌ها خلاص شده‌اند و به سادگی، سؤال‌شان را مي‌پرسند.

به زبان ساده، هدوپ یک فریم‌ورک کلی پردازشی است که برای اجرای پرس‌و‌جوها و دیگر عملیات تکراری روی مجموعه‌هاي داده‌اي عظیم با حجم­‌های ترابایت و حتی پتا‌بایتی طراحی‌شده است. در این نرم‌افزار، داده­‌ها در یک سیستم فایلی مخصوص و توریع یافته با نام HDFS (سرنامHadoop Distributed File System) ذخیره‌سازی و بارگذاری مي‌شوند.

این پروژه که هم اکنون یکی از پروژه‌هاي سطح بالای آپاچی است، بر اساس مفهوم Map Reduce و GFS معرفی شده از طرف گوگل توسعه داده‌شده است. هدوپ برای نخستين‌بار توسط فردی با نام دوگ کاتینگ(Doug Cutting) برای پشتیبانی از توزیع‌شدگی در پروژه موتور جست وجوی Nutch ایجاد شد. کاتینگ نام پروژه را از روی فیل عروسکی پسرش انتخاب کرد (شكل۱).

Hadoop_Dough_Cutting

شکل ۱- سازنده هدوپ و فیل عروسکی معروف پسرش

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

معماری

بسیاری از ابزارهای مدیریت‌داده در سطح سازمان‌هاي بزرگ، از جمله پایگاه‌هاي داده‌ رابطه‌اي سنتی، طوری طراحی شده‌اند که پرس و جوهای ساده را با سرعت اجرا كنند. آن‌ها با استفاده از تکنیک‌هاي پیشرفته‌اي مانند نشانه‌گذاری داده‌ها، به ارزیابی قسمت کوچکی از داده‌هاي موجود پرداخته و عملیات پرس‌و‌جو را به اتمام مي‌رسانند. در نقطه مقابل، هدوپ ابزار متفاوتی است که عملیات فوق را به روش دیگری انجام می‌دهد. هدوپ، مسائلی را هدف گرفته که یافتن پاسخ آن‌ها، به تحلیل كل داده‌هاي موجود در سیستم نياز دارد. به‌عنوان مثال، در تحلیل متن یا پردازش تصاویر نیاز است تا هر رکورد اطلاعاتی خوانده شده و براساس محتوای دیگر رکوردهای مشابه تفسیر شود. هدوپ عملیات روی داده‌هاي بسیار بزرگ و حجیم را با مقیاس‌دهی افقی (Scale Out) پردازش­‌ها روی تعداد بسیار زیادی از سرورها و با استفاده از روش MapReduce (توزیع و تجمیع) به انجام مي‌رساند. توجه به این مفهوم در چند سال اخیر به آن دلیل است که مقیاس پذیری عمودی (Scale Up) یا استفاده از یک سرور منفرد اما بسیار قوی، بسیار پر هزینه و محدود کننده است. در اصل، در حال حاضر و آینده قابل پیش بینی ما، هیچ سرور منفرد مناسبی برای پردازش حجم‌هاي بسیار زیادي از داده‌ها در زمان قابل قبول وجود ندارد و به همین دلیل، تمام توجه‌ها به سمت شکستن سربار عملیات پردازش روی ماشین‌هاي کوچک‌تر، ارزان‌تر و با قابلیت نگه‌داری بالاتر جلب شده است. با استفاده از این مفهوم، مي‌توان با افزایش یا کاهش تعداد سرورهای فعال در یک مجموعه توان‌پردازشی را به میزان دلخواه کم یا زیاد‌كرد و همچنين، از امکان جایگزینی ماشین‌هاي معیوب با ماشین‌هاي سالم نیز بهره برد. استفاده از این قابلیت، اما به قابلیت مقياس‌دهی افقی پردازش‌هاي مورد‌نظر و امکان اجرای موازی آن‌ها نیزبستگی دارد. با استفاده از روش توزیع و تجمیع، هدوپ یک پردازش را شکسته و پردازش‌هاي کوچک‌تر را به سرورهای مختلف ارسال مي‌کند تا هر کدام پردازش مربوط به خود را به اتمام برسانند. سپس، هدوپ نتایج هر کدام را دریافت کرده و در فایل‌هایی مي‌نویسد که ممکن است به‌عنوان ورودی به پله‌هاي جدیدی از توزیع و تجمیع ارسال شوند. تکنیک توزیع و تجمیع در آغاز توسط دو تن از مهندسان گوگل و برای ایندکس کردن در کاربردهای مربوط به جست‌وجوی وب معرفی شد و بعدها توسط بسیاری از پروژه‌ها مورد استفاده قرار‌گرفت. در بحث جست‌وجو، تابع Map پارامترهای جست‌وجو پذیر هر صفحه وب را پیدا کرده و تابع Reduce این داده ها را به‌عنوان ورودی دریافت کرده و تعداد بارهایی را که پارامترهای مذکور در این صفحه استفاده شده‌اند، به دست مي‌آورد.

فرآیند توزیع و تجمیع از دو بخش اصلی تشکیل شده است : فرآیند توزیع که در طی آن، کار بین نودهای شبکه توزیع می شود و فرآیند تجمیع که نتایج هر نود به صورت چندمرحله ای ، جمع آوری شده و نهایتا نتیجه اصلی را تولید می کند.
در هدوپ، مفهوم توزیع و تجمیع به‌صورت Master/Slave اجرا مي‌شود. در این مجموعه، یک سرور Master وجود دارد که با نام Job Tracker شناخته مي‌شود و تعدادی سرور Slave که با نام Task Tracker مشخص مي‌شوند و به ازای هر نود در یک کلاستر، یکی از آن‌ها وجود دارد. ماشین Job Tracker نقطه برقراری ارتباط کاربر و کل فریم‌ورک است. در این سیستم، کاربر وظایف توزیع و تجمیع خود را به ماشین Job Tracker تحویل داده و این ماشین وظایف را بر‌اساس تکنیک نخستين ورودی/اولین اجرا شونده، روی صفی از وظایف منتظر اجرا قرار داده و به ماشین‌هاي slave مي‌فرستد. ماشین Job Tracker مدیریت و نحوه تخصیص عملیات توزیع و تجمیع به Task Tracker ها و همچنین مبادلات داده‌اي میان آن‌ها و میان عمليات دوگانه توزیع و تجمیع را بر عهده دارد. توجه كنيد که به دلیل عدم انجام عملیات به روز رسانی و پردازش تراکنش‌ها، هدوپ را نمی‌توان یک پایگاه داده به شمار آورد. همچنين، هدوپ از کاربردهای پایه‌اي مانند ایندکس‌کردن یا رابط‌هاي SQL پشتیبانی نمی‌کند، اما در این زمینه، چند پروژه اپن‌سورس برای فعال‌سازی این امکانات در هدوپ آغاز شده است.

mapreduce-example
شکل ۲- عملیات توزیع و تجمیع در هدوپ

 

hdfs-data-distribution

شکل ۳- نحوه ذخیره سازی فایل‌هاي روی HDFS – توزیع بلاکهای هر فایل روی چندین نود در شبکه

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

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Time limit is exhausted. Please reload CAPTCHA.