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 más reciente de disponibilidad general del entorno de ejecución, que es Azure Synapse Runtime para Apache Spark 3.4 (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.4 | 21 de noviembre de 2023 | GA (a partir del 8 de abril de 2024) | Q2 2025 | Q1 2026 |
Entorno de ejecución de Azure Synapse para Apache Spark 3.3 | 17 de noviembre de 2022 | fin del soporte técnico anunciado | 12 de julio de 2024 | 3/31/2025 |
Entorno de ejecución de Azure Synapse para Apache Spark 3.2 | 8 de julio de 2022 | en desuso y pronto deshabilitado | 8 de julio de 2023 | 8 de julio de 2024 |
Entorno de ejecución de Azure Synapse para Apache Spark 3.1 | 26 de mayo de 2021 | en desuso y pronto deshabilitado | 26 de enero de 2023 | 26 de enero de 2024 |
Runtime de Azure Synapse para Apache Spark 2.4 | 15 de diciembre de 2020 | en desuso y pronto deshabilitado | 29 de julio de 2022 | 29 de septiembre de 2023 |
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 siga dependiendo de ellas. 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
En esta guía se proporciona un enfoque estructurado para los usuarios que buscan actualizar su entorno de ejecución de Azure Synapse para cargas de trabajo de Apache Spark de las versiones 2.4, 3.1, 3.2 o 3.3 a la versión de disponibilidad general más reciente, como la 3.4. 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
- Evaluación de la compatibilidad: empiece por revisar las guías de migración de Apache Spark para identificar las posibles incompatibilidades, características en desuso y nuevas API entre la versión actual de Spark (2.4, 3.1, 3.2 o 3.3) y la versión de destino (por ejemplo, 3.4).
- 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. Seleccione la versión de Spark de destino (por ejemplo, 3.4) y configúrela según sus requisitos de rendimiento.
- Configuración del grupo de Spark: asegúrese de que todas las bibliotecas y dependencias del nuevo grupo de Spark se actualicen o reemplacen para que sean compatibles con Spark 3.4.
Paso 3: Migración y prueba del código
- Migración de código: actualice el código para que sea compatible con las API nuevas o revisadas en Apache Spark 3.4. 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.
- Implementar y supervisar: Después de realizar pruebas exhaustivas y validarlas en el entorno de desarrollo, implemente la aplicación en el nuevo grupo de Spark 3.4. 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 de 2.4 a 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:
- Vuelva a crear el grupo de Spark 3.3 desde cero.
- Cambie el grupo de Spark 3.3 actual a 3.1, quite los paquetes adjuntos y vuelva a actualizar a la versión 3.3.
Pregunta: ¿Por qué no puedo actualizar a la versión 3.4 sin volver a crear un nuevo grupo 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" para que se retiren 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.4 -ForceApplySetting
}
}
}