ما Apache Storm في Azure HDInsight؟

إن Apache Storm هو نظام حوسبي مفتوح المصدر وموزع ومتساهل مع الأخطاء. يمكنك استخدام Storm لمعالجة تدفقات البيانات في الوقت الفعلي باستخدام Apache Hadoop. يمكن أن توفر حلول Storm أيضاً معالجة مضمونة للبيانات، مع إمكانية إعادة تشغيل البيانات التي لم تتم معالجتها بنجاح في المرة الأولى.

لماذا تستخدم Apache Storm on HDInsight؟

توفر Storm في HDInsight الميزات التالية:

  • اتفاقية مستوى الخدمة (SLA) بنسبة 99% عند وقت تشغيل Storm: يأتي Storm في HDInsight مع دعم كامل ومستمر. كما توجد اتفاقية SLA لـ Storm على HDInsight بنسبة 99.9 في المائة. وهذا يعني أن Microsoft تضمن أن يكون لمجموعة Storm اتصال خارجي بنسبة 99.9 في المائة على الأقل من الوقت. لمزيد من المعلومات، راجع دعم Azure. راجع أيضاً وثيقة معلومات اتفاقية SLA لـ HDInsight.

  • يدعم التخصيص السهل عن طريق تشغيل البرامج النصية مقابل مجموعة Storm أثناء الإنشاء أو بعده. لمزيدٍ من المعلومات، راجع تخصيص مجموعات HDInsight باستخدام إجراءات البرنامج النصي.

  • إنشاء حلول بلغات متعددة: يمكنك كتابة مكونات Storm باللغة التي تختارها، مثل Java وC# وPython.

    • يدمج Visual Studio مع HDInsight لتطوير وإدارة ومراقبة طوبولوجيا C#. لمزيدٍ من المعلومات، راجع تطوير طوبولوجيا C# Storm باستخدام أدوات HDInsight لبرنامج Visual Studio.

    • يدعم واجهة Trident Java. يمكنك إنشاء طوبولوجيا Storm التي تدعم معالجة الرسائل مرة واحدة بالضبط واستمرار مخزن بيانات المعاملات ومجموعة من عمليات تحليلات التدفق الشائعة.

  • التحجيم الديناميكي: يمكنك إضافة أو إزالة العقد العاملة بدون أي تأثير على تشغيل طوبولوجيا Storm. قم بإلغاء تنشيط وإعادة تنشيط طوبولوجيا التشغيل للاستفادة من العقد الجديدة المضافة من خلال عمليات التحجيم.

  • إنشاء خطوط تدفق باستخدام خدمات Azure المتعددة: يتكامل Storm على HDInsight مع خدمات Azure الأخرى. مثل مراكز الأحداث وقاعدة بيانات SQL وAzure Storage وAzure Data Lake Storage. على سبيل المثال، الحل الذي يتكامل مع خدمات Azure، راجع معالجة الأحداث من مراكز الأحداث باستخدام Apache Storm على HDInsight.

للحصول على قائمة بالشركات التي تستخدم Apache Storm لحلول التحليلات في الوقت الفعلي، راجع الشركات التي تستخدم Apache Storm.

لبدء استخدام Storm، راجع إنشاء مخطط Apache Storm ومراقبته في Azure HDInsight.

كيف يعمل Apache Storm

تقوم Storm بتشغيل طبولوجيات بدلا من وظائف Apache Hadoop MapReduce التي قد تكون على دراية بها. تتكون طوبولوجيا Storm من عدة مكونات مرتبة في رسم بياني دوري موجه (DAG). تتدفق البيانات بين المكونات في الرسم البياني. يستهلك كل مكون دفقاً واحداً أو أكثر من البيانات، ويمكنه -اختيارياً- إرسال دفق واحد أو أكثر. يوضح الرسم البياني التالي كيفية تدفق البيانات بين المكونات في طوبولوجيا عدد الكلمات الأساسية:

Example of how components are arranged in a Storm topology

  • تجلب مكونات الانبثاق البيانات إلى المخطط. تنبعث من هذه المكونات واحد أو أكثر من التدفقات في المخطط.

  • تستهلك مكونات الكتلة التدفقات المنبعثة من الانبثاق أو الكتل الأخرى. قد ينبعث من الكتل -اختيارياً- تدفقات في المخطط. تكون الكتل مسؤولة أيضاً عن كتابة البيانات إلى الخدمات الخارجية أو التخزين، مثل HDFS أو Kafka أو HBase.

