ساموا ، پلتفرمی جهت استخراج جریان عظیم‌داده است و مجموعه ای از الگوریتم‌های جریان توزیع شده را برای مرسوم‌ترین شیوه‌های داده‌کاوی و وظایف یادگیری ماشین مانند طبقه‌بندی، خوشه‌بندی و رگرسیون، و همچنین مفاهیم برنامه‌نویسی برای توسعه الگوریتم‌های جدید، را فراهم می‌کند. ساموا یک معماری قابل برنامه‌ریزی را فراهم می‌کند که اجازه می‌دهد تا بر روی چندین موتور پردازش جریان توزیع شده مانند Storm، S4 و Samza اجرا شود. ساموا با جاوا نوشته شده است، منبع باز است، و در http://samoa-project.net در نسخه آپاچی نرم‌افزار نسخه 2.0 قابل دسترس است.

  • مقدمه
    عظیم‌داده "داده‌هایی است که ویژگی‌های آن ما را مجبور می‌کند که فراتر از روش‌های سنتی که رایج است، را در نظر بگیرم."در حال حاضر دو روش اصلی برای مواجهه  با عظیم‌داده وجود دارد: الگوریتم‌های جریان و محاسبات توزیع شده(به عنوان مثال، (Map Reduce. هدفسامو ، برآورده کردن نیازهای آینده‌ی ماینینگ جریان‌های عظیم‌داده با ترکیب دو روش در یک پلتفرم واحد تحت یک چتر منبع باز است.

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


حال از یک طرف، Map Reduce  برای بیان الگوریتم‌های جریان مناسب نیست و از سوی دیگر، الگوریتم‌های پیوسته سنتی توسط حافظه و پهنای باند یک دستگاه محدود می‌شوند. موتورهای پردازش جریان توزیع شده (DSPEs) یک خانواده جدید مبتنی بر فناوری Map Reduce هستند که این موضوع را مورد توجه قرار می‌دهند. این موتورها اجازه محاسبات موازی بر روی جریان‌ها را می‌دهند و مقیاس‌پذیری پردازش توزیع شده با کارایی الگوریتم‌های جریان را ترکیب می‌کنند. نمونه‌هایی از این موتورها عبارتند از: Storm، S4 و Samza

متاسفانه، در حال حاضر هیچ راه‌حل مشترک برای ماینینگ جریان عظیم‌داده وجود ندارد(جهت اجرای داده‌کاوی و الگوریتم‌های یادگیری ماشین در یک موتور پردازش جریان توزیع شده). همانطور که در شکل 1 نشان داده شده است، هدف ساموا این است که این فاصله و شکاف را پر کند.

  • معماری
    یک الگوریتم در ساموا، با یک گراف مستقیم از نودها که از طریق پیام ها در امتداد جریان‌ها ارتباط برقرار می‌کنند( که جفت نودها را متصل می‌کنند) نشان داده می‌شود. با استفاده از اصطلاح Storm، این نمودار توپولوژی نامیده می‌شود. هر نود در یک توپولوژی یک پردازنده است که پیامها را از طریق جریان ارسال می‌کند و یک پردازنده یک ظرف برای کد اجرای الگوریتم است. یک جریان می‌تواند یک منبع و مبدا منفرد، اما چندین مقصد داشته باشد (همانند زیربخش‌های یک سیستم). یک توپولوژی با استفاده از Topology Builder ساخته می‌شود، که بخش‌های مختلف کد کاربر را به کد پلتفرم متصل می‌کند و ساماندهی لازم را در پس‌زمینه انجام می‌دهد. در ادامه هم، یک قطعه کد برای ساختن توپولوژی وجو دارد که به دو جریان داده در ساموا پیوسته است.
  • نتیجه‌گیری


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

ساموا را می‌توان در http://www.samoa-project.net/ یافت. این وب سایت شامل یک ویکی، مرجع API و یک کتابچه راهنمای توسعه‌دهنده است که در آن چندین نمونه از نحوه استفاده از نرم‌افزار در دسترس است. کد در GitHub میزبانی می‌شود. ساموا شامل یک مجموعه آزمون است که در مخزن GitHub با استفاده از یک سرور یکپارچه پیوسته اجرا می‌شود.و سرانجام، ساموا به عنوان نرم‌افزار منبع باز تحت مجوز نرم افزار آپاچی 2.0 منتشر می‌شود.