يقرأ Apache Storm التدفق الأولي للبيانات في الوقت الفعلي من أحد الطرفين ويمرره عبر سلسلة من وحدات المعالجة الصغيرة ويخرج المعلومات المعالجة/المفيدة في الطرف الآخر.
الرسم البياني التالي يصور المفهوم الأساسي لعاصفة أباتشي.
الآن نلقي نظرة فاحصة على مكونات Apache Storm –
المُكون | التفاصيل |
Tuple | Tuple هو هيكل البيانات الرئيسي في Storm. إنها قائمة بالعناصر المرتبة. بشكل افتراضي، يدعم Tuple كافة أنواع البيانات. بشكل عام، يتم تصميمها كمجموعة من القيم المفصولة بفواصل وتمريرها إلى مجموعة العاصفة. |
Stream | Stream هو تسلسل غير مرتب من الصفوف. |
Spouts | مصدر الدفق. بشكل عام، تقبل Storm بيانات الإدخال من مصادر البيانات الأولية مثل Twitter Streaming API وقائمة انتظار Apache Kafka وقائمة انتظار Kestrel وما إلى ذلك. بخلاف ذلك، يمكنك كتابة أنابيب لقراءة البيانات من مصادر البيانات. “ISpout” هي الواجهة الأساسية لتنفيذ الـ spouts. بعض الواجهات المحددة هي IRichSpout، وBasRichSpout، وKafkaSpout، وما إلى ذلك. |
Bolts | Bolts هي وحدات معالجة منطقية. تقوم Spouts بتمرير البيانات إلى عملية الـ Bolts وتنتج تدفقًا جديدًا للإخراج. يمكن لـ Bolts إجراء عمليات التصفية والتجميع والانضمام والتفاعل مع مصادر البيانات وقواعد البيانات. يستقبل بولت البيانات ويرسلها إلى واحد أو أكثر من الـ Bolts. “IBolt” هي الواجهة الأساسية لتنفيذ الـ Bolts. بعض الواجهات الشائعة هي IRichBolt وIBasicBolt وما إلى ذلك. |
لنأخذ مثالاً في الوقت الفعلي على “تحليل Twitter” ونرى كيف يمكن تصميمه في Apache Storm. الرسم البياني التالي يصور الهيكل.
يأتي مدخل “تحليل تويتر” من Twitter Streaming API. سوف يقرأ Spout تغريدات المستخدمين باستخدام Twitter Streaming API ويخرجها على شكل دفق من الصفوف. ستحتوي مجموعة واحدة من الصنبور على اسم مستخدم تويتر وتغريدة واحدة كقيم مفصولة بفواصل. بعد ذلك، ستتم إعادة توجيه هذا البخار من الصفوف إلى Bolt وسيقوم Bolt بتقسيم التغريدة إلى كلمة فردية، وحساب عدد الكلمات، واستمرار المعلومات في مصدر بيانات تم تكوينه. الآن، يمكننا بسهولة الحصول على النتيجة عن طريق الاستعلام عن مصدر البيانات.
البنية Topology
ترتبط Spouts و bolts معًا وتشكل بنية. يتم تحديد منطق التطبيق في الوقت الحقيقي داخل Storm topology . بكلمات بسيطة، الطوبولوجيا عبارة عن رسم بياني موجه حيث تمثل القمم عمليات حسابية والحواف عبارة عن تدفق للبيانات.
تبدأ الطوبولوجيا البسيطة مع الـ spouts . Spout ترسل البيانات إلى واحد أو أكثر من bolts. يمثل Bolt عقدة في الهيكل لها أصغر منطق معالجة ويمكن إرسال مخرجات bolt إلى bolt آخر كمدخل.
تحافظ Storm على تشغيل الهيكل دائمًا، حتى تقوم بإنهاء الهيكل. تتمثل المهمة الرئيسية لـ Apache Storm في تشغيل الهيكل وسيقوم بتشغيل أي عدد من الهياكل في وقت معين.
المهام Tasks
الآن لديك فكرة أساسية عن spouts و bolts . إنها أصغر وحدة منطقية في الهيكل، ويتم إنشاء الهيكل باستخدام spout واحد ومجموعة من bolts. يجب أن يتم تنفيذها بشكل صحيح بترتيب معين حتى يتم تشغيل الهيكل بنجاح. يُطلق على تنفيذ كل spouts و bolts بواسطة Storm اسم “المهام”. بكلمات بسيطة، المهمة هي إما تنفيذ spouts أو bolts. في وقت معين، يمكن أن يكون لكل spouts و bolts مثيلات متعددة تعمل في عدة سلاسل منفصلة.
العمال Workers
تعمل الهيكلية بطريقة موزعة على العقد العاملة المتعددة. تقوم Storm بتوزيع المهام بالتساوي على جميع العقد العاملة. يتمثل دور العقدة العاملة في الاستماع إلى الوظائف وبدء العمليات أو إيقافها عند وصول وظيفة جديدة.
تجميع الدفق Stream Grouping
يتدفق تدفق البيانات من spouts إلى bolts أو من bolt إلى bolt آخر. يتحكم تجميع الدفق في كيفية توجيه الصف في الهيكل ويساعدنا على فهم تدفق الصف في الهيكل. هناك أربع مجموعات مدمجة كما هو موضح أدناه.
Shuffle Grouping
في التجميع العشوائي، يتم توزيع عدد متساوٍ من الصفوف بشكل عشوائي على جميع العمال الذين يقومون بتنفيذ bolts. الرسم البياني التالي يصور الهيكل.
Field Grouping
يتم تجميع الحقول التي لها نفس القيم في المجموعات معًا ويتم الاحتفاظ بالصفوف المتبقية بالخارج. بعد ذلك، يتم إرسال المجموعات التي لها نفس قيم الحقول إلى نفس العامل الذي ينفذ البراغي. على سبيل المثال، إذا تم تجميع الدفق حسب الحقل “كلمة”، فإن الصفوف التي تحتوي على نفس السلسلة، “مرحبًا” ستنتقل إلى نفس العامل. يوضح الرسم التخطيطي التالي كيفية عمل تجميع الحقول.
Global Grouping
يمكن تجميع جميع التدفقات وتوجيهها إلى مسمار واحد. يرسل هذا التجميع الصفوف التي تم إنشاؤها بواسطة جميع مثيلات المصدر إلى مثيل مستهدف واحد (على وجه التحديد، اختر العامل ذو المعرف الأقل).
All Grouping
يرسل كل التجميع نسخة واحدة من كل مجموعة إلى جميع مثيلات bolt الاستقبال. يستخدم هذا النوع من التجميع لإرسال إشارات إلى bolts. كل التجميع مفيد لعمليات الانضمام.