ابزارهای تحلیل کلان داده (Big Data) – راهنمای کامل


در بخشهای پیشین از مجموعه مطالب «کلان داده» (Big Data)، «مفاهیم کلان داده (Big Data) و انواع تحلیل داده» و «تحلیل کلان داده (Big Data)، چالش ها و فناوری های مرتبط» تشریح شدند. در این بخش، ابزارهای تحلیل کلان داده و مسائل مربوط به آنها از جمله «آپاچی هادوپ» (Apache Hadoop)، الگوریتم نگاشت کاهش (MapReduce)، سیستم فایل توزیع شده هادوپ (Hadoop Distributed File System | HDFS)، «آپاچی هایو» (Apache Hive)، «آپاچی ماهوت» (Apache Mahout)، «آپاچی اسپارک» (Apache Spark)، «دریاد» (Dryad)، «استورم» (Storm)، آپاچی دریل (Apache Drill)، جاسپرسافت (Jaspersoft) و اسپلانک (Splunk) مورد بررسی قرار خواهند گرفت.

ابزارهای تحلیل کلان داده
ابزارهای زیادی برای تحلیل کلان داده موجود هستند. در این بخش، برخی از روشهای کنونی موجود برای تحلیل کلانداده با تاکید بر سه مورد مهم نگاشتکاهش، آپاچی اسپارک و استورم ارائه شدهاند. تمرکز اغلب ابزارهای کنونی موجود، روی «پردازش دستهای» (batch processing)، «پردازش جریان» (stream processing) و «تحلیل تعاملی» (interactive analysis) است.
بیشتر ابزارهای پردازش دسته برپایه زیرساخت «آپاچی هادوپ» (Apache Hadoop) مانند «آپاچی ماهوت» (Mahout) و «دریاد» (Dryad) هستند. برنامههای تحلیل دادههای جریانی اغلب برای تحلیلهای زمان واقعی مورد استفاده قرار میگیرند. استورم و اسپلانک نمونههایی از پلتفرمهای تحلیل جریان دادهها هستند.
فرآیند تحلیل تعاملی به کاربران امکان تعامل مستقیم در زمان واقعی را برای انجام تحلیلهایشان میدهد. برای مثال، «درِمِل و آپاچی دریل» (Dremel and Apache Drill) پلتفرمهای کلاندادهای هستند که از تحلیلهای تعاملی پشتیبانی میکنند. این ابزارها به پژوهشگران در توسعه پروژههای کلانداده کمک میکنند. جریان کاری متداول برای پروژههای کلانداده توسط «هانگ» (Huang) و همکاران در مقالهای با عنوان «فرصتها و چالشهای پردازش کلانداده در علوم سلامت» (Promises and challenges of big data computing in health sciences) تشریح شده است. روندنمای مربوط به جریانهای کاری در پروژههای کلانداده در شکل زیر آمده است.

آپاچی هادوپ و نگاشت کاهش
یکی از پرکاربردترین پلتفرمهای نرم افزاری برای تحلیلهای کلانداده «آپاچی هادوپ» (Apache Hadoop) و الگوریتم نگاشت کاهش (Mapreduce) است. آپاچی هادوپ شامل کرنل هادوپ، الگوریتم نگاشتکاهش، سیستم فایل توزیع شده هادوپ (Hadoop Distributed File System | HDFS) و «آپاچی هایو» (apache hive) میشود.
نگاشت کاهش یک مدل برنامهنویسی برای پردازش مجموعه دادههای کلان برپایه روش «تقسیم و حل» (divide and conquer) است. روش تقسیم و حل در دو گام «نگاشت» (Map) و «کاهش» (Reduce) پیادهسازی شده است. هادوپ روی دو نوع از «گرهها» (nodes) یعنی «گره اصلی» (master node) و «گره کارگر» (worker node) کار میکند.

