وبلاگ

آپاچی هدوپ (Hadoop) چیست؟

آپاچی هدوپ چیست
حرارت و سیالات

آپاچی هدوپ (Hadoop) چیست؟

5/5 - (1 امتیاز)

آپاچی هدوپ یا هادوپ مجموعه ای از نرم افزارهای منبع باز (Open source) است. که ذخیره سازی، توزیع و پردازش دیتا و اجرای برنامه ها را بر روی دسته ای از سرورها ممکن می سازد. این چارچوب (Frame Work) که به زبان جاوا نوشته شده و تحت لیسانس آپاچی (Apache) ارائه می شود، برای انجام پردازش توزیع شده بر روی هزاران ماشین با تحمل خطای بسیاربالا طراحی شده است.

پیشینه آپاچی هدوپ

با گسترش شبکه جهانی وب در اواخر دهه 1900 و اوایل دهه 2000، موتورهای جستجو و ایندکس جهت یافتن اطلاعات مربوطه در میان محتوای متنی ایجاد شدند. در آن برهه زمانی و در پی افزایش حجم تبادل اطلاعات، شرکت گوگل به دنبال راهی جهت افزایش سرعت و راندمان سرورهای خود بود. که در پی آن، سیستم توزیع (Distribution) منحصر به فردی به نام GFS که مخفف واژۀ Google File System است را برای خود ابداع نمود. در پی این موفقیت، فردی به نام Doug Cutting در انجمن توزیع شرکت Apache به فکر گسترش این تکنولوژی در سطح وسیع تری افتاد و پس از آن نام فیل اسباب بازی فرزندش را بر روی آن نهاد.

دوگ کاتینگ
دوگ کاتینگ

هدف اصلی دوگ کاتینگ و تیمش از تولید این ابزار، استفاده از آن در موتور جستجوی Apache به نام Nutch بود. و قصد داشتند با توزیع دیتا و محاسبات در رایانه های گوناگون، نتایج جستجوی وب را سریع تر بازگردانند تا چندین کار به صورت هم زمان انجام شود.

در طول مدت این پروژه، موتور جستجوی دیگری به نام Google در دست احداث بود و پس از آن بسیاری از شرکت های بزرگ مانند Facebook,Google,Yahoo و… نیز از این دست آورد استفاده نمودند.

در سال 2006، پروژه Nutch جداسازی شد و بخش خزنده وب تحت عنوان Nutch و بخش محاسبات و پردازش توزیع شده با نام Hadoop باقی ماند. در سال 2008 کمپانی یاهو، هدوپ را به عنوان یک پروژه منبع باز منتشر کرد. امروز، چارچوب و اکوسیستم فناوری هادوپ توسط بنیاد نرم افزاری غیر انتفاعی Apache (ASF) مدیریت و نگهداری می شود.

معرفی هادوپ

معرفی هادوپ
معرفی هادوپ

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

این ابزار تمامی فایل های درخواستی شامل متن، تصویر یا سایر فایل ها را برای مرورگر ارسال می کند. این همان نقش واسطه گری است که این ابزار ایفا می کند. سرور و کاربر به وسیله ی پروتکل های HTTP با هم ارتباط برقرار خواهند کرد. و مسئولیت برقراری یک ارتباط امن و روان میان این دو ماشین برعهده ابزار آپاچی هدوپ می باشد.

حال اگر کمی تخصصی تر به این موضوع بنگریم باید گفت، هسته اصلی هادوپ از یک بخش ذخیره سازی (سیستم فایل توزیع شده هادوپ یا همان HDFS) و یک بخش پردازش (Map/Reduce) تشکیل شده است. هادوپ فایل ها را به بلوک های بزرگ شکسته و آن ها را بین نودهای یک خوشه توزیع می کند. برای پردازش دیتا، بخش Map/Reduce بسته کدی را ارسال می کند تا پردازش را به صورت موازی انجام دهند.

این رویکرد از جایگاه دیتا بهره می برد. نودها (Nods) بر روی بخشی از دیتا کار می کنند که در دسترس شان قرار دارد. به این ترتیب دیتاها سریع تر و کاربردی تر از زمانی که یک معماری متکی بر ابررایانه که از سیستم موازی استفاده می کند و محاسبه دیتا را از طریق یک شبکه پر سرعت به هم متصل می کند، پردازش می شوند.

