Compartir a través de


Runtimes de Azure Synapse

Los grupos de Apache Spark en Azure Synapse usan runtimes para vincular versiones de componentes esenciales, optimizaciones como Azure Synapse, paquetes y conectores con una versión de Apache Spark específica. Cada tiempo de ejecución se actualiza periódicamente para incluir nuevas mejoras, características y revisiones. Al crear un grupo de Apache Spark sin servidor, seleccione la versión de Apache Spark correspondiente. En función de esto, el grupo viene preinstalado con los componentes y paquetes en tiempo de ejecución asociados.

Los runtimes tienen las siguientes ventajas:

  • Tiempos de inicio de sesión más rápidos
  • Compatibilidad probada con versiones de Apache Spark específicas
  • Acceso a conectores y paquetes de código abierto populares y compatibles

Versiones de runtimes de Azure Synapse admitidas

Sugerencia

Se recomienda encarecidamente actualizar de forma proactiva las cargas de trabajo a una versión de disponibilidad general más reciente del entorno de ejecución, que es Azure Synapse Runtime para Apache Spark 3.5 (GA). Consulte la guía de migración de Apache Spark.

En la tabla siguiente se enumeran el nombre del runtime, la versión de Apache Spark y la fecha de lanzamiento de las versiones de runtimes de Azure Synapse admitidas.

Nombre del runtime Fecha de la versión Fase de versión Fecha de finalización del anuncio de soporte técnico Fecha de finalización de la vigencia del soporte técnico
Azure Synapse Runtime para Apache Spark 3.5 13 de octubre de 2025 GA 31 de octubre de 2026 31 de octubre de 2027
Azure Synapse Runtime para Apache Spark 3.4 21 de noviembre de 2023 EOSA 30 de abril de 2025 Q1 2026
Entorno de ejecución de Azure Synapse para Apache Spark 3.3 17 de noviembre de 2022 en desuso y pronto se deshabilitará 12 de julio de 2024 31 de marzo de 2025

Fases de la versión del runtime

Para obtener el tiempo de ejecución completo para el ciclo de vida de Apache Spark y las directivas de soporte técnico, consulte Tiempo de ejecución de Synapse para el ciclo de vida y la compatibilidad de Apache Spark.

Aplicación de revisiones en tiempo de ejecución

Los entornos de ejecución de Azure Synapse para las revisiones de Apache Spark se han implementado mensualmente que contienen correcciones de errores, características y seguridad en el motor principal de Apache Spark, entornos de lenguaje, conectores y bibliotecas.

Nota:

  • Las actualizaciones de mantenimiento se aplicarán automáticamente a las nuevas sesiones para un grupo de Apache Spark sin servidor determinado.
  • Debe proba y validar que las aplicaciones se ejecutan correctamente cuando use las nuevas versiones de runtimes.

Importante

Revisiones de seguridad de Log4j 1.2.x

La versión 1.2.x de la biblioteca log4j de código abierto tiene varios CVe conocidos (vulnerabilidades y exposiciones comunes), como se describe aquí.

En todos los runtines del grupo de Synapse Spark, hemos revisado los archivos JAR log4j 1.2.17 para mitigar los siguientes CVE: CVE-2019-1751, CVE-2020-9488, CVE-2021-4104, CVE-2022-23302, CVE-2022-2330, CVE-2022-23307

