تاریخچه:
آپاچی استورم یک چارچوب پردازشی توزیعی برای پردازش داده های در جریان می باشد که به زبان برنامه نویسی clojure نوشته شده است. این برنامه در ابتدا توسط ناتان مارتس و همکارانش در موسسه بکتایپ ایجاد شده و بعد از تصاحب آن توسط تویتر به صورت نرم افزاری منبع باز درآمد.
کاربردها:
استورم یک سیستم محاسبات زمان واقعی توزیع شده برای پردازش حجم زیاد از داده ها با نرخ تولید بالا است. استورم بسیار سریع بوده و قادر است بیش از یک میلیون رکورد در ثانیه را برای هر گره در یک خوشه با اندازه متوسط پردازش کند. شرکت ها این سرعت را کنترل کرده و آن را با دیگر برنامه های دسترسی داده در هدوپ ترکیب می کنند تا از وقایع نامطلوب جلوگیری کرده یا نتایج مثبت را بهینه سازند.
برخی از فرصت های تجاری جدید و ویژه در استفاده از استورم عبارتند از: مدیریت خدمات مشتری در زمان واقعی، کسب درآمد از داده ها، داشبورد های عملیاتی، تجزیه و تحلیل امنیت سایبری و تشخیص تهدید.
استورم ساده بوده و توسعه دهندگان می توانند توپولوژیهای استورم را با استفاده از هر زبان برنامه نویسی ایجاد کنند.
ویژگیها:
5 ویژگی زیر استورم را انتخابی ایده آل برای پردازش داده های بهنگام نموده است:
· سرعت بالا – قدرت پردازش یک میلیون پیغام 100 بایتی در هر ثانیه و بر روی هر نود
· مقیاس پذیری خوب – محاسبات موازی بر روی خوشه ای از ماشینها
· تحمل خطا – هنگامی که عوامل پردازشی بر روی هر نود از کار بیافتند استورم آنها را بصورت خودکار راه اندازی می کند و زمانی که خود نود از کار بیافتد استورم عامل پردازش مربوطه را بر روی نودی دیگر راه اندازی می کند
· قابلیت اطمینان – استورم اطمینان می دهد که هر واحد داده دقیقا یکبار پردازش می شود.
· کاربری آسان – پیکره بندی استاندارد سیستم یکبار و در روز اول انجام شده و زمانی که تنظیم گردید براحتی می توان از آن استفاده کرد
نحوه کار:
یک خوشه استورم شامل سه مجموعه نود به قرار زیر است:
1. نود Nimbus( نود اصلی ):
· محاسبات را جهت اجرا آپلود می کند
· کدها را بر روی خوشه ها توزیع می کند
· عوامل پردازشی را بر روی خوشه ها راه اندازی می کند
· محاسبات را مانیتور کرده و در صورت نیاز عوامل پردازشی جدیدی را به نود ها اختصاص می دهد
2. نودهای Zookeeper - خوشه های استورم را هماهنگ می کند
3. نودهای ناظر(Supervisor) – از طریق نود زوکیپر با نود های نیمبوس ارتباط برقرار کرده و با توجه به سیگنالهای دریافتی عوامل پردازشی را راه اندازی یا متوقف می کند.
در شکل زیر ارتباط میان نود ها نشان داده شده است:
5 اصطلاح کلیدی برای توصیف نحوه کار استورم شامل موارد زیر می باشد:
· ستون داده ها (Tuples) : لیستی منظم از عناصر. بطور مثال "4 ستون" می تواند بصورت (1,5,6,2) نشان داده شود
· جریان داده ها (Streams): یک توالی نامحدود از ستونها
· ورودی داده (Spouts) : منابعی از جریان داده ها در یک محاسبه ( مثلا یک API توییتر)
· پردازش داده (Bolts): جریان داده های ورودی را پردازش کرده و جریانی از داده های خروجی ایجاد می کند. پردازش می تواند شامل این موارد باشد: اجرای تابع، فیلتر داده، تجمیع داده، ترکیب داده ها و ارتباط با پایگاه داده
· توپولوژیها ( Topologies): نوع محاسبات عمومی که بصورت ترکبیی از نقاط ورودی و پردازش نشان داده می شود.
در شکل زیر می توان ارتباط میان واحدهای ورودی و پردازش را مشاهده کرد.
کاربران استورم نوع توپولوژی مربوطه را به هنگام دریافت جریان داده ها از منابع ورودی تعریف می کنند و بعد از پردازش داده ها نتیجه را وارد هدوپ می کنند.
همچنین در شکل زیر شمایی کلی ازجریان ورودی داده ها (Twitter API) و سپس پردازش این داده های جریانی در استورم با استفاده از بستر هدوپ و در نهایت خروجی این پردازش را مشاهده می کنید که یا در پایگاه داده ذخیره می شود و یا دوباره به وب باز می گردد. همانطور که می بینید استورم در کنار ویژگیهای نگاشت - کاهش هدوپ بستری قدرتمند برای پردازش سریع داده های جریانی فراهم میکند.