Поделиться через


Среды выполнения Azure Synapse

Пулы Apache Spark в Azure Synapse используют среды выполнения для связывания различных версий ключевых компонентов, таких как оптимизации Azure Synapse, пакеты и соединители, с определенной версией Apache Spark. Каждая среда выполнения периодически обновляется для включения новых улучшений, функций и исправлений. При создании бессерверного пула Apache Spark выберите соответствующую версию Apache Spark. На основе этого пул предварительно установлен с соответствующими компонентами и пакетами среды выполнения.

Эти среды выполнения обладают следующими преимуществами:

  • Ускоренный запуск сеансов
  • Проверенная совместимость с конкретными версиями Apache Spark
  • Доступ к популярным, совместимым соединителям и пакетам с открытым кодом

Поддерживаемые выпуски среды выполнения Azure Synapse

Совет

Настоятельно рекомендуется заранее обновить рабочие нагрузки до более последней общедоступной версии среды выполнения, которая является средой выполнения Azure Synapse для Apache Spark 3.4 (GA)). Ознакомьтесь с руководством по миграции Apache Spark.

В таблице ниже перечислены названия, версии Apache Spark и даты выпуска поддерживаемых версий среды выполнения Azure Synapse.

Имя среды выполнения Дата запуска в производство Этап выпуска Дата объявления о завершении поддержки Дата окончания срока действия поддержки
Среда выполнения Azure Synapse для Apache Spark 3.4 21 ноября 2023 г. GA (с 8 апреля 2024 г.) Q2 2025 Q1 2026
Среда выполнения Azure Synapse для Apache Spark 3.3 17 ноября 2022 г. Окончание поддержки объявлено 12 июля 2024 г. 3/31/2025
Среда выполнения Azure Synapse для Apache Spark 3.2 8 июля 2022 г. устаревшие и скоро отключенные 8 июля 2023 г. 8 июля 2024 г.
Среда выполнения Azure Synapse для Apache Spark 3.1 26 мая 2021 г. устаревшие и скоро отключенные 26 января 2023 г. 26 января 2024 г.
Среда выполнения Azure Synapse для 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

Библиотека Log4j версии 1.2.x с открытым кодом содержит несколько известных общих уязвимостей и рисков (CVE), как описано здесь.

Во всех средах выполнения пула Spark Synapse мы исправили файлы JAR для Log4j 1.2.17, чтобы устранить следующие CVE: 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. Не используйте Log4j версии 1.2.17, так как это приведет к повторному появлению уязвимостей.

Политика исправлений может быть разной в зависимости от этапа жизненного цикла среды выполнения:

  • Общедоступная среда выполнения (GA): получение обновлений в основных версиях (т. е. 3.x —> 4.x). И обновит дополнительную версию (т. е. 3.x -> 3.y), пока не существует нерекомендуемых последствий или регрессии.

  • Предварительная версия среды выполнения: не получает обновлений основной версии, кроме строго необходимых. Получает обновления дополнительной версии (например, 3.1 –> 3.2) будут обновлены, чтобы получать самые свежие возможности среды выполнения.

  • Среда выполнения долгосрочной поддержки (LTS) исправлена только с исправлениями безопасности.

  • После завершения поддержки объявленная среда выполнения не будет содержать исправлений ошибок и компонентов. Исправления безопасности поддерживаются на основе оценки рисков.

Миграция между версиями Apache Spark — поддержка

В этом руководстве представлен структурированный подход для пользователей, желающих обновить рабочую нагрузку Azure Synapse Runtime для Apache Spark с версий 2.4, 3.1, 3.2 или 3.3 до последней версии общедоступной версии, например 3.4. Обновление до последней версии позволяет пользователям воспользоваться улучшениями производительности, новыми функциями и улучшенными мерами безопасности. Важно отметить, что переход на более высокую версию может потребовать корректировки существующего кода Spark из-за несовместимости или устаревших функций.

Шаг 1. Оценка и планирование

  • Оценка совместимости. Ознакомьтесь с руководствами по миграции Apache Spark, чтобы определить потенциальные несовместимости, устаревшие функции и новые API между текущей версией Spark (2.4, 3.1, 3.2 или 3.3) и целевой версией (например, 3.4).
  • Анализ базы кода. Внимательно изучите код Spark, чтобы определить использование устаревших или измененных API. Обратите особое внимание на запросы SQL и определяемые пользователем функции (UDF), которые могут повлиять на обновление.

Шаг 2. Создание нового пула Spark для тестирования

  • Создайте новый пул. В Azure Synapse перейдите в раздел пулов Spark и настройте новый пул Spark. Выберите целевую версию Spark (например, 3.4) и настройте ее в соответствии с требованиями к производительности.
  • Настройка конфигурации пула Spark. Убедитесь, что все библиотеки и зависимости в новом пуле Spark обновляются или заменяются на совместимость с Spark 3.4.

Шаг 3. Перенос и проверка кода

  • Миграция кода. Обновите код, чтобы он соответствовал новым или измененным API в Apache Spark 3.4. Это включает в себя устранение устаревших функций и внедрение новых функций, как описано в официальной документации Apache Spark.
  • Тестирование в среде разработки. Тестирование обновленного кода в среде разработки в Azure Synapse, а не локально. Этот шаг необходим для выявления и устранения проблем перед переходом в рабочую среду.
  • Развертывание и мониторинг. После тщательного тестирования и проверки в среде разработки разверните приложение в новом пуле Spark 3.4. Важно отслеживать приложение для любых непредвиденных действий. Используйте средства мониторинга, доступные в Azure Synapse, чтобы отслеживать производительность приложений Spark.

Вопрос. Какие шаги следует предпринять при миграции с 2.4 на 3.X?

Ответ. Ознакомьтесь с руководством по миграции Apache Spark.

Вопрос. При попытке обновить среду выполнения пула Spark с помощью командлета PowerShell при присоединении библиотек возникла ошибка.

Ответ. Не используйте командлет PowerShell, если в рабочей области Synapse установлены пользовательские библиотеки. Вместо этого выполните следующие действия:

  1. Повторно создайте пул Spark 3.3 с нуля.
  2. Опустите текущий пул Spark 3.3 до 3.1, удалите все подключенные пакеты, а затем снова обновите до версии 3.3.

Вопрос. Почему не удается обновить до версии 3.4 без повторного создания нового пула Spark?

Ответ. Это не разрешено из пользовательского интерфейса, клиент может использовать 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
              }
        }
    }