برنامج Apache Spark Streaming التعليمي للمبتدئين: العمل والهندسة المعمارية والميزات

نشرت: 2020-02-27

نحن نعيش حاليًا في عالم يتم فيه إنشاء كمية هائلة من البيانات كل ثانية بمعدل سريع. يمكن أن توفر هذه البيانات نتائج مفيدة وذات مغزى إذا تم تحليلها بدقة. يمكنه أيضًا تقديم حلول للعديد من الصناعات في الوقت المناسب.

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

يمكن استخدامه من قبل أي شركة تستخدم كمية كبيرة من البيانات ، ويمكنهم تحليلها لمصلحتهم لتحسين العملية الشاملة في أعمالهم وزيادة رضا العملاء وتجارب المستخدم. توفر تجارب المستخدم الأفضل ورضا العملاء فائدة للمؤسسة ، على المدى الطويل ، لتوسيع الأعمال وتحقيق الربح.

جدول المحتويات

ما هو الجري؟

دفق البيانات هو طريقة يتم فيها نقل المعلومات كتدفق مستمر وثابت. مع نمو الإنترنت ، تتزايد أيضًا تقنيات البث.

ما هو Spark Streaming؟

عندما تصل البيانات بشكل مستمر في تسلسل غير منضم ، يطلق عليها دفق البيانات. تتدفق بيانات الإدخال بثبات ، وهي مقسمة بالتدفق. تتم معالجة البيانات بعد تقسيمها إلى وحدات منفصلة. يسمى تحليل البيانات ومعالجة البيانات في زمن انتقال منخفض بمعالجة التدفق.

في عام 2013 ، تمت إضافة Apache Spark مع Spark Streaming. هناك العديد من المصادر التي يمكن أن يتم من خلالها استيعاب البيانات مثل TCP Sockets و Amazon Kinesis و Apache Flume و Kafka. بمساعدة الخوارزميات المعقدة ، تتم معالجة البيانات. يتم استخدام وظيفة عالية المستوى مثل النافذة والانضمام والتقليل والخريطة للتعبير عن المعالجة. تُستخدم لوحات المعلومات المباشرة وقواعد البيانات وأنظمة الملفات لدفع البيانات المعالجة إلى أنظمة الملفات.

عمل ستريم

فيما يلي العمل الداخلي. يقسم تدفق شرارة تدفقات بيانات الإدخال المباشر إلى دفعات. يتم استخدام Spark Engine لمعالجة هذه الدُفعات لتوليد دفعات التدفق النهائي كنتيجة لذلك.

تنقسم البيانات الموجودة في الدفق إلى مجموعات صغيرة ويتم تمثيلها بواسطة Apache Spark Discretized Stream (Spark DStream). تُستخدم Spark RDDs لبناء DStreams ، وهذا هو تجريد البيانات الأساسي لـ Spark. يمكن دمج أي مكونات من Apache Spark مثل Spark SQL و Spark MLib بسهولة مع Spark Streaming بسلاسة.

يساعد Spark Streaming في توسيع نطاق تدفقات البيانات الحية. إنه أحد امتدادات Spark API الأساسية. كما أنه يتيح معالجة التدفق المتسامح مع الأخطاء والإنتاجية العالية. استخدام Spark Streaming يقوم بمعالجة وتدفق البيانات الحية في الوقت الحقيقي. تستخدم كبرى الشركات في العالم خدمة Spark Streaming مثل Pinterest و Netflix و Uber.

يوفر Spark Streaming أيضًا تحليلًا للبيانات في الوقت الفعلي. يتم تنفيذ المعالجة المباشرة والسريعة للبيانات على منصة واحدة من Spark Streaming.

اقرأ أيضًا Apache Spark Architecture

لماذا Spark Streaming؟

يمكن استخدام Spark Streaming لدفق البيانات في الوقت الفعلي من مصادر مختلفة ، مثل Facebook و Stock Market والأنظمة الجغرافية ، وإجراء تحليلات قوية لتشجيع الشركات.

