Compartilhar via


Runtimes do Azure Synapse

Os pools do Apache Spark no Azure Synapse usam runtimes para unir versões de componentes essenciais, como otimizações, pacotes e conectores do Azure Synapse, com uma versão específica do Apache Spark. Cada tempo de execução é atualizado periodicamente para incluir novas melhorias, recursos e patches. Ao criar um pool do Apache Spark sem servidor, selecione a versão correspondente do Apache Spark. Com base nisso, o pool vem pré-instalado com os componentes e pacotes de tempo de execução associados.

Os runtimes têm as seguintes vantagens:

  • Tempos de inicialização de sessão mais rápidos
  • Compatibilidade testada com versões específicas do Apache Spark
  • Acesso a conectores populares e compatíveis e pacotes open-source

Versões de runtime do Azure Synapse com suporte

Dica

É altamente recomendável atualizar proativamente as cargas de trabalho para uma versão GA mais recente do runtime, que é o Azure Synapse Runtime para Apache Spark 3.4 (GA)). Consulte o guia de migração do Apache Spark.

A tabela a seguir lista o nome do runtime, a versão do Apache Spark e a data de liberação para as liberações do Azure Synapse Runtime com suporte.

Nome do runtime Data de liberação Fase de liberação Data do anúncio do fim do suporte Data de vigência do fim do suporte
Azure Synapse Runtime para Apache Spark 3.4 21 Novembro, 2023 GA (a partir de 8 de abril de 2024) 2º trimestre de 2025 1º trimestre de 2026
Runtime do Azure Synapse para Apache Spark 3.3 17 de novembro de 2022 Anunciado o fim do suporte 12 de julho de 2024 31/3/2025
Runtime do Azure Synapse para Apache Spark 3.2 8 de julho de 2022 Obsoleto e logo desativado 8 de julho de 2023 8 de julho de 2024
Azure Synapse Runtime para Apache Spark 3.1 26 de maio de 2021 Obsoleto e logo desativado 26 de janeiro de 2023 26 de janeiro de 2024
Azure Synapse Runtime para Apache Spark 2.4 15 de dezembro de 2020 Obsoleto e logo desativado 29 de julho de 2022 29 de setembro de 2023

Estágios de liberação do runtime

Para o runtime completo das políticas de suporte e ciclo de vida do Apache Spark, veja o runtime do Azure Synapse para o ciclo de vida e a capacidade de suporte do Apache Spark.

Patch de runtime

Os runtimes do Azure Synapse para patches do Apache Spark são distribuídos mensalmente contendo correções de bugs, recursos e segurança para o mecanismo principal, ambientes de linguagem, conectores e bibliotecas do Apache Spark.

Observação

  • As atualizações de manutenção serão aplicadas automaticamente a novas sessões para um determinado pool do Apache Spark sem servidor.
  • Você deve testar e validar que os aplicativos sejam executados corretamente ao se usar novas versões de runtime.

Importante

Patches de segurança do Log4j 1.2.x

A biblioteca Log4j de código aberto versão 1.2.x possui várias CVEs (Vulnerabilidades e Exposições Comuns) conhecidas, conforme descrito aqui.

Em todos os runtimes do Pool do Spark do Synapse corrigimos os JARs Log4j 1.2.17 para mitigar as seguintes CVEs: CVE-2019-1751, CVE-2020-9488, CVE-2021-4104, CVE-2022-23302, CVE-2022-2330, CVE-2022-23307