چارچوب هادوپ همچنین از زبان C و شل اسکریپت در بخش هایی بهره گرفته است. کاربران در نهایت می توانند در کار با هادوپ، از هر زبان برنامه نویسی، برای پیاده سازی بخش های “map” و “reduce” استفاده کنند.

چارچوب آپاچی هدوپ

چارچوب آپاچی هدوپ
چارچوب آپاچی هدوپ

چارچوب اصلی هادوپ شامل ماژول های زیر است:

بخش مشترکات هادوپ

این بخش شامل کتابخانه ها و utility های لازم توسط دیگر ماژول های هادوپ است.

سیستم فایل توزیع شده هدوپ (HDFS)

یک سیستم فایل توزیع شده که دیتا را بر روی ماشین های خوشه ذخیره کرده و پهنای باند وسیعی را به وجود می آورد.

YARN هادوپ

یک پلتفرم مدیریت منابع که مسئول مدیریت منابع محاسباتی در خوشه ها می باشد.

نگاشت کاهش هدوپ (Map/Reduce)

یک مدل برنامه نویسی برای پردازش دیتا در مقیاس های بالاست. در واقع هادوپ یک سیستم فایل توزیع شده تهیه می کند که می تواند دیتا را بر روی هزاران سرور ذخیره کند، و تسک های Map/Reduce را بر روی این ماشین ها پخش کرده و آن ها را در کنار دیتا انجام دهد.

Map/Reduce هادوپ

Map/Reduce یک مدل‌ برنامه نویسی است که یک محاسبه بزرگ توزیع شده را به صورت دنباله ای از عملیات توزیع شده بر روی مجموعه داده ای از زوج های کلید/ مقدار بیان می کند. چارچوب Map/Reduce هادوپ، یک خوشه از ماشین ها را به اختیار خود گرفته و کارهای نگاشت کاهش تعریف شده توسط کاربر را بر روی نودهای این خوشه اجرا می کند.

فازهای Map/Reduce

محاسبات Map/Reduce دو فاز دارد. فاز map (نگاشت) و فاز reduce (کاهش). ورودی این محاسبه، مجموعه ای از دیتاها از جفت های کلید/ مقدار است. در فاز map، چارچوب، دیتای ورودی را به تعداد بسیاری قطعه تقسیم کرده و هر قطعه به یک تسک map تمایز می یابد. چارچوب همچنین تسک های map (که معمولاً تعداد بالایی دارند) را میان نودهای یک خوشه برای اجرا توزیع می کند.

هر تسک map از زوج کلید/ مقدار بخش تخصیص یافته اش استفاده کرده و مجموعه ای از زوج های میانی کلید/مقدار را ایجاد می کند. برای هر زوج کلید/ مقدار (K,V) تسک map یک تابع تعریف شده به وسیلۀ کاربر را احضار می کند که ورودی را به زوج کلید/مقدار متفاوتی تبدیل می کند.

همگام با فاز map، چارچوب، دیتاهای میانی را با توجه به کلید سازماندهی می کند و مجموعه ای از چندتایی های (*’K’,V) ایجاد می کند. تا تمامی مقادیر مربوط به یک کلید، با هم مشخص شوند. چارچوب همچنین مجموعه چندتایی ها را به چندین قطعه برابر با تعداد تسک های reduce تقسیم میکند.

در فاز reduce، هر تسک، قطعه ی شامل چندتایی های (*’K’,V) مختص خود را مصرف می کند. برای هر چندتایی، هر تسک reduce یک تابع تعریف شده به وسیلۀ کاربر را احضار می کند تا چندتایی را به یک خروجی زوج کلید/مقدار (K,V) تبدیل کند. و یک بار دیگر، چارچوب تسک های reduce فراوان را بر روی نودهای خوشه توزیع نموده و قطعه مناسب دیتاهای میانی را به هر تسک reduce منتقل کند.

معماری Map/Reduce

معماری Map/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 هر فایل را به صورت یک دنباله از بلوک ها ذخیره می کند، که تمامی بلوک های موجود در یک فایل به جز آخرین بلوک هم اندازه هستند. از بلوک های متعلق به یک فایل برای تحمل پذیری در مقابل خطا، نسخه کپی تهیه می شود. اندازه بلوک و فاکتور نسخه کپی، در هر فایل قابل مشاهده است. فایل های موجود در HDFS همه “wrire once” هستند و تنها یک نویسنده در هر زمان دارند.

