هدوپ (Hadoop) و معماری آن
معرفی هدوپ (Hadoop)
اکنون، بیایید این آموزش را با مقدمه ای در مورد کلان داده یا Big Data آغاز کنیم.
کلان داده چیست؟
کلان داده به مجموعه داده هایی گفته می شود که برای ذخیره و پردازش سیستم های سنتی بسیار بزرگ و پیچیده بکار می روند. مشکلات عمده ای که کلان داده با آن روبرو است عمدتا در سه مورد قرار می گیرد: حجم، سرعت و تنوع داده ها.
آیا می دانید هر دقیقه ما 204 میلیون ایمیل ارسال می کنیم، 1.8 میلیون لایک فیس بوک ایجاد می کنیم، 278 هزار توییت ارسال می کنیم و 200 هزار عکس را به فیس بوک بارگذاری می کنیم؟
حجم: داده های مورد بررسی در حد ترا بایت و پتابایت تولید می شوند. شبکه های اجتماعی بزرگترین سهم را در تولید داده ها دارند. به عنوان مثال، فیس بوک روزانه 500 ترابایت داده تولید می کند. توییتر روزانه 8 ترابایت داده تولید می کند.
سرعت: هر شرکتی الزامات خاص خود را در چارچوب زمانی داده های فرآیندی دارد. بسیاری از موارد استفاده مانند تشخیص تقلب در کارت اعتباری تنها چند ثانیه برای پردازش داده ها در زمان واقعی و تشخیص تقلب زمان دارند. بنابراین نیاز به چارچوبی وجود دارد که قادر به محاسبات سریع داده باشد.
تنوع: همچنین داده های منابع مختلف دارای فرمت های متنوعی مانند متن، XML ، تصاویر، صدا، ویدئو و غیره هستند. بنابراین فناوری کلان داده باید توانایی انجام تجزیه و تحلیل بر روی انواع داده ها را داشته باشد.
چرا هدوپ بوجود آمد؟
اجازه دهید کمبودهای رویکرد سنتی را که منجر به اختراع هدوپ شد، مورد بررسی قرار دهیم:
1. ذخیره سازی برای مجموعه داده های بزرگ
RDBMS معمولی قادر به ذخیره حجم عظیمی از داده ها نیست. هزینه ذخیره اطلاعات در RDBMS موجود بسیار زیاد است. زیرا هزینه سخت افزار و نرم افزار هر دو را متحمل می شود.
2. مدیریت داده ها در فرمت های مختلف
RDBMS قادر به ذخیره و دستکاری داده ها در قالب ساختار یافته است. اما در دنیای واقعی ما باید با داده ها در قالب ساختار یافته، بدون ساختار و نیمه ساختار یافته برخورد کنیم.
3. داده ها با سرعت بالا تولید می شوند
داده ها با حجمی حدود ترا بایت و پنتا بایت روزانه تولید و پردازش مي شوند. بنابراین ما به سیستمی نیاز داریم که داده ها را در مدت چند ثانیه بصورت بلادرنگ پردازش کند. RDBMS سنتی قادر به ارائه پردازش بلادرنگ با سرعت بالا نیست.
هدوپ چیست؟
Hadoop که در متون فارسی هدوپ یا هادوپ هم گفته می شود، راه حلی برای مشکلات بالا در مورد کلان داده است. این فناوری ذخیره مجموعه های عظیم داده بر روی خوشه ای از ماشین های ارزان قیمت به صورت توزیع شده است. همچنین هدوپ، تجزیه و تحلیل داده های بزرگ را از طریق چارچوب محاسبه توزیع شده ارائه می دهد. هدوپ یک چارچوب منبع باز است که به عنوان یک پروژه توسط بنیاد نرم افزار Apache توسعه یافته است. داگ کاتینگ هدوپ را ایجاد کرد. در سال 2008 یاهو هدوپ را به بنیاد نرم افزار Apache داد. از آن زمان دو نسخه از هدوپ آمده است. نسخه 1.0 در سال 2011 و نسخه 2.0.6 در سال 2013. Hadoop در بستر های مختلف مانند Cloudera ، IBM BigInsight ، MapR و Hortonworks پیاده سازی شده است.
پیش نیازهای یادگیری هدوپ
- آشنایی با برخی از دستورات اولیه لینوکس:
هدوپ بر روی سیستم عامل لینوکس و ترجیحا اوبونتو توسعه داده می شود. بنابراین فرد باید برخی از دستورات اولیه لینوکس را بداند. این دستورات برای بارگذاری فایل در HDFS ، دانلود فایل از HDFS و غیره است.
- آشنایی با برنامه نویسی
آشنایی با یکی از زبان های جاوا، پایتون، پرل یا روبی و …
هدوپ شامل سه بخش اصلی است
- سیستم فایل توزیع شده (HDFS): لایه ذخیره سازی
- Map-Reduce: لایه پردازش داده ها
- YARN : لایه مدیریت منابع
1- سیستم فایل توزیع شده (HDFS)
این بخش مدیریت ذخیره سازی اطلاعات را به صورت توزیع شده انجام می دهد. برای این کار از توپولوژی Master-Slave استفاده می شود. Master یک ماشین پیشرفته است از لحاظ سخت افزای و نرم افزا است. در حالی که کامپیوتر Slave معمولی و نیازی به تجهیزات گران قیمت ندارد. در این حالت فایل های کلان داده به تعدادی بلوک تقسیم می شوند. هدوپ این بلوک ها را به صورت توزیع شده بر روی خوشه متشکل از گره های Slave ذخیره می کند. اما در کامپیوتر Master متادیتاهایی برای مدیریت سایر گره ها ذخیره می شود. مدیریت ذخیره سازی داده ها بر روی کامپیوترهای Slave بر عهده Master است. HDFS دارای دو فرآیند پس زمینه به نام های گره نام یا NameNode و گره داده DataNode است.
گره نام مسئولیت های زیر را انجام می دهد.
- گره نام بر روی دستگاه Master اجرا می شود.
- مسئول نگهداری، نظارت و مدیریت گره داده است.
- متاداده های پرونده ها مانند محل بلوک ها، اندازه فایل، مجوز، سلسله مراتب و غیره را ذخیره می کند.
- تمام تغییرات روی داده ها مانند: حذف ، ایجاد و تغییر نام فایل را در گزارش های ویرایش ثبت می کند.
- گزارشات بررسی بر روی گره های داده را به صورت لحظه ای ذخیره می کند.
گره داده مسئولیت های زیر را انجام می دهد.
- بر روی دستگاه Slave اجرا می شود.
- داده های واقعی کسب و کار را ذخیره می کند.
- درخواست خواندن و نوشتن از کاربر را ارائه می دهد.
- کار اصلی ایجاد، تکرار و حذف بلوک ها را به دستور گره نام انجام می دهد.
- پس از هر 3 ثانیه، به طور پیش فرض، وضعیت فعلی را به گره نام ارسال می کند و وضعیت HDFS را گزارش می دهد.
2- MapReduce
این لایه پردازش داده های هدوپ را انجام می دهد. پردازش داده ها در دو مرحله انجام می گیرد.
مرحله Map: این مرحله منطق تجاری را برای داده ها اعمال می کند. داده های ورودی به جفت کلید-مقدار تبدیل می شوند.
مرحله Reduce: این مرحله خروجی مرحله قبل را به عنوان ورودی می گیرد و بر اساس کلید زوج های کلید-مقدار، تجمیع را اعمال می کند.
به طور خلاصه می توان گفت که Map-Reduce به روش زیر عمل می کند:
- سرویس گیرنده فایل را برای ورود به تابع Map تعیین می کند. فایل مربوطه به چند بخش تقسیم می شود.
- تابع Map زوجهای کلید و مقدار را برای فایل ورودی مشخص می کند. خروجی تابع map زوج های کلید-مقدار است.
- چارچوب MapReduce زوج مقدار-کلید را از Map دریافت کرده و مرتب می کند.
- این چارچوب، چندتایی را که کلید یکسانی دارند با هم ادغام می کند.
- Reduce این جفت های کلید-مقدار ادغام شده را به عنوان ورودی دریافت می کنند.
- Reducer توابع کل را روی جفت کلید-مقدار اعمال می کند.
- خروجی Reduce با فرمت HDFS نوشته می شود.
3- YARN
این بخش وظیفه برنامه ریزی و مدیریت منابع را بر عهده دارد و خود شامل 3 قسمت است:
مدیریت منابع
مدیر منابع بر روی کامپیوتر Master اجرا می شود.
- از مکان همه کامپیوترهای Slave اطلاع دارد.
- از میزان منابع هر Slave آگاه است.
- زمانبندی منابع یکی از خدمات مهمی است که توسط مدیر منابع اجرا می شود.
- زمانبندی منابع تصمیم می گیرد که چگونه منابع به وظایف مختلف اختصاص می یابد.
- مدیر اپلیکیشن یک سرویس دیگر است که توسط مدیر منابع اجرا می شود.
- مدیر برنامه برای اولین ظرف برای یک برنامه مذاکره می کند.
- وضعیت عملکرد سیستم را از مدیر گره پیگیری می کند.
مدیر گره
- روی ماشین های Slave کار می کند.
- ظروف را مدیریت می کند. ظروف بخشی از ظرفیت منابع مدیر گره هستند
- مدیر گره بر استفاده از منابع هر ظرف نظارت می کند.
- ضربان قلب (عملکرد) را به مدیر منابع ارسال می کند.
ارسال کننده وظیفه (یک کار)
- مشتری کار را به مدیر منابع ارسال می کند.
- مدیر منابع با برنامه نویس منابع تماس می گیرد و ظرف را اختصاص می دهد.
- اکنون مدیر منابع با مدیر گره مربوطه تماس می گیرد تا ظرف را راه اندازی کند.
- ظرف برنامه Master را اجرا می کند.
ایده اصلی YARN این بود که وظیفه مدیریت منابع و برنامه ریزی وظایف را تقسیم کند. این برنامه دارای یک مدیر منابع سراسری و برنامه کاربردی Master است. یک برنامه می تواند یک وظیفه یا چندین وظیفه باشد. وظیفه مدیر منابع اختصاص منابع به برنامه های مختلف رقیب است. مدیر گره بر روی گره های Slave اجرا می شود. همچنین مدیر منابع مسئول ظروف، نظارت بر استفاده از منابع و اطلاع در مورد همان به مدیر منابع است. وظیفه برنامه کاربردی Master مذاکره در مورد منابع از مدیر منابع است. همچنین با مدیر گره برای اجرا و نظارت بر وظایف کار می کند.
چرا هدوپ؟
بیایید ببینیم چرا کلان داده هدوپ اینقدر محبوب است؟ چرا آپاچی هدوپ بیش از 90 درصد از بازار کلان داده را در اختیار دارد؟ هدوپ نه تنها یک سیستم ذخیره سازی است بلکه یک بستر برای ذخیره داده ها و همچنین پردازش است. مقیاس پذیر است (به راحتی می توانیم گره های بیشتری را به مجموعه اضافه کنیم) ، مقاوم در برابر خطا (حتی اگر گره ها دچار مشکل شوند، داده ها توسط یک گره دیگر پردازش می شوند). ویژگی های زیر هدوپ را به یک پلتفرم منحصر به فرد تبدیل کرده است:
- انعطاف پذیری برای ذخیره و استخراج هر نوع داده اعم از ساختار یافته، نیمه ساختار یافته یا بدون ساختار.
- برتری در پردازش داده های با ماهیت پیچیده.(معماری مقیاس پذیر آن حجم کار را در بسیاری از گره ها تقسیم می کند.
- حذف تنگناهای ETL توسط سیستم فایل انعطاف پذیر ( ETL مشخص کننده فرآیند انتقال داده از مکانی به مکان دیگر است. Extract, Transfer, Load)
- مقرون به صرفه از لحاظ اقتصادی
- منبع باز بودن آن
1 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.