Apache Spark no Azure Machine Learning

A integração do Azure Machine Learning com o Azure Synapse Analytics fornece acesso fácil a recursos de computação distribuídos por meio da estrutura do Apache Spark. Esta integração oferece estas experiências de computação Apache Spark:

  • Computação do Spark sem servidor
  • Piscina Synapse Spark anexada

Computação do Spark sem servidor

Com a estrutura do Apache Spark, a computação do Azure Machine Learning sem servidor Spark é a maneira mais fácil de realizar tarefas de computação distribuída no ambiente do Azure Machine Learning. O Azure Machine Learning oferece um cluster de computação Apache Spark totalmente gerenciado, sem servidor e sob demanda. Seus usuários podem evitar a necessidade de criar um espaço de trabalho do Azure Synapse e um pool do Synapse Spark.

Os usuários podem definir recursos, incluindo o tipo de instância e a versão de tempo de execução do Apache Spark. Em seguida, eles podem usar esses recursos para acessar a computação do Spark sem servidor, nos blocos de anotações do Azure Machine Learning, para:

Pontos a considerar

A computação do Serverless Spark funciona bem para a maioria dos cenários de usuário que exigem acesso rápido a recursos de computação distribuídos por meio do Apache Spark. No entanto, para tomar uma decisão informada, os utilizadores devem considerar as vantagens e desvantagens desta abordagem.

Vantagens:

  • Nenhuma dependência na criação de outros recursos do Azure para o Apache Spark (a infraestrutura do Azure Synapse opera sob o capô).
  • Não são necessárias permissões de subscrição para criar recursos relacionados com o Azure Synapse.
  • Não há necessidade de cotas de pool SQL.

Desvantagens:

  • Um metastore persistente do Hive está ausente. A computação do Spark sem servidor suporta apenas o Spark SQL na memória.
  • Não há tabelas ou bancos de dados disponíveis.
  • Falta integração com o Azure Purview.
  • Não há serviços vinculados disponíveis.
  • Menos fontes de dados e conectores.
  • Nenhuma configuração no nível do pool.
  • Sem gerenciamento de biblioteca no nível do pool.
  • Suporte apenas parcial para mssparkutils.

Configuração de rede

Para usar o isolamento de rede com o Azure Machine Learning e a computação Spark sem servidor, use uma rede virtual gerenciada.

Períodos de inatividade e mecanismo de desativação

Na primeira inicialização, um recurso de computação do Spark sem servidor (início a frio) pode precisar de três a cinco minutos para iniciar a sessão do Spark em si. O provisionamento automatizado de computação Spark sem servidor, apoiado pelo Azure Synapse, causa esse atraso. Depois que a computação do Spark sem servidor for provisionada e uma sessão do Apache Spark for iniciada, as execuções de código subsequentes (início a quente) não sofrerão esse atraso.

A configuração da sessão do Spark oferece uma opção que define um tempo limite de sessão (em minutos). A sessão do Spark terminará após um período de inatividade que exceda o tempo limite definido pelo usuário. Se outra sessão do Spark não for iniciada nos 10 minutos seguintes, os recursos provisionados para a computação do Spark sem servidor serão destruídos.

Depois que a destruição do recurso de computação do Spark sem servidor acontecer, o envio do próximo trabalho exigirá um início a frio. A próxima visualização mostra alguns cenários de período de inatividade da sessão e de desmontagem de cluster.

Diagrama expansível que mostra cenários para o período de inatividade da sessão do Apache Spark e a desativação do cluster.

Pacotes Conda de nível de sessão

Um arquivo YAML de dependência Conda pode definir muitos pacotes Conda de nível de sessão em uma configuração de sessão. Uma sessão expirará se precisar de mais de 15 minutos para instalar os pacotes Conda definidos no arquivo YAML. Torna-se importante verificar primeiro se um pacote necessário já está disponível na imagem base do Azure Synapse. Para fazer isso, os usuários devem seguir o link para determinar os pacotes disponíveis na imagem base para a versão Apache Spark em uso:

Importante

Azure Synapse Runtime for Apache Spark: Anúncios

  • Azure Synapse Runtime para Apache Spark 3.2:
    • Data de anúncio EOLA: 8 de julho de 2023
    • Data de fim do suporte: 8 de julho de 2024. Após essa data, o tempo de execução será desativado.
  • Para suporte contínuo e desempenho ideal, recomendamos que você migre para

Nota