گره اصلی، ورودی را به دو زیرمساله کوچکتر تقسیم میکند و سپس در گام نگاشت آنها را برای گرههای کارگر توزیع میکند. پس از آن گره اصلی خروجیها را برای همه زیر مسائل در گام کاهش ترکیب میکند. تحلیلگران کلانداده هادوپ و الگوریتم نگاشت کاهش را به عنوان یک چارچوب نرمافزاری قدرتمند جهت حل مسئل کلانداده (مِهداده) مورد استفاده قرار میدهند. این چارچوب برای «ذخیرهسازی دارای تحمل خطا» (fault-tolerant storage) و پردازش داده توان بالا مفید است.
آپاچی ماهوت
آپاچی ماهوت قصد فراهم کردن روشهای یادگیری ماشین مقیاسپذیر و تجاری برای نرمافزارهای تحلیل داده هوشمند و بزرگ مقیاس را دارد. الگوریتمهای اصلی ماهوت شامل خوشهبندی، دستهبندی، کاوش الگو، رگرسیون، کاهش ابعاد، الگوریتمهای تکاملی و فیلتر مشارکتی مبتنی بر دسته بر فراز پلتفرم هادوپ از طریق چارچوب نگاشت کاهش میشوند. هدف ماهوت ساخت یک جامعه فعال، پاسخگو و متنوع به منظور تسهیل گفتوگوها در پروژهها و بررسیهای موردی بالقوه است. آپاچی ماهوت با هدف فراهم کردن ابزاری به منظور حل چالشهای کلانداده ایجاد شده است. از جمله شرکتهایی که از الگوریتمهای مقیاسپذیر یادگیری ماشین استفاده کردهاند میتوان به گوگل، IBM، آمازون، یاهو و فیسبوک اشاره کرد.

آپاچی اسپارک
آپاچی اسپارک یک چارچوب پردازش کلانداده «متنباز» (open source) است که به منظور انجام پردازش سریع و تحلیلهای پیچیده مورد استفاده قرار میگیرد. این برنامه طی سال ۲۰۰۹ در UC Berkeleys AMPLab ساخته شده و استفاده از آن آسان است.
آپاچی اسپارک به عنوان یک پروژه آپاچی در سال ۲۰۱۰ متنباز شد. اسپارک این امکان را برای کاربران فراهم میکند تا برنامههای خود را به زبانهای جاوا، اسکالا یا پایتون بنویسند. اسپارک علاوه بر الگوریتم نگاشت کاهش، از کوئریهای SQL، جریان داده، یادگیری ماشین و پردازش دادههای گراف نیز پشتیبانی میکند. این چارچوب بر فراز زیرساخت سیستم فایل توزیع شده هادوپ (HDFS) به منظور فراهم کردن عملکردهای بهبودیافته و اضافی اجرا میشود.
اسپارک شامل مولفههایی است که برای مثال میتوان به برنامه راهانداز، مدیر خوشه و گرههای کارگر اشاره کرد. مدیر خوشه کار تخصیص منابع را انجام میدهد تا پردازش داده به شکل مجموعهای از وظایف انجام شود. هر برنامه شامل مجموعهای از پردازشها است که به آنها اجراکنندگان گفته میشود و مسئول اجرای هر وظیفهای هستند. مزیت اصلی آپاچی اسپارک آن است که از استقرار برنامههای اسپارک در خوشه هادوپ موجود پشتیبانی میکند. شکل ۶ نمودار معماری آپاچی اسپارک را به تصویر میکشد. ویژگیهای متنوع آپاچی اسپارک در شکل زیر نمایش داده شدهاند.

تمرکز اصلی اسپارک بر مجموعه دادههای توزیع شده انعطافپذیر (RDD | Resilient Distributed Datasets) است که دادهها را در حافظه ذخیر کرده و تحملپذیری خطا را بدون تکرار فراهم میکند. همچنین، از رایانش بازگشتی پشتیبانی کرده، و سرعت و کاربردپذیری را بهبود میبخشد. مزیت اصلی اسپارک آن است که علاوه بر نگاشتکاهش، از جریانهای داده، یادگیری ماشین و الگوریتمهای گراف نیز پشتیبانی میکند.
دیگر مزیت این چارچوب آن است که میتواند برنامههای نوشته شده به زبانهای گوناگون شامل جاوا، R، پایتون و اسکالا را اجرا کند. این کتابخانههای استاندارد بهرهوری توسعهدهنده را افزایش داده و میتوانند به صورت یکپارچه ترکیب شوند تا جریانهای کاری پیچیدهای را بسازند.
اسپارک به اجرای یک برنامه در خوشه هادوپ، بالغ بر صد بار سریعتر در حافظه و ده بار سریعتر هنگام اجرا روی دیسک کمک میکند. این کار به دلیل کاهش خواندن و نوشتنها روی حافظه امکانپذیر است. اسپارک به زبان برنامهنویسی اسکالا نوشته شده و روی ماشین مجازی جاوا (JVM) اجرا میشود. همچنین، از جاوا، پایتون و R برای توسعه برنامههای کاربردی با استفاده از اسپارک پشتیبانی میکند.
استورم (Storm)
استورم یک سیستم محاسباتی زمان واقعی توزیع شده و دارای تحملپذیری خطا برای پردازش جریانهای داده است. این سیستم برخلاف هادوپ که برای پردازش دستهای طراحی شده، به منظور انجام پردازش زمان واقعی ساخته شده است. علاوه بر این، راهاندازی و اجرای آن آسان است. استورم، مقیاسپذیر و دارای تحملپذیری در برابر خطا به منظور فراهم کردن کارایی رقابتی است. کاربران خوشه استورم توپولوژیهای گوناگونی را برای وظایف استورم گوناگون اجرا میکنند، در حالیکه پلتفرم هادوپ الگوریتم نگاشت کاهش را برای برنامههای متناظر اجرا میکند.

