مشاركة عبر


أوقات تشغيل Azure Synapse

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

تتمتع أوقات التشغيل بالمزايا التالية:

  • أوقات بدء تشغيل جلسة عمل أسرع
  • التوافق الذي تم اختباره مع إصدارات Apache Spark محددة
  • الوصول إلى الموصلات الشائعة والمتوافقة والحزم مفتوحة المصدر

إصدارات وقت تشغيل Azure Synapse المدعومة

تلميح

نوصي بشدة بترقية أحمال العمل بشكل استباقي إلى إصدار GA أحدث من وقت التشغيل وهو وقت تشغيل Azure Synapse ل Apache Spark 3.5 (GA). راجع دليل ترحيل Apache Spark.

يسرد الجدول التالي اسم وقت التشغيل وإصدار Apache Spark وتاريخ الإصدار لإصدارات وقت تشغيل Azure Synapse المدعومة.

اسم وقت التشغيل تاريخ الإصدار مرحلة الإصدار تاريخ إعلان انتهاء الدعم تاريخ انتهاء صلاحية الدعم
وقت تشغيل Azure Synapse ل Apache Spark 3.5 13 أكتوبر 2025 GA 31 أكتوبر 2026 31 أكتوبر 2027
وقت تشغيل Azure Synapse ل Apache Spark 3.4 21 نوفمبر 2023 EOSA 30 أبريل 2025 الربع الأول 2026
وقت تشغيل Azure Synapse ل Apache Spark 3.3 17 نوفمبر 2022 مهمل وسيتم تعطيله قريبا 12 يوليو 2024 31 مارس 2025

مراحل إصدار وقت التشغيل

للحصول على وقت التشغيل الكامل لدورة حياة Apache Spark ونهج الدعم، راجع وقت تشغيل Synapse لدورة حياة Apache Spark وإمكانية الدعم.

تصحيح وقت التشغيل

يتم طرح أوقات تشغيل Azure Synapse لتصحيحات Apache Spark شهريا التي تحتوي على أخطاء وميزات وإصلاحات أمان لمحرك Apache Spark الأساسي وبيئات اللغة والموصلات والمكتبات.

إشعار

  • سيتم تطبيق تحديثات الصيانة تلقائيًا على جلسات عمل جديدة لتجمع Apache Spark بلا خادم معين.
  • يجب عليك اختبار والتحقق من أن التطبيقات تعمل بشكل صحيح عند استخدام إصدارات وقت التشغيل الجديدة.

هام

تصحيحات أمان Log4j 1.2.x

يحتوي الإصدار 1.2.x من مكتبة Log4j مفتوح المصدر على العديد من CVEs المعروفة (نقاط الضعف والتعرض الشائعة)، كما هو موضح هنا.

في جميع أوقات تشغيل تجمع Synapse Spark، قمنا بتصحيح Log4j 1.2.17 JARs للتخفيف من CVEs التالية: CVE-2019-1751، CVE-2020-9488، CVE-2021-4104، CVE-2022-23302، CVE-2022-2330، CVE-2022-23307