Para um pacote Conda de nível de sessão:

  • o arranque a frio demorará cerca de dez a quinze minutos.
  • o início quente, usando o mesmo pacote Conda, precisará de cerca de um minuto.
  • o arranque quente, com um pacote Conda diferente, também precisará de cerca de dez a quinze minutos.
  • Se o pacote instalado for grande ou precisar de um longo tempo de instalação, isso poderá afetar o tempo de inicialização da instância do Spark.
  • Não há suporte para alterar a versão PySpark, Python, Scala/Java, .NET ou Spark.
  • Não há suporte para imagens do Docker.

Melhorando o tempo de inicialização a frio da sessão ao usar pacotes Conda no nível da sessão

Você pode melhorar o tempo de inicialização a frio da sessão do Spark definindo a variável de spark.hadoop.aml.enable_cache configuração como true. O início frio da sessão com pacotes Conda de nível de sessão normalmente leva de 10 a 15 minutos quando a sessão começa pela primeira vez. No entanto, os arranques a frio da sessão subsequente demoram três a cinco minutos. Defina a variável de configuração na interface do usuário Configurar sessão , em Definições de configuração.

Diagrama expansível que mostra a marca de configuração de sessão do Spark que habilita o cache.

Piscina Synapse Spark anexada

Um pool do Spark criado em um espaço de trabalho do Azure Synapse fica disponível no espaço de trabalho do Azure Machine Learning com o pool Synapse Spark anexado. Esta opção pode ser adequada para usuários que desejam reutilizar um pool Synapse Spark existente.

O anexo de um pool do Synapse Spark a um espaço de trabalho do Azure Machine Learning requer outras etapas antes que você possa usar o pool no Azure Machine Learning para:

Um pool Synapse Spark anexado fornece acesso aos recursos nativos do Azure Synapse. O usuário é responsável pelo provisionamento, conexão, configuração e gerenciamento do pool Synapse Spark.

A configuração de sessão do Spark para um pool Synapse Spark anexado também oferece uma opção para definir um tempo limite de sessão (em minutos). O comportamento de tempo limite da sessão é semelhante à descrição na seção anterior, exceto que os recursos associados nunca são derrubados após o tempo limite da sessão.

Definindo o tamanho do cluster Spark

Nos trabalhos do Azure Machine Learning Spark, você pode definir o tamanho do cluster do Spark, com três valores de parâmetro:

  • Número de executores
  • Núcleos de executor
  • Memória do executor

Você deve considerar um executor Apache Spark do Azure Machine Learning como equivalente aos nós de trabalho do Azure Spark. Um exemplo pode explicar esses parâmetros. Digamos que você definiu o número de executores como 6 (equivalente a seis nós de trabalho), o número de núcleos de executor como 4 e a memória do executor como 28 GB. Seu trabalho do Spark tem acesso a um cluster com 24 núcleos no total e 168 GB de memória.

Garantindo o acesso a recursos para trabalhos do Spark

Para acessar dados e outros recursos, um trabalho do Spark pode usar uma identidade gerenciada ou uma passagem de identidade de usuário. Esta tabela resume os mecanismos que os trabalhos do Spark usam para acessar recursos.

Piscina de faísca Identidades suportadas Identidade predefinida
Computação do Spark sem servidor Identidade do usuário, identidade gerenciada atribuída pelo usuário anexada ao espaço de trabalho Identidade do utilizador
Piscina Synapse Spark anexada Identidade do usuário, identidade gerenciada atribuída pelo usuário anexada ao pool Synapse Spark anexado, identidade gerenciada atribuída pelo sistema do pool Synapse Spark anexado Identidade gerenciada atribuída pelo sistema do pool Synapse Spark anexado

Este artigo descreve o acesso a recursos para trabalhos do Spark. Em uma sessão de bloco de anotações, tanto a computação do Spark sem servidor quanto o pool Synapse Spark anexado usam a passagem de identidade do usuário para acesso aos dados durante a disputa interativa de dados.

Nota

  • Para garantir a execução bem-sucedida do trabalho do Spark, atribua as funções de Colaborador e Colaborador de Dados de Blob de Armazenamento (na conta de armazenamento do Azure usada para entrada e saída de dados) à identidade que será usada para o envio do trabalho do Spark.
  • Se um pool Synapse Spark anexado apontar para um pool Synapse Spark em um espaço de trabalho do Azure Synapse e esse espaço de trabalho tiver uma rede virtual gerenciada associada, configure um ponto de extremidade privado gerenciado para uma conta de armazenamento. Essa configuração ajudará a garantir o acesso aos dados.

Próximos passos