تحولی در پردازش کلانداده با آپاچی ایگنایت – رقیب سازمانی اسپارک
آپاچی ایگنایت [۱] یک بستر محاسباتی توزیع شده مبتنی بر حافظه مانند اسپارک است که با هدف پردازش حجم عظیم دادهها به صورت بلادرنگ طراحی شده است. این پروژه که توسط شرکت Grid Gain System ابداع شد، در سال ۲۰۱۴ به بنیاد آپاچی واگذار شده و در سپتامبر ۲۰۱۵ به عنوان یکی از پروژههای سطح بالای آپاچی معرفی شد.
با مراجعه به صفحه اصلی مستندا آپاچی ایگنایت، با شکل زیر در ابتدای صفحه مواجه میشویم :
در این شکل، بخشهای قرمزرنگ، نشانگر مولفههای آپاچی ایگنایت هستند و همانطور که مشخص است بخش اصلی و محوری این کتابخانه، فضای ذخیره سازی مبتنی بر حافظه یکپارچه آن است که بر روی آن، تمام عملیات معمول پردازش داده مانند اجرای SQL، اعمال الگوریتم های یادگیری ماشین، سرویسهای داده، محاسبات، تراکنش ها و مانند آن، انجام میشود.
ایگنایت با تجمیع حافظههای تمام سیستمهای موجود در یک شبکه، باعث میشود شما یک حافظه سراسری برای محاسبات خود در اختیار داشته باشید و با این کار بتوانید ضمن بالابردن سرعت پردازش، بدون نگرانی از نحوه ذخیره دادهها، آنها را در حافظه سراسری ایگنایت بارگذرای کرده و با آنها کار کنید و در صورت نیاز، کار ذخیره را به ایگنایت بسپارید.
با توجه به اینکه اسپارک و ایگنایت، هر دو سامانههای پردازشی مبتنی بر حافظه هستند، برای بیان نقاط قوت و مزایای ایگنایت، بهتراست نگاهی دقیقتر به روند کار در اسپارک و سپس به ایگنایت بیندازیم. اسپارک با هدف پردازش کوئریهای کاربر و اجرای آنها بر روی شبکهای از رایانهها(کلاستر) ایجاد شد. با هر پرسوجو[۲] در اسپارک، دادههای مورد نیاز از منابع دادهای موجود مانند HDFS و یا بانکهای اطلاعاتی خوانده میشود. سپس محاسبات لازم با تشکیل زنجیرهای از RDD یا مجموعهدادههای مقیم در حافظه اسپارک صورت میگیرد و بعد از اتمام محاسبات و ذخیره نتایج و یا نمایش آنها به کاربر، این مجموعهدادههای شکل گرفته، از حافظه پاک میشوند تا دستورات بعدی کاربر اجرا شوند.
با این توضیح و بیان این موضوع که معماری اسپارک و ایگنایت هر دو مبتنی بر حافظه است به تفاوت بنیادین مابین این دو پروژه میپردازیم.
اسپارک برای پردازش تعاملی با کاربر و توسعه برنامههای مبتنی بر یادگیری ماشین بوجود آمد و بخش پردازش جریان آن بعداً به آن اضافه شد. در صورتیکه پردازش بلادرنگ، ارتباط بین دو ماشین و انجام تراکنش سریع جزء اهداف اصلی ایگنایت بوده است یعنی برای برنامههای سازمانی و بزرگ که پردازش دادهها به صورت پشت صحنه انجام میشود و قرار است به انواع برنامه ها سرویس داده شده و نتایج در فضاهای ذخیره سازی متفاوتی ذخیره شوند و در عین حال تیم توسعه و مهندسین داده سازمان، پردازش یکپارچه و مشترکی را برای تمام کاربردها تجربه کنند، ایگنایت گزینه مناسب تری نسبت به اسپارک است.
برای سامانههای بلادرنگی که ماهیت تراکنشی و یا پردازش بلادرنگ دارند مانند سیستمهای خرید و فروش سهام و تشخیص تقلب و هرجایی که نیاز به پردازشهای تراکنشمحور داشته باشیم، هم ایگنایت کارآیی مناسبتری نسبت به اسپارک نشان میدهد و مقیاسپذیری مناسب آن (در نسخه ۲٫۵ به هزاران نود قابل گسترش شده است)هم جزء مزایای دیگر آن محسوب میشود.
رهیافت اصلی ایگنایت در بالابردن کارآیی، ساخت یک بستر محاسباتی مبتنی در حافظه توزیعشده مشترک است به این ترتیب که دادهها را با بارگذاری در حافظه، برای درخواستهای کلیدمقدار (Data Grid)، درخواستهای SQL (از طریق SQL Grid) ، محاسبات داده (Compute Grid) و تحلیل جریان به صورت یکپارچه آماده میکند و توزیع محاسبات و دادهها را در حافظه کل شبکه، خود برعهده میگیرد.
این محیط مجمتع مقیم در حافظه، اجازه اجرای درخواستهای تراکنشمحور و نیز درخواستهای تحلیلی را به صورت توامان در اختیار کاربر قرار میدهد و با کش کردن آنها در حافظه، درخواستهای بعدی با سرعت بسیار بالاتر، نسبت به فناوریهای مشابه مانند اسپارک اجرا میشوند.
امکان پردازش جریانهای نامحدود هم در ایگنایت فراهم شده است به گونهای که به راحتی میتوان با یک کلاستر از کامپیوترهای معمولی، تا میلیونها رخداد در ثانیه را به کمک آن پردازش کرد.
البته میتوان اسپارک و اینگایت و هدوپ را به صورت مکمل و ترکیبی هم به کار برد به گونهای که اسپارک RDD خود را از ایگنایت و از درون حافظه بخواند و پردازش کرده و نتیجه را به کاربر برگرداند. در نسخه ۲٫۵ ایگنایت، میتوانید مستقیماً دستورات Spark SQL را بر روی حافظه گرید ایجاد شده با ایگنایت اجرا کنید و سرعت اجرای کدهای خود را بالاتر ببرید.
نکته جالب در مورد ایگنایت این است که این پروژه امروزه خود مکمل بسیاری از پروژه های پرداش داده آپاچی شده است. اسپارک را در بالا توضیح دادیم اما اخیراً پروژه معروف آپاچی فلینک هم می تواند بخش ذخیره سازی و اجرای کدهای خود را برای بالابردن سرعت و کارآیی، به آپاچی ایگنایت محول کند.
حتی امروزه ایگنایت به عنوان رقیب مقیاس پذیر کاساندرا هم مطرح شده است و بنچ مارک ها، به خوبی تفاوت اجرای دستورات بر روی این دو فضای ذخیره و اجرای دستورات SQL را نشان میدهند. تفاوتی که ما را تشویق میکند آپاچی ایگنایت را به عنوان یک فرزند آینده دار آپاچی، کمی بیشتر تحویل بگیریم.
[۱] Ignite
[۲] Query