ابزار و کتابخانه هاچارچوب های پردازش کلان دادهداده‌های جریانیمعماری های اطلاعاتی

تحولی در پردازش کلان‌داده با آپاچی ایگنایت – رقیب سازمانی اسپارک

آپاچی ایگنایت [۱] یک بستر محاسباتی توزیع شده مبتنی بر حافظه مانند اسپارک است که با هدف پردازش حجم عظیم داده­‌ها به صورت بلادرنگ طراحی شده است. این پروژه که توسط شرکت Grid Gain System ابداع شد، در سال ۲۰۱۴ به بنیاد آپاچی واگذار شده و در سپتامبر ۲۰۱۵ به عنوان یکی از پروژه‌­های سطح بالای آپاچی معرفی شد.

با مراجعه به صفحه اصلی مستندا آپاچی ایگنایت، با شکل زیر در ابتدای صفحه مواجه می‌شویم :

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

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

با توجه به اینکه اسپارک و ایگنایت، هر دو سامانه­‌های پردازشی مبتنی بر حافظه هستند، برای بیان نقاط قوت و مزایای ایگنایت، بهتراست نگاهی دقیق­‌تر به روند کار در اسپارک و سپس به ایگنایت بیندازیم. اسپارک با هدف پردازش کوئری­‌های کاربر و اجرای آنها بر روی شبکه‌­ای از رایانه‌­ها(کلاستر) ایجاد شد. با هر پرس­‌و­جو[۲] در اسپارک، داده­‌های مورد نیاز از منابع داده‌ای موجود مانند HDFS و یا بانک­های اطلاعاتی خوانده می­شود. سپس محاسبات لازم با تشکیل زنجیره­‌ای از RDD یا مجموعه­‌داده­‌های مقیم در حافظه اسپارک صورت می­گیرد و بعد از اتمام محاسبات و ذخیره نتایج و یا نمایش آنها به کاربر، این مجموعه­‌داده­‌های شکل گرفته، از حافظه پاک می­شوند تا دستورات بعدی کاربر اجرا شوند.

با این توضیح و بیان این موضوع که معماری اسپارک و ایگنایت هر دو مبتنی بر حافظه است به تفاوت بنیادین مابین این دو پروژه می‌پردازیم.

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

برای سامانه‌­های بلادرنگی که ماهیت تراکنشی و یا پردازش بلادرنگ دارند مانند سیستم­های خرید و فروش سهام و تشخیص تقلب و هرجایی که نیاز به پردازش‌­های تراکنش­‌محور داشته باشیم، هم ایگنایت کارآیی مناسب‌تری نسبت به اسپارک نشان می‌دهد و مقیاس‌­پذیری مناسب آن (در نسخه ۲٫۵ به هزاران نود قابل گسترش شده است)هم جزء مزایای دیگر آن محسوب می­شود.

رهیافت اصلی ایگنایت در بالابردن کارآیی، ساخت یک بستر محاسباتی مبتنی در حافظه توزیع­‌شده مشترک است به این ترتیب که داده‌­ها را با بارگذاری در حافظه، برای درخواست‌های کلیدمقدار (Data Grid)، درخواستهای SQL (از طریق SQL Grid) ، محاسبات داده (Compute Grid) و تحلیل جریان به صورت یکپارچه آماده می­کند و توزیع محاسبات و داده‌­ها را در حافظه کل شبکه، خود برعهده می­گیرد.

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

امکان پردازش جریان­‌های نامحدود هم در ایگنایت فراهم شده است به گونه­‌ای که به راحتی می­توان با یک کلاستر از کامپیوترهای معمولی، تا میلیون­ها رخداد در ثانیه را به کمک آن پردازش کرد.

البته می­توان اسپارک و اینگایت و هدوپ را به صورت مکمل و ترکیبی هم به کار برد به گونه­ای که اسپارک RDD خود را از ایگنایت و از درون حافظه بخواند و پردازش کرده و نتیجه را به کاربر برگرداند. در نسخه ۲٫۵ ایگنایت، می‌توانید مستقیماً دستورات Spark SQL را بر روی حافظه گرید ایجاد شده با ایگنایت اجرا کنید و سرعت اجرای کدهای خود را بالاتر ببرید.

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

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

[۱] Ignite

[۲] Query

مجتبی بنائی

دانشجوی دکترای نرم‌افزار دانشگاه تهران (yun.ir/smbanaie)، مدرس دانشگاه و فعال در حوزه توسعه نرم‌افزار و مهندسی داده که تمرکز کاری خود را در چند سال اخیر بر روی مطالعه و تحقیق در حوزه کلان‌داده و زیرساخت‌های پردازش داده و تولید محتوای تخصصی و کاربردی به زبان فارسی و انتشار آنها در سایت مهندسی داده گذاشته است. مدیریت پروژه‌های نرم‌افزاری و طراحی سامانه‌های مقیاس‌پذیر اطلاعاتی از دیگر فعالیتهای صورت گرفته ایشان در چند سال گذشته است.

دیدگاهتان را بنویسید

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

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

دکمه بازگشت به بالا