الموثوقيه

يضمن Apache Storm أن كل رسالة واردة تتم معالجتها بشكل كامل دائماً، حتى عندما يكون تحليل البيانات منتشراً على مئات العقد.

توفر عقدة Nimbus وظائف مشابهة لوظيفة Apache Hadoop JobTracker. تقوم Nimbus بتعيين المهام إلى العقد الأخرى في مجموعة من خلال Apache ZooKeeper. توفر عقد Zookeeper التنسيق لمجموعة وتساعد على الاتصال بين Nimbus وعملية المشرف على عقد العمال. إذا تعطلت عقدة معالجة واحدة، فسيتم إعلام عقدة Nimbus، وتقوم بتعيين المهمة والبيانات المرتبطة بها إلى عقدة أخرى.

إن التكوين الافتراضي لمجموعات Apache Storm هو أن يكون لديك عقدة Nimbus واحدة فقط. يوفر Storm على HDInsight عقدتين Nimbus. إذا فشلت العقدة الأساسية، تقوم مجموعة Storm بالتبديل إلى العقدة الثانوية أثناء استرداد العقدة الأساسية. يوضح الرسم البياني التالي تكوين تدفق المهام لـ Storm على HDInsight:

Diagram of nimbus, zookeeper, and supervisor

سهولة الاستخدام

استخدم الوصف
اتصال Secure Shell (SSH) يمكنك الوصول إلى العقد الرئيسية لمجموعة Storm عبر الإنترنت باستخدام SSH. يمكنك تشغيل الأوامر مباشرةً على نظام المجموعة الخاص بك باستخدام SSH. لمزيدٍ من المعلومات، راجع استخدام SSH مع HDInsight.
اتصال الويب توفر جميع مجموعات HDInsight واجهة مستخدم ويب Ambari. يمكنك بسهولة مراقبة الخدمات وتكوينها وإدارتها على مجموعتك باستخدام واجهة مستخدم ويب Ambari. كما توفر مجموعات Storm واجهة مستخدم Storm. يمكنك مراقبة وإدارة مخطط Storm قيد التشغيل من المستعرض الخاص بك باستخدام واجهة مستخدم Storm. لمزيدٍ من المعلومات، راجع إدارة HDInsight باستخدام واجهة مستخدم الويب Apache Ambari Web UI والمراقبة والإدارة باستخدام وثائق واجهة مستخدم Apache Storm.
Azure PowerShell وAzure CLI يوفر كل من PowerShell وAzure CLI أدوات مساعدة لسطر الأوامر يمكنك استخدامها من نظام العميل الخاص بك للعمل مع HDInsight وخدمات Azure الأخرى.
تكامل Visual Studio تتضمن أدوات Azure Data Lake لبرنامج Visual Studio قوالب مشروع لإنشاء مخطط C# Storm باستخدام إطار عمل SCP.NET. كما توفر أدوات Data Lake أدوات لنشر الحلول ومراقبتها وإدارتها باستخدام Storm على HDInsight. لمزيدٍ من المعلومات، راجع تطوير طوبولوجيا C# Storm باستخدام أدوات HDInsight لبرنامج Visual Studio.

⁧⁩التكامل مع الخدمات الأخرى⁧⁩

يستخدم Apache Storm الحالات

فيما يلي بعض السيناريوهات الشائعة التي قد تستخدم فيها Storm على HDInsight:

  • إنترنت الأشياء (IoT)
  • الكشف عن الغش
  • التحليلات الاجتماعية
  • الاستخراج والتحويل والتحميل (ETL)
  • مراقبة الشبكة
  • بحث
  • مشاركة الجوال

لمزيدٍ من المعلومات حول سيناريوهات العالم الحقيقي، راجع مستند كيف تستخدم الشركات Apache Storm.

التطوير

يمكن لمطوري .NET تصميم مخطط وتنفيذها في C# باستخدام Data Lake Tools لـ Visual Studio. كما يمكنك إنشاء مخطط مختلط تستخدم مكونات Java وC#. لمزيد من المعلومات، راجع تطوير مخطط C# لـ Apache Storm على HDInsight باستخدام Visual Studio.

كما يمكنك تطوير حلول Java باستخدام IDEA من اختيارك. لمزيدٍ من المعلومات، راجع تطوير طوبولوجيا Java لـ Apache Storm على HDInsight.

