آپاچی فلینک : پرچمدار پردازش جریانهای داده
شرکت عظیم علیبابا که به آمازون چین معروف است، هفته گذشته رسما اعلام کرد که شرکت data Artisans که توسط توسعهگران اولیه آپاچی فلینک در سال ۲۰۱۴ ایجاد شده است را به قیمت ۹۰ میلیون یورو خریداری کرده است تا باعث رونق صنعت پردازش دادههای جریانی در دنیا شود. خبری که نوید بخش رشد سریع آپاچی فلینک در سالیان آتی خواهد بود. فلینک به عنوان یکی از پیشروترین موتورهای پردازش جریانهای داده آپاچی، امروزه توسط شرکتهای بزرگی چون نتفلیکس و اوبر در حال استفاده است. در این مقاله در ادامه مباحث آشنایی با سامانههای جریانپرداز دنیا، به مرور قابلیتهای این پروژه متنباز خواهیم پرداخت.
فلینک درسال ۲۰۱۰ از همکاری سه دانشگاه صنعتی برلین، دانشگاه هومبلت برلین و دانشگاه پستدام آلمان شکل گرفت و بعد از پیوستن به بنیاد آپاچی، در سال ۲۰۱۴ به عنوان یکی از پروژههای سطح بالای آپاچی شناخته شد و امروزه به عنوان یک رقیب اصلی اسپارک به آن نگریسته میشود.
قابلیتهای اصلی زیر باعث محبوبیت این پروژه رو به رشد آپاچی شده اند :
- امکان پردازش انبوه و زمانمند دادهها (Batch)
- پردازش لحظهای تک تک دادههای وارد شده (یک موتور جریانپرداز واقعی)
- پردازش تعاملی (که کاربر پای سیستم بتواند دستوراتش را اجرا کند و نتیجه را همانجا ببیند)
- پردازش گراف
- پردازشهای محاسباتی و الگوریتمهای یادگیری ماشین
- پردازش درون حافظه
- پردازش دادههای جدولی (SQL)
- و بسیاری امکانات منحصر بفرد دیگر (برای مشاهده لیست کامل آنها به این آدرس مراجعه کنید )
در شکل فوق، معماری و مولفههای اصلی آپاچی فلینک را مشاهده میکنید.
اسپارک و فلینک هر دو طیف وسیعی از دادهها و کاربردها را پوشش میدهند. در هر دوی این کتابخانهها، امکان پردازش زمانمند، جریانهای داده،پردازش تعاملی، پردازش گراف و یادگیری ماشین به سهولت فراهم شده است و برای کاربردهای عمومی و چندمنظوره پردازش داده، هر دو مناسبند اما چند تفاوت اصلی با هم دارند.
اول اینکه پردازش جریان در اسپارک به صورت ریزدسته[۱] است یعنی هر چند رخداد از جریان داده، یک دسته کوچک را تشکیل میدهند و با هم پردازش میشوند اما در فلینک، هر رخداد به محض دریافت، پردازش میشود و واکنش سریعتری را هنگام دریافت دادهها شاهد خواهیم بود.
نکته دوم، در تضمین پردازش دقیقاً-یکبار هر رخداد توسط فلینک است که بار بزرگ کار با دادههای تکراری را از دوش برنامهنویسان برمیدارد. البته اسپارک در نسخههای اخیر با افزودن ماژول پردازش جریان، این قابلیت را هم به مجموعه امکانات خود افزوده است.
نقطه قوت دیگر فلینک، مدل برنامهنویسی بسیار منعطف آن و امکان تعریف انواع پنجرههای زمانی در آن است؛ اینکه بخواهیم صد رویداد اخیر با دریافت هر ده داده، یک ساعت گذشته با سپری شدن هر پنج دقیقه و مانند آنرا تحلیل کنیم، میتوانیم به راحتی از توابع متناظر فلینک استفاده کنیم.
نکته آخر اینکه فلینک مشابه اسپارک هم قادر به پردازش دادههای زمانمند و هم دادههای جریانی است اما نکته اینجاست که در فلینک، نوع داده اصلی و پایه، جریان است و دادههای موجود و زمانمند هم به شکل جریانهای داده مورد پردازش قرار میگیرند. بنابراین اگر به دنبال طراحی یک سامانه جریانپرداز حرفهای و با امکانات کامل که به صورت بلادرنگ و موردی، دادههای ورودی را بررسی و تصمیم لازم را اتخاذ کند و انواع کتابخانهها را هم دربرداشته باشد، فلینک گزینه ایدهآل شما خواهد بود. به خاطر داشته باشید که فلینک، فقط برای پردازش دادهها طراحی شده است و مکانیزم ذخیره جداگانهای ندارد و میتوانید برای ذخیره دادهها از HDFS ،HBase، الاستیک سرچ و مانند آن استفاده کنید. در محیطهای عملیاتی معمولاً فلینک دادههای ورودی خود را از کافکا دریافت میکند
مزیت مهم دیگری که فلینک با خود به همراه دارد، پشتیبانی از چهار خاصیت اصلی مدیریت تراکنش یعنی ACID است. امری که باعث میشود بتوان با خیالی راحت، دادههای حجیم را پردازش کرده و مطمئن شد که همزمانی پردازش در شبکه، باعث ناسازگاری جواب نهایی نخواهد شد.
برای جاهایی که توان عملیاتی بالا در پردازش جریان برای شما اهمیت فراوان دارد، فلینک به اسپارک ترجیح داده میشود. شکل زیر نمونه ای از تستهای انجام شده در پردازش داده به کمک فلینک و اسپارک و مقایسه آنهاست (منبع)
[۱] MicroBatch