معماری HDFS هدوپ

همانند Map/Reduce هادوپ، HDFS نیز دارای یک معماری (ارباب/برده) است. ساختار HDFS شامل یک Namenode (گره نام) است که یک سرور ارباب بوده و فضای نام فایل سیستم را مدیریت کرده و دسترسی به فایل ها توسط کلاینت ها را تنظیم می کند. به علاوه، تعدادی Datanode (گره داده) نیز وجود دارد، که به ازای هر نود در خوشه، مخزن اختصاصی به نودها که بر روی آن اجرا می شوند را مدیریت می کند.

نِیم نودها عملیاتی مانند باز و بسته کردن و تغییر نام فایل ها و دایرکتوری ها را به وسیله یک واسط RPC برای فضای نام فایل سیستم ممکن می کنند و همچنین نگاشت بلوک ها را به Datanode معین می کنند. Datanode ها مسئول انجام خدمات مربوط به درخواست های خواندن و نوشتن رسیده از طرف کلاینت های فایل سیستم هستند. همچنین تولید، حذف و ایجاد کپی از بلوک ها را بر حسب دستورالعمل Namenode انجام می دهند.

پیش نیازهای یادگیری آپاچی هدوپ

آشنایی با دستورات اولیه لینوکس:

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

آشنایی با برنامه نویسی:

آشنایی با یکی از زبان های برنامه نویسی پایتون، جاوا، پرل، روبی و…

ویژگی های آپاچی هدوپ

کاربردهای آپاچی هدوپ
کاربردهای آپاچی هدوپ

امکان ذخیره و پردازش سریع دیتا

با افزایش حجم و انواع گوناگون دیتاها، به خصوص از طریق رسانه های اجتماعی و اینترنت اشیاء (IoT)، این مسئله نکته ای حائز اهمیت است. مدل محاسباتی هادوپ، دیتای بزرگ را به سرعت پردازش می کند. هرچه از گره محاسباتی بیشتر استفاده کنید، قدرت پردازش بیشتری نیز خواهید داشت.

مطلب مرتبط: اینترنت اشیاء (IOT) چیست؟

کاهش میزان خطای سخت افزاری

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

انعطاف پذیری

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

هزینه پایین

چارچوب منبع باز هدوپ آزاد است و از سخت افزار برای ذخیره مقادیر بسیاری از دیتا استفاده می کند.

مقیاس پذیری

با استفاده از هدوپ می توانید سیستم خود را برای مدیریت دیتا های بیشتر، به سادگی با افزودن نودها توسعه دهید.

چالش های هدوپ

چالش های هدوپ
چالش های هدوپ

نامناسب در برخی زمینه ها

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

نیازمند مهارت بالا

یافتن برنامه نویس سطح بالایی که دارای مهارت کافی جاوا باشد و برای تهیه نگاشت کاهش دشوار است.

امنیت دیتا

یکی دیگر از مراکز چالش، حول مسائل مربوط به امنیت دیتاهای پراکنده است. درحالی که ابزارها و فناوری های نوین در حال رونمایی هستند. پروتکل احراز هویت Kerberos گامی بزرگ جهت ایمن سازی محیط کاربری آپاچی هدوپ است.

مدیریت کامل دیتا

محیط آپاچی هدوپ از ابزارهای کاربردی و آسان برای مدیریت دیتا و پاکسازی آن ها برخوردار نیست. خصوصاً ابزاری جهت کیفیت دیتاها و استاندارد سازی در آن وجود ندارد.​

سخن پایانی

در این مقاله سعی بر آشنایی کامل شما با آپاچی هدوپ داشتیم. همچنین تمامی پیش نیازها، ویژگی ها و چالش های کار با این نرم افزار را برای شما بازگو نمودیم.امیدواریم که این مطلب برای شما مفید واقع شده باشد.

شما همچنین می توانید با شرکت در دوره های آموزشی کار با آپاچی هدوپ، در دانشکده مهندسی مکانیک دانشگاه تهران؛ به صورت کامل و کاربردی با این نرم افزار آشنا شوید.

دیدگاه خود را اینجا قرار دهید

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