هناك خمسة جوانب مهمة لـ Spark Streaming مما يجعلها فريدة من نوعها ، وهي:

1. التكامل

يمكن دمج المكتبات المتقدمة مثل معالجة الرسوم البيانية والتعلم الآلي و SQL معها بسهولة.

2. الجمع

يمكن إجراء البيانات المتدفقة بالاقتران مع الاستعلامات التفاعلية ومجموعات البيانات الثابتة أيضًا.

3. موازنة الحمل

يحتوي Spark Streaming على توازن مثالي للحمل ، مما يجعله مميزًا للغاية.

4. استخدام الموارد

يستخدم Spark Streaming المورد المتاح بطريقة مثالية للغاية.

5. التعافي من المتطرفين والفشل

يمكن لـ Spark Streaming التعافي بسرعة من أي نوع من الإخفاقات أو التعثر.

الحاجة إلى البث في Apache Spark

يتم استخدام نموذج المشغل المستمر أثناء تصميم النظام لمعالجة التدفقات بشكل تقليدي لمعالجة البيانات. عمل النظام كالتالي:

  1. تستخدم مصادر البيانات لدفق البيانات. الأنواع المختلفة لمصادر البيانات هي أجهزة إنترنت الأشياء ، وبيانات نظام القياس عن بعد ، والسجلات الحية وغيرها الكثير. يتم استيعاب هذه البيانات المتدفقة في أنظمة استيعاب البيانات مثل Amazon Kinesis و Apache Kafka وغيرها الكثير.
  2. على الكتلة ، تتم المعالجة المتوازية على البيانات.
  3. يتم استخدام أنظمة المصب مثل كافكا ، كاساندرا ، HBase لتمرير النتائج.

تقوم مجموعة من العقد العاملة بتشغيل بعض العوامل المستمرة. تتم معالجة سجلات البيانات المتدفقة واحدًا تلو الآخر. ثم يتم إعادة توجيه المستندات إلى المشغلين التاليين في خط الأنابيب.

يتم استخدام مشغلي المصدر لتلقي البيانات من أنظمة الاستيعاب. يتم استخدام مشغلي الأحواض لإعطاء مخرجات لنظام المصب.

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

التعافي السريع من الفشل

في حالات فشل النظام الحالية ، تترافق بسرعة مع حالات فشل النظام ويتم استيعابها من خلال استعادة المعلومات المفقودة عن طريق حساب المعلومات المفقودة في العقد المتوازية. وبالتالي ، فإنه يجعل الاسترداد أسرع مقارنة بالأنظمة التقليدية.

موازن التحميل

يساعد موازن التحميل على تخصيص الموارد والبيانات بين العقدة بطريقة أكثر كفاءة بحيث لا ينتظر أي مورد أو لا يفعل شيئًا سوى توزيع البيانات بالتساوي عبر العقد.

توحيد أعباء العمل التفاعلية والدفعية والمتدفقة

يمكن للمرء أيضًا التفاعل مع تدفق البيانات عن طريق إجراء استعلامات لبيانات التدفق. يمكن أيضًا دمجه مع مجموعات البيانات الثابتة. لا يمكن للمرء إجراء استعلامات مخصصة باستخدام عوامل تشغيل جديدة لأنها غير مصممة للمشغلين المتصلين. يمكن دمج الاستعلامات التفاعلية والمتدفقة والدُفعية باستخدام محرك واحد.

استعلامات وتحليلات SQL مع ML

أدى تطوير الأنظمة باستخدام أمر قاعدة بيانات مشترك إلى تسهيل عمل المطور بالتعاون مع الأنظمة الأخرى. يقبل المجتمع على نطاق واسع استعلامات SQL. حيث يوفر النظام وحدة ومكتبات للتعلم الآلي يمكن استخدامها لغرض تحليلي متقدم.

نظرة عامة على شرارة الجري

يستخدم Spark Streaming مجموعة من RDDs التي تُستخدم لمعالجة بيانات الوقت الفعلي. وبالتالي ، يتم استخدام Spark Streaming بشكل عام لمعالجة دفق البيانات في الوقت الفعلي. يوفر Spark Streaming معالجة متسامحة مع الأخطاء وعالية الإنتاجية للتدفقات الحية للبيانات. إنها ميزة إضافية تأتي مع Core Spark API.

ميزات Spark Streaming

  1. تحليل الأعمال : باستخدام Spark Streaming ، يمكن للمرء أيضًا معرفة سلوك الجمهور. يمكن استخدام هذا التعلم لاحقًا في صنع القرار في الشركات.
  2. التكامل: تم دمج المعالجة في الوقت الحقيقي والدُفعات مع Spark
  3. تحمل الخطأ - تتمثل القدرة الفريدة لـ Spark في قدرتها على التعافي من الفشل بكفاءة.
  4. السرعة: تحقق Spark زمن انتقال منخفض
  5. التحجيم: يمكن تحجيم العقد بسهولة حتى مئات بواسطة Spark.

أساسيات شرارة الجري

1. سياق الجري

في Spark ، يتم استهلاك دفق البيانات وإدارته بواسطة Streaming Context. يقوم بإنشاء كائن من جهاز الاستقبال الذي يتم إنتاجه عن طريق تسجيل تدفق الإدخال. وبالتالي ، فإن وظيفة Spark الرئيسية هي التي تصبح نقطة دخول مهمة إلى النظام لأنها توفر العديد من السياقات التي توفر سير عمل افتراضيًا لمصادر مختلفة مثل Akka Actor و Twitter و ZeroMQ.

قراءة: دور Apache Spark في البيانات الضخمة ولماذا هي فريدة من نوعها

يمثل كائن سياق الشرارة الاتصال بمجموعة شرارة. حيث يتم إنشاء كائن Spark Streaming بواسطة كائن StreamingContext ، يمكن أيضًا إنشاء المجمعات و RDDs ومتغيرات البث ككائن SparkContex.

2. نقاط التفتيش ومتغيرات البث والمراكم

نقاط تفتيش

يعمل Checkpoint على غرار Checkpoints الذي يخزن حالة الأنظمة كما هو الحال في الألعاب. حيث ، في هذه الحالة ، تساعد نقاط التحقق في تقليل فقدان الموارد وجعل النظام أكثر مرونة في مواجهة انهيار النظام. تعتبر منهجية نقاط التفتيش طريقة أفضل لتتبع حالات النظام وحفظها بحيث يمكن التراجع عنها بسهولة في وقت الاسترداد.

متغيرات البث

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

المراكم

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

دي ستريم

DStream يعني دفق منفصل. يوفر Spark Streaming التجريد الضروري ، والذي يسمى Discretized Stream (DStream). DStream هي البيانات التي تتدفق باستمرار. من مصدر البيانات ، يتم تلقي DStream. يمكن أيضًا الحصول عليها من تدفق البيانات المعالجة. يؤدي تحويل دفق الإدخال إلى توليد دفق بيانات معالج.

بعد فترة زمنية محددة ، يتم تضمين البيانات في RDD. سلسلة لا نهاية لها من RDDs تمثل DStream.

التخزين المؤقت

يمكن للمطورين استخدام DStream لتخزين بيانات الدفق في الذاكرة. يكون هذا مفيدًا إذا تم حساب البيانات عدة مرات في DStream. يمكن تحقيق ذلك باستخدام طريقة persist () على DStream.

يتم عمل ازدواجية في البيانات لضمان سلامة وجود نظام مرن يمكنه المقاومة والفشل في النظام وبالتالي يكون لديه القدرة على تحمل الأخطاء في النظام (مثل كافكا ، ومقابس ، وفلوم ، إلخ.)

ميزة Spark Streaming & Architecture

قد تكون معالجة تدفق بيانات واحد في كل مرة مرهقة في بعض الأحيان ؛ ومن ثم يقوم Spark Streaming بتحديد البيانات إلى مجموعات فرعية صغيرة يمكن إدارتها بسهولة. ذلك لأن عمال Spark يحصلون على مخازن مؤقتة للبيانات بشكل متوازٍ يقبلها جهاز استقبال Spark Streaming. ومن ثم فإن النظام بأكمله يدير الدُفعات بالتوازي ثم يجمع النتائج النهائية. ثم تتم معالجة هذه المهام القصيرة على دفعات بواسطة محرك Spark ، ويتم تقديم النتائج إلى الأنظمة الأخرى.

في هندسة Spark Streaming ، لا يتم تخصيص وتحميل الحساب بشكل ثابت إلى عقدة ولكن بناءً على منطقة البيانات وتوافر الموارد. وبالتالي فهو يقلل من وقت التحميل مقارنة بالأنظمة التقليدية السابقة. ومن ثم استخدام مبدأ موقع البيانات ، فإنه من الأسهل أيضًا اكتشاف الأخطاء واستعادتها.

عادةً ما يتم تمثيل عقد البيانات في Spark بواسطة RDD وهي مجموعة بيانات التوزيع المرنة.

أهداف Spark Streaming

فيما يلي الأهداف التي حققتها Spark architecture.

1. موازنة الحمل الديناميكي

هذه إحدى الميزات الأساسية لـ Spark Streaming حيث يتم تخصيص تدفقات البيانات ديناميكيًا بواسطة موازن التحميل ، وهو المسؤول عن بيانات التخصيص وحساب الموارد باستخدام قواعد محددة محددة فيه. الهدف الرئيسي من موازنة الحمل هو موازنة عبء العمل بكفاءة عبر العمال ووضع كل شيء بطريقة موازية بحيث لا يكون هناك أي هدر للموارد المتاحة. ومسؤول أيضًا عن التخصيص الديناميكي للموارد للعقد العاملة في النظام.

2. الفشل والاسترداد

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

وأيضًا يتم توزيع المهمة الفاشلة بالتساوي على جميع العقد في النظام لإعادة الحساب وإعادتها من الفشل بشكل أسرع من الطريقة التقليدية.

3. الدُفعات والاستعلام التفاعلي

يتم استدعاء مجموعة RDDs في Spark لتكون DStream في Spark والتي توفر علاقة بين أحمال العمل المتدفقة والدُفعات. يتم تخزين هذه الدفعات في ذاكرة Spark ، مما يوفر طريقة فعالة للاستعلام عن البيانات الموجودة فيها.

أفضل جزء في Spark هو أنه يشتمل على مجموعة متنوعة من المكتبات التي يمكن استخدامها عند الحاجة بواسطة نظام شرارة. قليل من أسماء المكتبات هي MLlib للتعلم الآلي و SQL للاستعلام عن البيانات و GraphX ​​و Data Frame بينما يمكن تحويل Dataframe والأسئلة إلى عبارات SQL مكافئة بواسطة DStreams.

4. الأداء

نظرًا لأن نظام الشرارة يستخدم توزيعات متوازية للمهمة التي تعمل على تحسين قدرتها الإنتاجية وبالتالي الاستفادة من محرك الشرر القادر على تحقيق زمن انتقال منخفض يصل إلى 100 مللي ثانية.

كيف يعمل Spark Streaming؟

يتم تقسيم البيانات الموجودة في الدفق إلى مجموعات صغيرة تسمى DStreams في Spark Streaming. إنه تسلسل من RDDs داخليًا. يتم استخدام Spark APIs بواسطة RDDS لمعالجة البيانات ويتم إرجاع الشحنات نتيجة لذلك. تتوفر واجهة برمجة تطبيقات Spark Streaming في Python و Java و Scala. تفتقر إلى العديد من الميزات في Python API التي تم تقديمها مؤخرًا في Spark 1.2.

تسمى الحسابات ذات الحالة الحالة التي يتم الاحتفاظ بها بواسطة Spark Streaming بناءً على البيانات الواردة في الدفق. تتم معالجة البيانات التي تتدفق في الدفق ضمن إطار زمني. يتم تحديد هذا الإطار الزمني من قبل المطور ، ويسمح به Spark Streaming. النافذة الزمنية هي الإطار الزمني الذي يجب أن يكتمل العمل فيه. يتم تحديث النافذة الزمنية خلال فترة زمنية تُعرف أيضًا باسم الفاصل الزمني للانزلاق في النافذة.

مصادر شرارة

كائن المستقبل المرتبط بمدخل DStream يخزن البيانات المستلمة في Sparks Memory من أجل المعالجة.

يحتوي البث المدمج على فئتين:

1. المصدر الأساسي

المصادر المتاحة في Streaming API ، مثل Socket Connection و File System.

2. مصدر متقدم

المستوى المتقدم للمصادر هو Kinesis و Flume & Kafka إلخ.

عمليات التدفق

هناك نوعان من العمليات التي يدعمها Spark RDDS وهما: -

1. عمليات الإخراج في Apache Spark

تُستخدم عمليات الإخراج لدفع بيانات DStream إلى نظام خارجي مثل نظام الملفات أو قاعدة البيانات. تسمح عمليات الإخراج باستهلاك البيانات المحولة بواسطة الأنظمة الخارجية. يتم تنفيذ جميع DStreams Transformation بالفعل عن طريق المشغل ، والذي يتم بواسطة الأنظمة الخارجية.

هذه هي عمليات الإخراج الحالية:

foreachRDD (func) ، [لاحقة]) ، saveAsHadoopFiles (بادئة ، [لاحقة]) ، saveAsObjectFiles (بادئة ، [لاحقة]) "prefix-TIME_IN_MS [.suffix]" ، saveAsTextFiles (بادئة ، طباعة ()

تقوم RDDs بتنفيذ عمليات الإخراج بتكاسل. داخل عمليات DStream للإخراج ، يتم اتخاذ إجراءات RDD بقوة لتتم معالجتها من البيانات المستلمة. يتم تنفيذ عمليات الإخراج في وقت واحد. تحدد تطبيقات Spark ترتيب أداء عمليات الإخراج.

2. شرارة التحول

يغير تحويل Spark أيضًا البيانات من DStream حيث تدعمها RDDs في Spark. تمامًا مثل Spark RDD ، يتم دعم العديد من التعديلات بواسطة DStream.

فيما يلي عمليات التحويل الأكثر شيوعًا:

Window () ، updateStateByKey () ، تحويل () ، [numTasks]) ، مجموعة cogroup (otherStream ، [numTasks]) ، الانضمام (otherStream ، تقليلByKey (func ، [numTasks]) ، countByValue () ، تقليل () ، union (otherStream ) ، count () ، إعادة تقسيم (numPartitions) ، عامل تصفية () ، flatMap () ، خريطة ().

خاتمة

في عالم اليوم القائم على البيانات ، أثبتت أدوات تخزين البيانات وتحليلها أنها العامل الرئيسي في تحليلات الأعمال ونموها. لقد أثبتت البيانات الضخمة والأدوات والتقنيات المرتبطة بها أنها في حالة طلب متزايد. على هذا النحو ، تمتلك Apache Spark سوقًا رائعًا وتقدم ميزات رائعة للعملاء والشركات.

إذا كنت مهتمًا بمعرفة المزيد عن البيانات الضخمة ، فراجع دبلومة PG في تخصص تطوير البرمجيات في برنامج البيانات الضخمة المصمم للمهنيين العاملين ويوفر أكثر من 7 دراسات حالة ومشاريع ، ويغطي 14 لغة وأدوات برمجة ، وتدريب عملي عملي ورش العمل ، أكثر من 400 ساعة من التعلم الصارم والمساعدة في التوظيف مع الشركات الكبرى.

تعلم دورات تطوير البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

قيادة الثورة التكنولوجية المدفوعة بالبيانات

400+ ساعة من التعلم. 14 لغة وأدوات. حالة خريجي IIIT-B.
برنامج الشهادة المتقدم في البيانات الضخمة من معهد IIIT بنغالور