تفاوتهایی بین کارها و توپولوژیهای نگاشت کاهش وجود دارد. تفاوت اساسی آن است که کار نگاشت کاهش سرانجام به پایان میرسد، در حالیکه یک فرآیند توپولوژی در کلیه زمانها یا دستکم تا زمانی که کاربر آن را متوقف کند پیغام میدهد وشامل دو نوع از خوشهها مانند گره اصلی و کارگر است. گره اصلی و کارگر دو نوع از نقشها مانند nimbus و سرپرست را ایجاد میکنند. دو نقش دارای کارکردهای مشابهی مطابق با jobtracker و tasktracker از چارچوب نگاشت کاهش هستند.
Nimbus مسئولیت توزیع کد در خوشه استورم، برنامهریزی و تخصیص وظایف به گرههای کارگر و نظارت بر کل سیستم را بر عهده دارد. سرپرست، وظایفی که به وسیله nimbus به او تخصیص داده شده را اجرا میکند. علاوه بر این، فرآیندها را در صورت لزوم بر اساس دستورالعمل nimbus آغاز و پایان میبخشد. کل فناوری محاسباتی به تعدادی فرآیند کارگر تقسیمبندی و توزیع شدهاند و هر فرآیند کارگر بخشی از توپولوژی را پیادهسازی میکند.
آپاچی دریل (Apache Drill)
آپاچی دریل، دیگر سیستم توزیع شده برای تحلیلهای تعاملی کلانداده (مِهداده) است. این روش دارای انعطافپذیری بیشتری برای پشتیبانی از بسیاری زبانهای کوئری، فرمتهای داده و منابع داده است. همچنین، این سیستم به طور ویژه برای بهرهبرداری از دادههای تو در تو طراحی شده است و دارای این هدف است که روی ۱۰۰۰۰ سرور یا تعداد بیشتری مقیاس بپذیرد و به ظرفیتت لازم برای پردازش پتابایتها داده و تریلیونها رکورد در چند ثانیه برسد.
Drill از سیستم فایل توزیع شده هادوپ (HDFS) برای ذخیرهسازی و نگاشت کاهش برای انجام تحلیل دستهای استفاده میکند.