يعمل التصحيح المطبق عن طريق إزالة الملفات التالية المطلوبة لاستدعاء الثغرات الأمنية:

  • org/apache/log4j/net/SocketServer.class
  • org/apache/log4j/net/SMTPAppender.class
  • org/apache/log4j/net/JMSAppender.class
  • org/apache/log4j/net/JMSSink.class
  • org/apache/log4j/jdbc/JDBCAppender.class
  • org/apache/log4j/chainsaw/*

في حين لم يتم استخدام الفئات المذكورة أعلاه في تكوينات Log4j الافتراضية في Synapse، فمن الممكن أن لا يزال بعض تطبيق المستخدم يعتمد عليه. إذا كان التطبيق الخاص بك يحتاج إلى استخدام هذه الفئات، فاستخدم إدارة المكتبة لإضافة إصدار آمن من Log4j إلى Spark Pool. لا تستخدم Log4j الإصدار 1.2.17، لأنه سيعيد إدخال الثغرات الأمنية.

يختلف نهج التصحيح استنادًا إلى مرحلة دورة حياة وقت التشغيل:

  • وقت التشغيل المتوفر بشكل عام (GA): لا تتلقى أي ترقيات على الإصدارات الرئيسية (أي 3.x -> 4.x). وسيقوم بترقية إصدار ثانوي (أي 3.x -> 3.y) طالما لا توجد أي تأثيرات على الإهمال أو الانحدار.

  • معاينة وقت التشغيل: لا توجد ترقيات للإصدارات الرئيسية ما لم تكن ضرورية تمامًا. ستتم ترقية الإصدارات الثانوية (3.x -> 3.y) لإضافة أحدث الميزات إلى وقت التشغيل.

  • يتم تصحيح وقت تشغيل الدعم طويل المدى (LTS) بإصلاحات الأمان فقط.

  • لن يحتوي وقت التشغيل المعلن عن انتهاء الدعم على إصلاحات الأخطاء والميزات. يتم دعم إصلاحات الأمان استنادا إلى تقييم المخاطر.

الترحيل بين إصدارات Apache Spark - الدعم

يوفر هذا الدليل نهجا منظما للمستخدمين الذين يرغبون في ترقية وقت تشغيل Azure Synapse لأحمال عمل Apache Spark إلى أحدث إصدار GA، مثل 3.5. تتيح الترقية إلى أحدث إصدار للمستخدمين الاستفادة من تحسينات الأداء والميزات الجديدة وتدابير الأمان المحسنة. من المهم ملاحظة أن الانتقال إلى إصدار أعلى قد يتطلب تعديلات على التعليمات البرمجية الحالية ل Spark بسبب عدم التوافق أو الميزات المهملة.

الخطوة 1: التقييم والتخطيط

  • تقييم التوافق: ابدأ بمراجعة أدلة ترحيل Apache Spark لتحديد أي عدم توافق محتمل، أو ميزات مهجورة، أو واجهات برمجة تطبيقات جديدة بين إصدارك الحالي والنسخة المستهدفة (على سبيل المثال، 3.5).
  • تحليل قاعدة التعليمات البرمجية: فحص تعليمات Spark البرمجية بعناية لتحديد استخدام واجهات برمجة التطبيقات المهملة أو المعدلة. انتبه بشكل خاص لاستعلامات SQL والوظائف المعرفة من قبل المستخدم (UDFs)، والتي قد تتأثر بالترقية.

الخطوة 2: إنشاء تجمع Spark جديد للاختبار

  • إنشاء تجمع جديد: في Azure Synapse، انتقل إلى قسم Spark pools وقم بإعداد تجمع Spark جديد. اختر نسخة Spark المستهدفة (على سبيل المثال، 3.5) وضبطها وفقا لمتطلبات الأداء الخاصة بك.
  • تكوين تكوين مجموعة الشرارة: تأكد من تحديث أو استبدال جميع المكتبات والتبعيات في مجموعة Spark الجديدة لتكون متوافقة مع Spark 3.5.

الخطوة 3: ترحيل التعليمات البرمجية واختبارها

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

سؤال: ما الخطوات التي يجب اتخاذها للترحيل إلى 3.X؟

الإجابة: راجع دليل ترحيل Apache Spark.

السؤال: تلقيت خطأ عندما حاولت ترقية وقت تشغيل تجمع Spark باستخدام PowerShell cmdlet عندما يكون لديهم مكتبات مرفقة.

الإجابة: لا تستخدم PowerShell cmdlet إذا كان لديك مكتبات مخصصة مثبتة في مساحة عمل Synapse. بدلا من ذلك، اتبع الخطوات التالية:

  1. أعد إنشاء Spark Pool الخاص بك من الألف إلى الياء.
  2. قم بتخفيض Spark Pool الحالي، وإزالة أي حزم مرفقة، ثم الترقية مرة أخرى إلى أحدث إصدار GA مثل 3.5

سؤال: لماذا لا يمكنني الترقية إلى 3.5 دون إعادة إنشاء مجموعة شرارة جديدة؟

الإجابة: هذا غير مسموح به من UX، يمكن للعميل استخدام Azure PowerShell لتحديث إصدار Spark. استخدم "ForceApplySetting"، بحيث يتم إيقاف تشغيل أي مجموعات موجودة (مع إصدار قديم).

نموذج استعلام:

$_target_work_space = @("workspace1", "workspace2")

Get-AzSynapseWorkspace |
    ForEach-Object {
        if ($_target_work_space -contains $_.Name) {
            $_workspace_name = $_.Name
            Write-Host "Updating workspace: $($_workspace_name)"
            Get-AzSynapseSparkPool -WorkspaceName $_workspace_name |
            ForEach-Object {
                Write-Host "Updating Spark pool: $($_.Name)"
                Write-Host "Current Spark version: $($_.SparkVersion)"
        
                Update-AzSynapseSparkPool -WorkspaceName $_workspace_name -Name $_.Name -SparkVersion 3.5 -ForceApplySetting
              }
        }
    }