تاریخچه:

آپاچی استورم یک چارچوب پردازشی توزیعی برای پردازش داده های در جریان  می باشد که به زبان برنامه نویسی clojure نوشته شده است. این برنامه در ابتدا توسط ناتان مارتس و همکارانش در موسسه بکتایپ ایجاد شده و بعد از تصاحب آن توسط تویتر به صورت نرم افزاری منبع باز درآمد.

 

کاربردها:

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

برخی از فرصت های تجاری جدید و ویژه در استفاده از استورم عبارتند از: مدیریت خدمات مشتری در زمان واقعی، کسب درآمد از داده ها، داشبورد های عملیاتی، تجزیه و تحلیل امنیت سایبری و تشخیص تهدید.

استورم ساده بوده و توسعه دهندگان می توانند توپولوژیهای استورم را با استفاده از هر زبان برنامه نویسی ایجاد کنند.

 

ویژگیها:

5 ویژگی زیر استورم را انتخابی ایده آل برای پردازش داده های بهنگام نموده است:

·        سرعت بالا – قدرت پردازش یک میلیون پیغام 100 بایتی در هر ثانیه و بر روی هر نود

·        مقیاس پذیری خوب – محاسبات موازی بر روی خوشه ای از ماشینها

·        تحمل خطا – هنگامی که عوامل پردازشی بر روی هر نود از کار بیافتند استورم آنها را بصورت خودکار راه اندازی می کند و زمانی که خود نود از کار بیافتد استورم عامل پردازش مربوطه را بر روی نودی دیگر راه اندازی می کند

·        قابلیت اطمینان – استورم اطمینان می دهد که هر واحد داده دقیقا یکبار پردازش می شود.

·        کاربری آسان – پیکره بندی استاندارد سیستم یکبار و در روز اول انجام شده و زمانی که تنظیم گردید براحتی می توان از آن استفاده کرد

 

نحوه کار:

یک خوشه استورم شامل سه مجموعه نود به قرار زیر است:

1.     نود Nimbus( نود اصلی ):

·        محاسبات را جهت اجرا آپلود می کند

·        کدها را بر روی خوشه ها توزیع می کند

·        عوامل پردازشی را بر روی خوشه ها راه اندازی می کند

·        محاسبات را مانیتور کرده و در صورت نیاز عوامل پردازشی جدیدی را به نود ها اختصاص می دهد

 

2.     نودهای Zookeeper - خوشه های استورم را هماهنگ می کند

3.     نودهای ناظر(Supervisor) – از طریق نود زوکیپر با نود های نیمبوس ارتباط برقرار کرده و با توجه به سیگنالهای دریافتی عوامل پردازشی را راه اندازی یا متوقف می کند.

در شکل زیر ارتباط میان نود ها نشان داده شده است:

 

 

 

5 اصطلاح کلیدی برای توصیف نحوه کار استورم شامل موارد زیر می باشد:

·        ستون داده ها (Tuples) : لیستی منظم از عناصر. بطور مثال "4 ستون" می تواند بصورت (1,5,6,2) نشان داده شود

·        جریان داده ها (Streams): یک توالی نامحدود از ستونها

·        ورودی داده (Spouts) : منابعی از جریان داده ها در یک محاسبه ( مثلا یک API توییتر)

·        پردازش داده (Bolts): جریان داده های ورودی را پردازش کرده و جریانی از داده های خروجی ایجاد می کند. پردازش می تواند شامل این موارد باشد: اجرای تابع، فیلتر داده، تجمیع داده، ترکیب داده ها و ارتباط با پایگاه داده

·        توپولوژیها ( Topologies): نوع محاسبات عمومی که بصورت ترکبیی از نقاط ورودی و پردازش نشان داده می شود.

در شکل زیر می توان ارتباط میان واحدهای ورودی و پردازش را مشاهده کرد.

 

 

 

 

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

همچنین در شکل زیر شمایی کلی ازجریان ورودی داده ها (Twitter API) و سپس پردازش این داده های جریانی در استورم با استفاده از بستر هدوپ و در نهایت خروجی این پردازش را مشاهده می کنید که یا در پایگاه داده ذخیره می شود و یا دوباره به وب باز می گردد. همانطور که می بینید استورم در کنار ویژگیهای نگاشت - کاهش هدوپ بستری قدرتمند برای پردازش سریع داده های جریانی فراهم می کند