O patch aplicado funciona removendo os seguintes arquivos que são necessários para invocar as 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/*

Embora as classes acima não tenham sido usadas nas configurações padrão do Log4j no Synapse, é possível que algum aplicativo de usuário ainda dependa disso. Se o aplicativo precisar usar essas classes, use o Gerenciamento da Biblioteca para adicionar uma versão segura do Log4j ao Pool do Spark. Não use o Log4j versão 1.2.17, pois ele estaria reintroduzindo as vulnerabilidades.

A política de patch difere com base na fase do ciclo de vida do runtime:

  • Tempo de execução GA (disponibilidade geral): não receba atualizações nas versões principais (ou seja, 3.x -> 4.x). E atualizará uma versão secundária (ou seja, 3.x -> 3.y), desde que não haja impactos de depreciação ou regressão.

  • Runtime de versão prévia: nenhuma atualização de versão principal, a menos que seja estritamente necessário. As versões secundárias (3.x -> 3.y) serão atualizadas para adicionar recursos mais recentes a um runtime.

  • O tempo de execução do LTS (Suporte de Longo Prazo) é corrigido apenas com correções de segurança.

  • O tempo de execução anunciado para o fim do suporte não terá correções de bugs e recursos. As correções de segurança são portadas com base na avaliação de risco.

Migração entre versões do Apache Spark – suporte

Este guia fornece uma abordagem estruturada para usuários que desejam atualizar suas cargas de trabalho do Azure Synapse Runtime para Apache Spark das versões 2.4, 3.1, 3.2 ou 3.3 para a versão GA mais recente, como 3.4. A atualização para a versão mais recente permite que os usuários se beneficiem de aprimoramentos de desempenho, novos recursos e medidas de segurança aprimoradas. É importante observar que a transição para uma versão superior pode exigir ajustes no código do Spark existente devido a incompatibilidades ou recursos obsoletos.

Etapa 1: avaliar e planejar

  • Avalie a compatibilidade: comece examinando os guias de migração do Apache Spark para identificar possíveis incompatibilidades, recursos preteridos e novas APIs entre a versão atual do Spark (2.4, 3.1, 3.2 ou 3.3) e a versão de destino (por exemplo, 3.4).
  • Analisar base de código: examine cuidadosamente o código do Spark para identificar o uso de APIs preteridas ou modificadas. Preste atenção especial às consultas SQL e às UDFs (Funções Definidas pelo Usuário), que podem ser afetadas pela atualização.

Etapa 2: Criar um novo pool do Spark para teste

  • Criar um novo pool: no Azure Synapse, vá para a seção Pools do Spark e configure um novo pool do Spark. Selecione a versão do Spark de destino (por exemplo, 3.4) e configure-a de acordo com seus requisitos de desempenho.
  • Definir a configuração do pool do Spark: verifique se todas as bibliotecas e dependências em seu novo pool do Spark foram atualizadas ou substituídas para serem compatíveis com o Spark 3.4.

Etapa 3: Migrar e testar seu código

  • Migrar código: atualize seu código para estar em conformidade com as APIs novas ou revisadas no Apache Spark 3.4. Isso envolve o tratamento de funções preteridas e a adoção de novos recursos, conforme detalhado na documentação oficial do Apache Spark.
  • Teste no ambiente de desenvolvimento: teste o código atualizado em um ambiente de desenvolvimento no Azure Synapse, não localmente. Esta etapa é essencial para identificar e corrigir quaisquer problemas antes de passar para a produção.
  • Implantar e monitorar: após testes e validação completos no ambiente de desenvolvimento, implante seu aplicativo no novo pool do Spark 3.4. É fundamental monitorar o aplicativo em busca de comportamentos inesperados. Utilize as ferramentas de monitoramento disponíveis no Azure Synapse para acompanhar o desempenho dos aplicativos Spark.

Pergunta: Quais etapas devem ser tomadas na migração do 2.4 para o 3.X?

Resposta: Consulte o guia de migração do Apache Spark.

Pergunta: Recebi um erro quando tentei atualizar o runtime do pool do Spark usando o cmdlet do PowerShell quando eles têm bibliotecas anexadas.

Resposta: Não use o cmdlet do PowerShell se você tiver bibliotecas personalizadas instaladas em seu workspace do Synapse. Em vez disso, siga estas etapas:

  1. Recrie o Spark Pool 3.3 do zero.
  2. Faça o downgrade do Spark Pool 3.3 atual para 3.1, remova todos os pacotes anexados e atualize novamente para 3.3.

Pergunta: Por que não consigo atualizar para a versão 3.4 sem recriar um novo pool do Spark?

Resposta: Isso não é permitido na experiência do usuário, o cliente pode usar o Azure PowerShell para atualizar a versão do Spark. Use "ForceApplySetting", para que todos os clusters existentes (com a versão antiga) sejam desativados.

Consulta de exemplo:

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