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

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

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

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

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

تلميح

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

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

اسم وقت التشغيل تاريخ الإصدار مرحلة الإصدار تاريخ إعلان انتهاء الدعم تاريخ انتهاء صلاحية الدعم
وقت تشغيل Azure Synapse ل Apache Spark 3.4 21 نوفمبر 2023 GA (اعتبارا من 8 أبريل 2024) الربع الثاني 2025 الربع الأول 2026
وقت تشغيل Azure Synapse ل Apache Spark 3.3 17 نوفمبر 2022 انتهاء الدعم المعلن 12 يوليو 2024 3/31/2025
Azure Synapse Runtime لـ Apache Spark 3.2 8 يوليو 2022 مهمل وتعطل قريبا 8 يوليو 2023 8 يوليو 2024
Azure Synapse Runtime for Apache Spark 3.1 26 مايو 2021 مهمل وتعطل قريبا 26 يناير 2023 26 يناير 2024
Azure Synapse لـ for Apache Spark 2.4 15 ديسمبر 2020 مهمل وتعطل قريبا 29 يوليو 2022 29 سبتمبر 2023

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

للحصول على وقت التشغيل الكامل لدورة حياة 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 من الإصدارات 2.4 أو 3.1 أو 3.2 أو 3.3 إلى أحدث إصدار GA، مثل 3.4. تتيح الترقية إلى أحدث إصدار للمستخدمين الاستفادة من تحسينات الأداء والميزات الجديدة وتدابير الأمان المحسنة. من المهم ملاحظة أن الانتقال إلى إصدار أعلى قد يتطلب تعديلات على التعليمات البرمجية الحالية ل Spark بسبب عدم التوافق أو الميزات المهملة.

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

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

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

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

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

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

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

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

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

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

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

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

الجواب: هذا غير مسموح به من 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.4 -ForceApplySetting
              }
        }
    }