دریاد (Dryad)
Dryad دیگر مدل برنامهنویسی مشهود برای پیادهسازی برنامههای موازی و توزیع شده برای مدیریت مبانی زمینهها در گرافهای جریان داده است. این مدل شامل خوشهای از گرههای کامپیوتری میشود و کاربر از منابع یک خوشه کامپیوتر برای اجرای برنامهها به شیوه توزیع شده استفاده میکند. در واقع، یک کاربر Dryad از هزاران ماشین که هر یک چندین هسته یا پردازنده دارند بهرهمند میشود.
مزیت اصلی این مدل آن است که کاربر نیازی به دانستن همه چیز درباره «برنامهنویسی همروند» (concurrent programming) ندارد. یک برنامه Dryad روی یک گراف جهتدار محاسباتی اجرا میشود که از راسهای محاسباتی و کانالهای ارتباطی تشکیل شده است. بنابراین، dryad گستره وسیعی از کارکردها شامل تولید گراف کار (job graph)، برنامهریزی ماشینها برای فرآیندهای موجود، مدیریت شکست انتقال (transition failure handling) در خوشه، مجموعهای از معیارهای کارایی و بصریسازی کار را فراهم میکند.
جابرسافت (Jaspersoft)
بسته Jaspersoft یک نرمافزار متنباز است که گزارشهایی را از ستونهای پایگاه داده تولید میکند. این بسته یک سکوی مقیاسپذیر تحلیل کلانداده (مِهداده) محسوب میشود و دارای ظرفیت بصریسازی سریع دادهها روی پلتفرمهای ذخیرهسازی محبوب مانند MangoDB، «کاساندرا» (Cassandra)، «ردیس» (Redis) و دیگر موارد است.
یک ویژگی مهم Jaspersoft آن است که کلانداده را به سرعت و بدون استخراج، تبدیل و بارگذاری (ETL) مورد اکتشاف قرار میدهد. علاوه بر این، توانایی ساخت گزارشها و دشبوردهای تعاملی زبان نشانهگذاری ابرمتنی (Hypertext Markup Language | HTML) را به طور مستقیم از انبار کلانداده بدون نیاز به ETL دارد. این گزارشهای تولید شده را میتوان با هر کسی از درون یا بیرون سازمان به اشتراک گذاشت.
اسپلانک (Splunk)
در سالهای اخیر دادههای بسیاری از طریق ماشینها در کسبوکارها و صنایع تولید شده است. Splunk یک پلتفرم زمان واقعی و هوشمند توسعه داده شده برای بهرهبرداری از کلاندادههای تولید شده توسط ماشینها است. این پلتفرم بسیاری از فناوریهای ابری موجود و کلانداده (مِهداده) را ترکیب کرده است و به نوبه خود به کاربران جهت جستوجو، نظارت و تحلیل دادههای تولید شده توسط ماشین از طریق یک رابط وب کمک میکند.

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

علاوه بر این، این دادهها ممکن است در برگیرنده عدم قطعیت در بسیاری از اشکال گوناگون باشند. مدلهای متفاوت بسیاری مانند مجموعههای فازی، مجموعههای خام، مجموعههای نرم، شبکههای عصبی و مدلهای ترکیبی با ترکیب یک یا چند نوع از این مدلها برای ارائه دانش و تحلیل دادهها بسیار موثر هستند. اغلب اوقات، ابعاد کلاندادهها به منظور دربرگیری مشخصههای اصلی لازم برای یک پژوهش خاص کاهش پیدا میکنند. بنابراین، روشهایی برای کاهش این ابعاد ارائه شده است.
دادهها اغلب دارای مقادیر از دست رفته (missing values) هستند. این مقادیر باید به نوعی تولید شده و یا تاپلهای حاوی مقدار از دست رفته حذف شوند. مهمتر آنکه، این چالشها ممکن است کارایی، تاثیرگذاری و مقیاسپذیری یک سیستم محاسباتی فشرده اطلاعات را با مشکل مواجه کند. از این رو، یکی از زمینههای مهم نیازمند پژوهش در حوزه کلان داده چگونگی ثبت و دسترسی موثر به دادهها است. پردازش سریع دادهها همگام با کسب کارایی و بازده بالا برای کاربردهای آتی مساله دیگری است.
علاوه بر این، برنامهنویسی برای تحلیلهای کلانداده چالش مهمی محسوب میشود. تشریح نیازمندیهای دسترسی به داده در برنامهها و طراحی انتزاعی زبان برنامهنویسی برای بهرهبرداری از پردازش موازی دیگر نیاز مهم این حوزه است. مفاهیم و ابزارهای یادگیری ماشین در میان پژوهشگران برای تسهیل نتایج معنادار از این مفاهیم نیز مهم هستند. پژوهشگران حوزه یادگیری ماشین بر پیشپردازش دادهها، پیادهسازی الگوریتمها و بهینهسازی آنها متمرکز شدهاند.
بسیاری از ابزارهای یادگیری ماشین برای استفاده در زمینه کلاندادهها نیازمند تغییرات قابل توجهی هستند. ابزارهای موثرتری را میتوان برای سر و کار داشتن با مسائلی که از کلان داده نشات میگیرند ارائه کرد. این ابزارها باید برای مدیریت دادههای دارای نویز و نامتوازن، عدم قطعیت و ناسازگاری و مقادیر از دست رفته ساخته و توسعه داده شوند.
نتیجهگیری

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