La revisión aplicada funciona quitando los siguientes archivos necesarios para invocar las vulnerabilidades:

  • 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/*

Aunque las clases anteriores no se usaron en las configuraciones predeterminadas de Log4j en Synapse, es posible que alguna aplicación de usuario todavía pueda depender de ella. Si la aplicación necesita usar estas clases, use Administración de bibliotecas para agregar una versión segura de Log4j al grupo de Spark. No use log4j versión 1.2.17, ya que volvería a introducir las vulnerabilidades.

La directiva de revisión difiere en función de la fase del ciclo de vida del tiempo de ejecución:

  • Tiempo de ejecución disponible con carácter general (GA): no recibe actualizaciones en las versiones principales (es decir, 3.x -> 4.x). Y actualizará una versión secundaria (es decir, 3.x -> 3.y) siempre que no haya ningún impacto en desuso o regresión.

  • Tiempo de ejecución de versión preliminar: no se actualiza ninguna versión principal a menos que sea estrictamente necesario. Las versiones secundarias (3.x -> 3.y) se actualizarán para agregar las características más recientes a un tiempo de ejecución.

  • El entorno de ejecución de soporte técnico a largo plazo (LTS) solo se revisa con correcciones de seguridad.

  • El fin del soporte técnico anunciado en tiempo de ejecución no tendrá correcciones de errores y características. Las correcciones de seguridad se realizan en función de la evaluación de riesgos.

Migración entre versiones de Apache Spark: compatibilidad

Esta guía ofrece un enfoque estructurado para los usuarios que buscan actualizar sus cargas de trabajo de Azure Synapse Runtime para Apache Spark a la última versión de GA, como la 3.5. La actualización a la versión más reciente permite a los usuarios beneficiarse de mejoras de rendimiento, nuevas características y medidas de seguridad mejoradas. Es importante tener en cuenta que la transición a una versión superior puede requerir ajustes en el código de Spark existente debido a incompatibilidades o características en desuso.

Paso 1: Evaluar y planear

  • Evalúa la compatibilidad: Empieza revisando guías de migración de Apache Spark para identificar posibles incompatibilidades, funciones obsoletas y nuevas APIs entre tu versión actual de Spark y la versión de destino (por ejemplo, la 3.5).
  • Análisis de Codebase: examine cuidadosamente el código de Spark para identificar el uso de API en desuso o modificadas. Preste especial atención a las consultas SQL y a las funciones definidas por el usuario (UDF), que pueden verse afectadas por la actualización.

Paso 2: Creación de un nuevo grupo de Spark para pruebas

  • Creación de un nuevo grupo: en Azure Synapse, vaya a la sección Grupos de Spark y configure un nuevo grupo de Spark. Selecciona la versión de Spark (por ejemplo, la 3.5) y configúrala según tus requisitos de rendimiento.
  • Configurar la configuración de Spark Pool: Asegúrate de que todas las librerías y dependencias de tu nuevo pool de Spark estén actualizadas o reemplazadas para ser compatibles con Spark 3.5.

Paso 3: Migración y prueba del código

  • Migrar código: Actualiza tu código para que cumpla con las nuevas o revisadas APIs de Apache Spark 3.5. Esto implica abordar las funciones en desuso y adoptar nuevas características como se detalla en la documentación oficial de Apache Spark.
  • Prueba en entorno de desarrollo: pruebe el código actualizado dentro de un entorno de desarrollo en Azure Synapse, no localmente. Este paso es esencial para identificar y corregir los problemas antes de pasar a producción.
  • Desplegar y monitorizar: Tras pruebas exhaustivas y validaciones en el entorno de desarrollo, despliega tu aplicación en el nuevo pool de Spark 3.5. Es fundamental supervisar la aplicación para detectar comportamientos inesperados. Use las herramientas de supervisión disponibles en Azure Synapse para realizar un seguimiento del rendimiento de las aplicaciones Spark.

Pregunta: ¿Qué pasos se deben realizar para migrar a la versión 3.X?

Respuesta: Consulte la guía de migración de Apache Spark.

Pregunta: Se produjo un error al intentar actualizar el entorno de ejecución del grupo de Spark mediante el cmdlet de PowerShell cuando tienen bibliotecas asociadas.

Respuesta: No use el cmdlet de PowerShell si tiene bibliotecas personalizadas instaladas en el área de trabajo de Synapse. En su lugar, siga estos pasos:

  1. Vuelva a crear el grupo de Spark desde cero.
  2. Degrada el Spark Pool actual, elimina cualquier paquete adjunto y luego actualiza de nuevo a la última versión de GA, como la 3.5

Pregunta: ¿Por qué no puedo actualizar a 3.5 sin recrear una nueva piscina de Spark?

Respuesta: Esto no se permite desde la experiencia de usuario, el cliente puede usar Azure PowerShell para actualizar la versión de Spark. Use "ForceApplySetting", de modo que se retiren todos los clústeres existentes (con la versión anterior).

Consulta de ejemplo:

$_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
              }
        }
    }