آنچه در این صفحه می خوانید:
هدوپ (Hadoop) چیست؟
Apache Hadoop مجموعه ای از برنامه های نرم افزاری اوپن سورس است که استفاده از شبکه تعدادی رایانه را برای حل مشکلات مربوط به حجم زیاد کلان داده و محاسبات تسهیل می کند. این فریمورک نرم افزاری برای ذخیره سازی توزیع شده و پردازش داده های بزرگ را با استفاده از مدل برنامه نویسی MapReduce فراهم می کند. در اصل برای رایانش خوشهای ساخته شده از سخت افزار Commodity computing که هنوز هم استفاده از آن متداول است، در دسته های سخت افزاری سطح بالا نیز استفاده شده است. کلیه ماژول های موجود در Hadoop با این فرض اساسی طراحی شده اند که خرابی های سخت افزاری اتفاق رایج است و باید بطور خودکار توسط فریمورک کنترل شود.
هسته اصلی Apache Hadoop شامل قسمت ذخیره سازی است که به نام Hadoop Distribited File System معروف است و بخش پردازش که مدل برنامه نویسی MapReduce است. Hadoop فایل ها را در بلوک های بزرگ تقسیم می کند و آن ها را در گره ها در خوشه توزیع می کند. سپس کد بسته بندی شده را به گره ها انتقال می دهد تا داده ها به موازات پردازش شوند. این روش از موقعیت مکانی داده ها استفاده می کند، جایی که گره ها داده های دسترسی به آن ها را دستکاری می کنند. این فرایند باعث می شود تا مجموعه داده ها سریع و کارآمدتر از آنچه در معماری ابر رایانه رایج انجام می شود، پردازش شود و به سیستم فایل موازی متکی باشد که در آن محاسبات و داده ها از طریق شبکه های پر سرعت توزیع می شود.
فریمورک پایه Apache Hadoop از ماژول های زیر تشکیل شده است:
- Hadoop Common: حاوی کتابخانه ها و برنامه های کاربردی مورد نیاز سایر ماژول های Hadoop است.
- سیستم فایل توزیع شده (HDFS): سیستم فایل توزیع شده است که داده ها را در دستگاه های Commodity computing ذخیره می کند و پهنای باند بسیار بالایی را در کل خوشه ها فراهم می کند.
- Hadoop YARN: (معرفی شده در سال 2012) بستر مسئول مدیریت منابع محاسباتی در خوشه ها و استفاده از آن ها برای برنامه ریزی برنامه های کاربران.
- Hadoop MapReduce: اجرای مدل برنامه نویسی MapReduce برای پردازش داده ها در مقیاس بزرگ.
اصطلاح Hadoop اغلب برای ماژول های پایه و زیر ماژول ها و همچنین اکوسیستم یا مجموعه ای از بسته های نرم افزاری اضافی که در بالای یا در کنار Hadoop نصب می شود، مانند آپاچی پیگ (Apache Pig)،آپاچی هایو (Apache Hive)،آپاچی اچ بیس (Apache HBase)،Apache Phoenix،Apache Spark،Apache ZooKeeper،Cloudera Impala،Apache Flume،Apache Sqoop،Apache Oozie و Apache Storm و ... استفاده می شود. اجزای MapReduce و HDFS آپاچی هدوپ توسط مقالات Google در MapReduce و Google File System الهام گرفته شده است. فریمورک Hadoop اکثراً به زبان برنامه نویسی جاوا نوشته شده است و برخی از برنامه های نیتیو در سی (C) و ابزارهای خط فرمان به صورت اسکریپت پوسته نوشته شده اند. گرچه کد MapReduce جاوا رایج است، از هر زبان برنامه نویسی می توان با Hadoop Streaming برای اجرای نقشه و کاهش بخش هایی از برنامه کاربر استفاده کرد. پروژه های دیگر در اکوسیستم Hadoop رابط های کاربر غنی تر را در معرض نمایش قرار می دهند.
تاریخچه هدوپ (Hadoop)
طبق گفته بنیانگذاران Doug Cutting و Mike Cafarella، پیدایش Hadoop از مقاله Google File System بود که در اکتبر 2003 منتشر شد. این مقاله باعث ایجاد مقاله دیگری به نام "MapReduce: پردازش داده های ساده شده در خوشه های بزرگ" از Google شد. توسعه از پروژه Apache Nutch آغاز شد اما در ژانویه 2006 به پروژه جدید Hadoop منتقل شد. داگ برش، که در یاهو مشغول به کار بود. در آن زمان، آن را به نام فیل اسباب بازی پسرش نامگذاری کرده است. کد اولیه ای که از Nutch مورد استفاده قرار گرفت شامل حدود 5000 خط کد برای HDFS و حدود 6000 خط کد برای MapReduce بود. در مارس 2006، Owen O’Malley اولین متعهدی بود که به پروژه Hadoop اضافه شد. Hadoop 0.1.0 در آوریل 2006 منتشر شد. این روند از طریق مشارکت هایی که در این پروژه انجام می شود، تکامل می یابد.
معرفی نگاشت کاهش (MapReduce)
MapReduce یک فریمورک نرم افزاری و مدل برنامه نویسی است که برای پردازش مقادیر عظیم داده ها استفاده می شود. برنامه برنامه MapReduce در دو مرحله یعنی Map و Reduce کار می کند. وظایف نقشه با تقسیم و نقشه برداری از داده ها مقابله می کنند در حالی که وظایف را کاهش داده و داده ها را کاهش می دهد.
Hadoop قادر به اجرای برنامه های MapReduce است که به زبان های مختلف نوشته شده است: جاوا، روبی، پایتون و سی پلاس پلاس. برنامه های MapReduce به طور طبیعی موازی هستند، بنابراین برای انجام تجزیه و تحلیل داده ها در مقیاس بزرگ با استفاده از چندین ماشین موجود در خوشه بسیار مفید هستند.
معرفی HDFS
هسته اصلی Apache Hadoop شامل یک قسمت ذخیره سازی است که به نام Hadoop Distribited File System (HDFS) معروف است و یک بخش پردازش که یک مدل برنامه نویسی MapReduce است. Hadoop پرونده ها را در بلوک های بزرگ تقسیم می کند و آنها را در گره ها در یک خوشه توزیع می کند. سپس کد بسته بندی شده را به گره ها منتقل می کند تا داده ها به موازات پردازش شوند. این روش از موقعیت مکانی داده ها استفاده می کند، جایی که گره ها داده های دسترسی به آنها را دستکاری می کنند. این اجازه می دهد تا مجموعه داده ها سریعتر و کارآمدتر از آنچه در معماری ابر رایانه رایج تر انجام می شود پردازش شود و به یک سیستم پرونده موازی متکی باشد که در آن محاسبات و داده ها از طریق شبکه های پر سرعت توزیع می شود.
ساختار هدوپ (Hadoop)
فریمورک پایه Apache Hadoop از ماژول های زیر تشکیل شده است:
- Hadoop Common - حاوی کتابخانه ها و برنامه های کاربردی مورد نیاز سایر ماژول های Hadoop است.
- سیستم فایل توزیع شده Hadoop (HDFS) - یک سیستم فایل توزیع شده است که داده ها را در دستگاه های کالا ذخیره می کند و پهنای باند کل بسیار بالایی را در کل خوشه ها فراهم می کند.
- Hadoop YARN - (معرفی شده در سال 2012) یک بستر مسئول مدیریت منابع محاسباتی در خوشه ها و استفاده از آنها برای برنامه ریزی برنامه های کاربران.
- Hadoop MapReduce - اجرای مدل برنامه نویسی MapReduce برای پردازش داده ها در مقیاس بزرگ.
اصطلاح Hadoop اغلب برای ماژول های پایه و زیر ماژول ها و همچنین اکوسیستم یا مجموعه ای از بسته های نرم افزاری اضافی که می توان در بالای یا در کنار Hadoop نصب شود، مانند Apache Pig، Apache Hive، Apache HBase، Apache Phoenix و ... استفاده می شود. Apache Spark، Apache ZooKeeper، Cloudera Impala، Apache Flume، Apache Sqoop، Apache Oozie و Apache Storm.
اجزای MapReduce و HDFS از Apache Hadoop با الهام از مقالات Google در MapReduce و Google File System ساخته شده است.
فریم ورک Hadoop اکثراً به زبان برنامه نویسی جاوا نوشته شده است و برخی از برنامه های نیتیو در C و ابزارهای خط فرمان به صورت اسکریپت پوسته نوشته شده اند. گرچه کد MapReduce جاوا رایج است، از هر زبان برنامه نویسی می توان با Hadoop Streaming برای اجرای نقشه و کاهش بخش هایی از برنامه کاربر استفاده کرد. پروژه های دیگر در اکوسیستم Hadoop رابط های کاربر غنی تر را در معرض نمایش قرار می دهند.
کاربرد هدوپ (Hadoop)
ذخیره و بایگانی داده های کم هزینه
هزینه متوسط سخت افزار Commodity computing باعث می شود Hadoop برای ذخیره سازی و ترکیب داده هایی مانند تراکنش، رسانه های اجتماعی، سنسور، ماشین، علمی، جریان های کلیک و غیره مفید باشد. ممکن است بعداً بخواهد آنالیز کند.
جعبه شنی برای کشف و تجزیه و تحلیل
از آنجا که Hadoop برای مقابله با حجم داده ها در اشکال مختلف طراحی شده است، می تواند الگوریتم های تحلیلی را اجرا کند. تجزیه و تحلیل داده های بزرگ در مورد Hadoop می تواند به سازمان شما کمک کند تا با کارآمدتری عمل کند، از فرصت های جدید پرده برداشته و از مزیت رقابتی سطح بعدی بهره ببرد. رویکرد جعبه شنی فرصتی برای نوآوری با حداقل سرمایه گذاری فراهم می کند.
استخر داده
استخر های داده از ذخیره سازی داده ها در قالب اصلی یا دقیق آن پشتیبانی می کند. هدف این است که نمایش خام یا ناخوشایند از داده ها به دانشمندان و تحلیلگران داده ها برای کشف و تحلیلی ارائه دهیم. این کمک می کند تا بدون محدودیت سؤالات جدید یا دشوار بپرسند. استخر های داده جایگزینی برای انبارهای داده نیستند. در واقع، چگونگی ایمن سازی و اداره کردن دریاچه های داده موضوعی عظیم برای فناوری اطلاعات است. آن ها ممکن است برای ایجاد ساختار داده های منطقی به تکنیک های فدراسیون داده اعتماد کنند.
انبار داده خود را تکمیل کنید.
اکنون شاهد هستیم که Hadoop شروع به نشستن در کنار محیط های انبار داده ها می کند، همچنین برخی از مجموعه داده ها از انبار داده ها به Hadoop یا انواع جدیدی از داده ها مستقیماً به Hadoop منتقل می شوند. هدف نهایی برای هر سازمان داشتن بستر مناسب برای ذخیره و پردازش داده ها از شماتیک مختلف، قالب ها و غیره برای پشتیبانی از موارد استفاده مختلف است که می توانند در سطوح مختلف ادغام شوند.
هدوپ و اینترنت اشیا (IoT)
اشیا موجود در IoT باید بدانند که چه ارتباطی برقرار کنند و چه موقع عمل کنند. در هسته IoT یک جریان همیشه در torrent از داده ها است. Hadoop اغلب به عنوان ذخیره داده برای میلیون ها یا میلیارد دلار تراکنش استفاده می شود. قابلیت ذخیره سازی و پردازش انبوه همچنین به شما امکان می دهد تا از Hadoop به عنوان جعبه شنی برای کشف و تعریف الگوهای کنترل شده برای دستورالعمل های تجویز استفاده کنید. سپس می توانید این دستورالعمل ها را به طور مداوم بهبود بخشید، زیرا Hadoop دائماً با داده های جدیدی که با الگوهای تعریف شده قبلی مطابقت ندارد، به روز می شود.
از دیگر کاربرد های هدوپ می توان به موارد زیر اشاره کرد:
- پردازش داده های بزرگ
- ذخیره مجموعه ای از داده ها
- پردازش داده های موازی
- خدمات هماهنگی با عملکرد بالا برای برنامه های توزیع شده با ابزار ZooKeeper
- ارائه موتور قدرتمند و انعطاف پذیر برای اجرای DAG دلخواه با ابزار Tez
- دارای سیستم سریال سازی داده ها
- دارای پایگاه داده ی مقیاس پذیر multimaster بدون نقطه شکست
- سیستم جمع آوری داده ها
- ارائه خلاصه های داده ها و پرس و جو های ad hoc
ویژگی های هدوپ (Hadoop)
Apache Hadoop محبوب ترین و قدرتمندترین ابزار بزرگ داده است، Hadoop قابل اطمینان ترین لایه ذخیره سازی جهان - HDFS، موتور پردازش دسته ای - MapReduce و لایه مدیریت منابع - YARN است. در این بخش از ویژگی های Hadoop، بگذارید ویژگی های مهم Hadoop را که در زیر آورده شده است بحث کنیم.
- اوپن سورس: Apache Hadoop یک پروژه اوپن سورس است. این بدان معنی است که کد آن مطابق با الزامات تجاری قابل تغییر است.
- پردازش توزیع شده: از آنجا که داده ها به صورت توزیع شده در HDFS در کل خوشه ذخیره می شوند، داده ها بصورت موازی بر روی خوشه گره ها پردازش می شوند.
- تحمل خطا: این یکی از ویژگی های بسیار مهم Hadoop است. به طور پیش فرض، 3 ماکت از هر بلوک در سراسر خوشه در Hadoop ذخیره می شود و می تواند آن را مطابق با نیاز تغییر دهد. بنابراین اگر هر گره پایین بیاید، داده های مربوط به آن گره با کمک این ویژگی می توانند از سایر گره ها به راحتی بازیابی شوند. نارسایی گره ها یا کارها توسط فریمورک بطور خودکار بهبود می یابد. بدین ترتیب هدوپ تحمل پذیر در برابر تقصیر است.
- قابلیت اطمینان: با توجه به تکثیر داده های موجود در خوشه، داده ها با وجود خرابی ماشین قابل اطمینان در خوشه ماشین ها ذخیره می شوند. اگر دستگاه شما پایین بیاید، به دلیل همین ویژگی Hadoop، داده های شما نیز با اطمینان ذخیره می شوند.
- در دسترس بودن بالا: داده ها با وجود عدم موفقیت سخت افزار به دلیل کپی چندتایی از داده ها بسیار در دسترس هستند. اگر ماشین یا چند سخت افزار e خراب شود، از مسیر دیگری به داده ها دسترسی پیدا خواهید کرد.
- مقیاس پذیری: Hadoop از طریقی که سخت افزار جدید به راحتی به گره ها اضافه شود بسیار مقیاس پذیر است. این ویژگی Hadoop همچنین مقیاس پذیری افقی را فراهم می کند، به این معنی که گره های جدید را می توان بدون هیچگونه خرابی در پرواز اضافه کرد.
- اقتصادی: آپاچی هدوپ خیلی گران نیست زیرا روی دسته از سخت افزارهای Commodity computing کار می کند. به هیچ دستگاه تخصصی خاصی برای آن احتیاج ندارد. Hadoop همچنین صرفه جویی در هزینه بسیار زیادی را نیز فراهم می کند، زیرا اضافه کردن گره های بیشتر بسیار آسان است. بنابراین اگر نیاز افزایش یابد، می توانید گره ها را نیز بدون هیچ گونه خرابی و بدون نیاز به پیش برنامه ریزی زیاد کنید.
- آسان برای استفاده: بدون نیاز مشتری برای مقابله با محاسبات توزیع شده، این فریمورک به همه موارد توجه می کند.
- محل داده: این یکی ویژگی منحصر به فرد Hadoop است که باعث شده تا به راحتی بتواند Big Data را کنترل کند. Hadoop بر اساس اصل مکان داده کار می کند که بیان می کند محاسبات را به جای داده به محاسبات منتقل می کند. هنگامی که مشتری الگوریتم MapReduce را ارسال می کند، این الگوریتم به جای آوردن داده به محلی که الگوریتم ارسال شده است و سپس پردازش آن، به داده های موجود در خوشه منتقل می شود.
این ها ویژگی های Hadoop بودند که آن را از دیگر سیستم های مدیریت داده متمایز می کند. حال، بعد از ویژگی های Hadoop، اجازه می دهیم برخی از فرضیات Hadoop را که باید قبل از استفاده از Hadoop در نظر گرفته شود، مرور کنیم.
معماری هدوپ (Hadoop)
Hadoop از بسته Hadoop Common تشکیل شده است، که سیستم فایل و سیستم انتزاعی سطح سیستم عامل، موتور MapReduce و سیستم فایل توزیع شده (HDFS) را ارائه می دهد. بسته Hadoop Common حاوی فایل ها و اسکریپت های Java ARchive است که برای شروع Hadoop لازم است.
برای برنامه ریزی موثر کار، هر سیستم پرونده سازگار با Hadoop باید آگاهی از مکان را ارائه دهد، که نام آن رک است، به طور خاص سوئیچ شبکه که گره کارگر در آن قرار دارد. برنامه های Hadoop می توانند از این اطلاعات برای اجرای کد روی گره ای که داده ها هستند استفاده کنند و در صورت عدم موفقیت در همان سوئیچ برای کاهش ترافیک استفاده کنند. HDFS از این روش هنگام تکرار داده برای افزونگی داده در چندین قفسه استفاده می کند. این روش تاثیر قطع برق یا خرابی سوئیچ ها را کاهش می دهد. اگر هر یک از این خرابی های سخت افزاری رخ دهد، داده ها در دسترس باقی می مانند.
خوشه Hadoop کوچک شامل استاد بزرگ و گره های متعدد کارگر است. گره اصلی متشکل از Job Tracker،Task Tracker، NameNode و DataNode است. گره برده یا کارگر به عنوان DataNode و TaskTracker عمل می کند، گرچه داشتن گره های کارگر فقط داده و محاسبه امکان پذیر است. اینها معمولاً فقط در برنامه های غیر استاندارد استفاده می شوند. Hadoop به Java Runtime Environment 1.6 یا بالاتر نیاز دارد. اسکریپت های راه اندازی و خاموش کردن استاندارد نیاز دارند که SSH بین گره های موجود در خوشه تنظیم شود.
در خوشه بزرگتر، گره های HDFS از طریق سرور اختصاصی NameNode برای میزبانی از فهرست سیستم فایل ها و NameNode ثانویه مدیریت می شوند که می تواند ایمیج هایی از ساختارهای حافظه namenode تولید کند، از این طریق از فساد سیستم فایل و از بین رفتن اطلاعات جلوگیری می کند. به طور مشابه، سرور JobTracker مستقل می تواند برنامه ریزی شغلی را در گره ها مدیریت کند. هنگامی که Hadoop MapReduce با سیستم پرونده جایگزین استفاده می شود، معماری NameNode،Secondary NameNode و DataNode از HDFS با معادل های خاص سیستم فایل جایگزین می شوند.