كما يُمكن استخدام Python لتطوير مكونات Storm. لمزيدٍ من المعلومات، راجع تطوير طوبولوجيا Apache Storm باستخدام Python على HDInsight.

أنماط التنمية الشائعة

معالجة الرسائل المضمونة

يمكن أن يوفر Apache Storm مستويات مختلفة من معالجة الرسائل المضمونة. على سبيل المثال، يضمن تطبيق Storm الأساسي معالجة مرة واحدة على الأقل، ويمكن أن يضمن Trident المعالجة مرة واحدة بالضبط. راجع الضمانات المتعلقة بمعالجة البيانات على apache.org.

IBasicBolt

يعد نمط قراءة مجموعة الإدخال، الذي يُصدر صفراً أو أكثر من مجموعة، ثم تأكيد مجموعة الإدخال فوراً في نهاية طريقة التنفيذ أمراً شائعاً. يوفر Storm واجهة IBasicBolt لأتمتة هذا النمط.

عمليات الربط

تختلف كيفية ربط تدفقات البيانات بين التطبيقات. على سبيل المثال، يمكنك ربط كل مجموعة من عدة مجموعات في دفق جديد واحد، أو فقط ربط دفعات من المجموعات لنافذة معينة. في كلتا الحالتين، يمكن تحقيق الانضمام باستخدام fieldsGrouping. إن تجميع الحقول هو طريقة لتحديد كيفية توجيه المجموعات إلى الكتل.

في مثال Java التالي، يتم استخدام FieldGrouping لتوجيه المجموعات التي تنشأ من المكونات "1" و"2" و"3" إلى كتلة MyJoiner:

builder.setBolt("join", new MyJoiner(), parallelism) .fieldsGrouping("1", new Fields("joinfield1", "joinfield2")) .fieldsGrouping("2", new Fields("joinfield1", "joinfield2")) .fieldsGrouping("3", new Fields("joinfield1", "joinfield2"));

الدفعات

يوفر Apache Storm آلية توقيت داخلية تعرف باسم "مجموعة القراد". يمكنك تعيين عدد المرات التي تنبعث فيها مجموعة القراد في الطبولوجيا الخاصة بك.

على سبيل المثال لاستخدام "tick tuple" من مكون C#، راجع PartialBoltCount.cs.

ذاكرة تخزين مؤقتة

غالباً ما يتم استخدام التخزين المؤقت في الذاكرة كآلية لتسريع المعالجة لأنه يحتفظ بالأصول المستخدمة بشكل متكرر في الذاكرة. نظراً لأن المخطط يتم توزيعه عبر عقد متعددة وعمليات متعددة داخل كل عقدة، فيجب أن تأخذ استخدام fieldsGrouping بعين الاعتبار. استخدم fieldsGrouping للتأكد من أن المجموعات التي تحتوي على الحقول المستخدمة لبحث ذاكرة التخزين المؤقت يتم توجيهها دائماً إلى نفس العملية. تتجنب وظيفة التجميع هذه تكرار إدخالات ذاكرة التخزين المؤقت عبر العمليات.

تدفق "top N"

عندما تعتمد المخطط الخاص بك على حساب قيمة "top N"، احسب قيمة "top N" على التوازي. ثم ادمج النتائج من تلك الحسابات في قيمة عمومية. يمكن إجراء هذه العملية باستخدام fieldsGrouping للتوجيه حسب الحقل للمعالجة المتوازية. ثم يمكنك التوجيه إلى الكتلة التي تحدد عالمياً قيمة "top N".

على سبيل المثال، لاحتساب قيمة "top N"، راجع مثال RollingTopWords.

تسجيل الدخول

يستخدم Storm Apache Log4j 2 لتسجيل المعلومات. بشكل افتراضي، يتم تسجيل كمية كبيرة من البيانات، وقد يكون من الصعب فرز المعلومات. يمكنك تضمين ملف تكوين التسجيل كجزء من مخطط Storm للتحكم في سلوك التسجيل.

على سبيل المثال، يوضح المخطط كيفية تكوين التسجيل، راجع مثال Java-based WordCount لـ Storm على HDInsight.

الخطوات التالية

تعرف على المزيد حول حلول التحليلات في الوقت الفعلي باستخدام Apache Storm على HDInsight: