المفاهيم الأساسية لـ Apache Spark المذكورة في تحليلات Azure Synapse

Apache Spark إطار معالجة متوازٍ يدعم المعالجة داخل الذاكرة لتعزيز أداء تطبيقات تحليل البيانات الضخمة. يعد Apache Spark في Azure Synapse Analytics أحد تطبيقات Microsoft لـ Apache Spark في السحابة.

يُسهل Azure Synapse إنشاء إمكانات Spark وتكوينها في Azure. يوفر Azure Synapse تطبيقاً مختلفاً من قدرات Spark الموثقة المذكورة.

تجمعات Spark

يتم إنشاء Apache Spark pool بدون خادم في مدخل Azure. يتمثل تعريف Spark pool، في إنشاء مثيل له، يتم استخدامه لإنشاء مثيل Spark الذي يُعالج البيانات. عندما يتم إنشاء Spark pool، ففي هذه الحالة تتم إحالته كبيانات تعريف، ولا يتم استهلاك أي موارد أو تشغيلها أو تحصيل رسوم مقابل استخدامها. تحتوي Spark pool على سلسلة من الخصائص التي تتحكم في خصائص مثيل Spark. تتضمن هذه الخصائص على سبيل المثال لا الحصر الاسم والحجم وسلوك التحجيم والوقت للتفعيل.

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

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

يمكنك قراءة كيفية إنشاء Spark pool ورؤية جميع ممتلكاتهم هنا بدء استخدام Spark pool في تحليلات Azure Synapse

مثيلات Spark

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

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

تبدأ الفوترة للمثيلات عند بدء تشغيل Azure VM(s). تتوقف الفوترة لمثيلات تجمع Spark عند تغيير مثيلات التجمع إلى إنهاء. لمزيد من المعلومات حول كيفية بدء تشغيل أجهزة Azure الظاهرية وإلغاء تخصيصها، راجع الحالات وحالة الفوترة لأجهزة Azure الظاهرية.

أمثلة

مثال 1

  • يمكنك إنشاء تجمع Spark يسمى SP1؛ يحتوي على حجم مجموعة ثابت من 20 عقدة متوسطة
  • يمكنك إرسال مهمة دفتر ملاحظات، J1 تستخدم 10 عقد، مثيل Spark، يتم إنشاء SI1 لمعالجة المهمة
  • يمكنك الآن إرسال مهمة أخرى، J2، تستخدم 10 عقد لأنه لا تزال هناك سعة في التجمع ويتم معالجة المثيل، J2، بواسطة SI1
  • إذا طلب J2 11 عقدة، لما كانت هناك سعة في SP1 أو SI1. في هذه الحالة، إذا كان J2 يأتي من دفتر ملاحظات، فسيتم رفض المهمة؛ إذا كان J2 يأتي من وظيفة دفعية، يتم وضعها في قائمة الانتظار.
  • تبدأ الفوترة عند إرسال مهمة دفتر الملاحظات J1.
    • يتم إنشاء مثيل تجمع Spark مع 20 عقدة متوسطة، كل منها مع 8 vCores، وعادة ما يستغرق ~3 دقائق للبدء. 20 × 8 = 160 vCores.
    • اعتمادا على وقت بدء تجمع Spark الدقيق ومهلة الخمول ووقت تشغيل مهمتي دفتر الملاحظات؛ من المحتمل أن يعمل التجمع لمدة تتراوح بين 18 و20 دقيقة (وقت إنشاء مثيل تجمع Spark + وقت تشغيل مهمة دفتر الملاحظات + مهلة الخمول).
    • بافتراض وقت تشغيل مدته 20 دقيقة، 160 × 0.3 ساعة = 48 ساعة vCore.
    • ملاحظة: تتم فوترة ساعات vCore في الدقيقة ويختلف تسعير vCore حسب منطقة Azure. لمزيد من المعلومات، راجع تسعير Azure Synapse

المثال 2

  • يمكنك إنشاء Spark pool call SP2؛ لديه مقياس تلقائي ممكن بحد أدنى من 10 إلى 20 عقدة متوسطة كحد أقصى
  • يمكنك إرسال مهمة دفتر ملاحظات J1 تستخدم 10 عقد؛ يتم إنشاء مثيل Spark SI1 لمعالجة المهمة
  • يمكنك الآن إرسال مهمة J2 أخرى تستخدم 10 عقد؛ لأنه لا تزال هناك سعة في التجمع يتدرج المثيل تلقائيا إلى 20 عقدة ويعالج J2.
  • تبدأ الفوترة عند إرسال مهمة دفتر الملاحظات J1.
    • يتم إنشاء مثيل تجمع Spark مع 10 عقد متوسطة، كل منها مع 8 vCores، وعادة ما يستغرق ~3 دقائق للبدء. 10 × 8، 80 فولت كور.
    • عند إرسال J2، يقوم التجمع بالتحجيم التلقائي عن طريق إضافة 10 عقد متوسطة أخرى، وعادة ما يستغرق 4 دقائق للتحجيم التلقائي. إضافة 10 × 8، 80 vCores لإجمالي 160 vCores.
    • اعتمادا على وقت بدء تجمع Spark ووقت تشغيل مهمة دفتر الملاحظات الأولى J1 ووقت توسيع نطاق التجمع ووقت تشغيل دفتر الملاحظات الثاني وأخيرا مهلة الخمول؛ من المحتمل أن يعمل التجمع بين 22 و24 دقيقة (وقت إنشاء مثيل تجمع Spark + وقت تشغيل مهمة دفتر الملاحظات J1 جميعها في 80 vCores) + (وقت التحجيم التلقائي لتجمع Spark + وقت تشغيل مهمة دفتر الملاحظات J2 + مهلة الخمول كلها في 160 vCores).
    • 80 vCores لمدة 4 دقائق + 160 vCores لمدة 20 دقيقة = 58.67 ساعة vCore.
    • ملاحظة: تتم فوترة ساعات vCore في الدقيقة ويختلف تسعير vCore حسب منطقة Azure. لمزيد من المعلومات، راجع تسعير Azure Synapse

المثال 3

  • أنت قمت بإنشاء مجموعة Spark تُسمى SP1؛ يكون حجمها الكتلي الثابت 20 عقدة.
  • يمكنك إرسال مهمة دفتر ملاحظات J1 تستخدم 10 عقد؛ يتم إنشاء مثيل Spark SI1 لمعالجة المهمة.
  • مستخدم آخر U2، يرسل مهمة J3 التي تستخدم 10 عقد؛ يتم إنشاء مثيل Spark SI2 جديد لمعالجة المهمة.
  • يمكنك الآن إرسال مهمة J2 أخرى تستخدم 10 عقد؛ لأنه لا تزال هناك سعة في التجمع ويتم معالجة المثيل J2 بواسطة SI1.
  • تبدأ الفوترة عند إرسال مهمة دفتر الملاحظات J1.
    • يتم إنشاء مثيل تجمع Spark SI1 مع 20 عقدة متوسطة، كل منها مع 8 vCores، وعادة ما يستغرق ~3 دقائق للبدء. 20 × 8، 160 vCores.
    • اعتمادا على وقت بدء تجمع Spark الدقيق ومهلة ide ووقت تشغيل مهمة دفتر الملاحظات الأولى والثالثة؛ من المحتمل أن يعمل تجمع SI1 لمدة تتراوح بين 18 و20 دقيقة (وقت إنشاء مثيل تجمع Spark + وقت تشغيل مهمة دفتر الملاحظات + مهلة الخمول).
    • يتم إنشاء مثيل SI2 آخر لتجمع Spark مع 20 عقدة متوسطة، كل منها مع 8 vCores، وعادة ما يستغرق ~3 دقائق للبدء. 20 × 8، 160 فولت كور
    • اعتمادا على وقت بدء تجمع Spark الدقيق، ومهلة ide ووقت تشغيل مهمة دفتر الملاحظات الأولى؛ من المحتمل أن يعمل تجمع SI2 لمدة تتراوح بين 18 و20 دقيقة (وقت إنشاء مثيل تجمع Spark + وقت تشغيل مهمة دفتر الملاحظات + مهلة الخمول).
    • بافتراض تشغيل التجمعين لمدة 20 دقيقة لكل منهما، 160 × .03 × 2 = 96 ساعة vCore.
    • ملاحظة: تتم فوترة ساعات vCore في الدقيقة ويختلف تسعير vCore حسب منطقة Azure. لمزيد من المعلومات، راجع تسعير Azure Synapse

الحصص النسبية وقيود الموارد في Apache Spark لـ Azure Synapse

مستوى مساحة العمل

تتوفر كل مساحة عمل من المساحات Azure Synapse مع حصة نسبية افتراضية من vCores التي يُمكن استخدامها لـ Spark. يتم تقسيم الحصة النسبية بين الحصة النسبية للمستخدم والحصة النسبية لتدفق البيانات بحيث لا يُستخدم النمط لجميع vCores في مساحة العمل. تختلف الحصة النسبية حسب نوع الاشتراك ولكنها متماثلة بين المستخدم وتدفق البيانات. ومع ذلك، إذا طلبت vCores أكثر مما تبقى في مساحة العمل، فستحصل على الخطأ التالي:

Failed to start session: [User] MAXIMUM_WORKSPACE_CAPACITY_EXCEEDED
Your Spark job requested 480 vCores.
However, the workspace only has xxx vCores available out of quota of yyy vCores.
Try reducing the numbers of vCores requested or increasing your vCore quota. Click here for more information - https://go.microsoft.com/fwlink/?linkid=213499

يُشير الارتباط في الرسالة إلى المقال ذي الصلة.

يُوضح المقال التالي كيفية طلب زيادة في الحصة النسبية vCore الخاصة بمساحة العمل.

  • حدد "تحليلات Azure Synapse" كنوع الخدمة.
  • في إطار تفاصيل الحصة النسبية، اختر Apache Spark (vCore) لكل مساحة عمل

طلب زيادة السعة عبر مدخل Azure

مستوى Spark pool

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

Failed to start session: Your Spark job requested xx vCores.
However, the pool is consuming yy vCores out of available zz vCores.Try ending the running job(s) in the pool, reducing the numbers of vCores requested, increasing the pool maximum size or using another pool

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

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