Compartilhar via


Apache Spark no Azure Machine Learning

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

  • Computação do Spark sem servidor
  • Pool do Spark do Synapse anexado

Computação do Spark sem servidor

Com a estrutura do Apache Spark, a computação do Spark sem servidor do Azure Machine Learning é a maneira mais fácil de realizar as tarefas de computação distribuídas no ambiente do Azure Machine Learning. O Azure Machine Learning oferece um cluster de cálculo do Apache Spark totalmente gerenciado, sem servidor e sob demanda. Você não precisa criar um workspace do Azure Synapse e um pool do Synapse Spark.

Você pode definir recursos, incluindo o tipo de instância e a versão de runtime do Apache Spark. Use esses recursos para acessar a computação spark sem servidor nos notebooks do Azure Machine Learning para:

Considere o seguinte

A computação do Spark sem servidor funciona bem para a maioria dos cenários de usuário que exigem acesso rápido aos recursos de computação distribuídos por meio do Apache Spark. No entanto, para tomar uma decisão informada, considere as vantagens e desvantagens dessa abordagem.

Vantagens:

  • Não há dependências da criação de outros recursos do Azure para o Apache Spark (a infraestrutura do Azure Synapse opera sob os bastidores).
  • Nenhuma permissão de assinatura é necessária para criar recursos relacionados ao Azure Synapse.
  • Sem necessidade de cotas do pool de SQL.

As desvantagens:

  • Nenhum metastore de Hive persistente. A computação do Spark sem servidor só dá suporte ao Spark SQL na memória.
  • Nenhuma tabela ou banco de dados disponível.
  • Nenhuma integração do Azure Purview.
  • Nenhum serviço vinculado disponível.
  • Menos fontes de dados e conectores.
  • Sem configuração no nível de pool.
  • Sem gerenciamento de biblioteca no nível de pool.
  • Apenas suporte parcial para mssparkutils.

Configuração de rede

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

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

Na primeira inicialização, um recurso da computação do Spark sem servidor (inicialização a frio) poderá precisar de três a cinco minutos para iniciar a própria sessão do Spark. Esse atraso ocorre porque o recurso de computação spark sem servidor automatizado, apoiado pelo Azure Synapse, precisa de tempo para provisionar. Depois que a computação spark sem servidor for provisionada e uma sessão do Apache Spark for iniciada, as execuções de código subsequentes (início quente) não experimentarão esse atraso.

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

Depois que o sistema desativa o recurso de computação Spark sem servidor, o envio do próximo trabalho requer uma inicialização a frio. A visualização a seguir mostra alguns cenários de período de inatividade de sessão e desinstalação de cluster.

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

Pacotes Conda no nível de sessão

Um arquivo YAML de dependência Conda pode definir vários pacotes Conda no nível da sessão em uma configuração de sessão. Uma sessão expira se forem necessários mais de 15 minutos para instalar os pacotes Conda definidos no arquivo YAML. Verifique se um pacote necessário já está disponível na imagem base do Azure Synapse. Para fazer isso, visite esses recursos para determinar os pacotes disponíveis na imagem base para a versão do Apache Spark em uso:

Observação

Para um pacote Conda no nível da sessão:

  • O início frio precisa de cerca de 10 a 15 minutos.
  • O início quente, usando o mesmo pacote Conda, precisa de cerca de um minuto.
  • O início quente, com um pacote Conda diferente, precisa de cerca de 10 a 15 minutos.
  • Se você instalar um pacote grande ou um pacote que exija um longo tempo de instalação, isso poderá afetar o tempo de inicialização da instância do Spark.
  • Não há suporte para alteração da versão do PySpark, Python, Scala/Java, .NET ou Spark.
  • Não há suporte para imagens do Docker.

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

Defina a variável de configuração spark.hadoop.aml.enable_cache para true para melhorar o tempo de inicialização a frio da sessão do Spark. Com os pacotes Conda no nível da sessão, o início frio da sessão normalmente leva de 10 a 15 minutos quando a sessão é iniciada pela primeira vez. No entanto, a inicialização a frio da sessão subsequente levará de três a cinco minutos. Defina a variável de configuração na interface do usuário Configurar a 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.

Pool do Spark do Synapse anexado

Ao criar um pool do Spark em um workspace do Azure Synapse, você pode acessá-lo no workspace do Azure Machine Learning com o pool do Synapse Spark anexado. Essa opção é boa para usuários que desejam reutilizar um pool existente do Synapse Spark.

Para anexar um pool do Synapse Spark a um workspace do Azure Machine Learning, você precisa concluir mais etapas antes de usar o pool no Azure Machine Learning para:

Um pool do Spark do Synapse anexado fornece acesso aos recursos nativos do Azure Synapse. Você é responsável por provisionar, anexar, configurar e gerenciar o pool do Spark do Synapse.

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

Definir o tamanho do cluster do Spark

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

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

Considere um executor do Apache Spark do Azure Machine Learning como equivalente aos nós de trabalho do Azure Spark. Um exemplo pode explicar esses parâmetros. Se você definir o número de executores como 6 (equivalente a seis nós de trabalho), o número de núcleos do executor como 4 e a memória do executor como 28 GB, seu trabalho do Spark terá acesso a um cluster com 24 núcleos no total e 168 GB de memória.

Garanta o acesso a recursos de trabalhos do Spark

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

Pool do Spark Identidades com suporte Identidade padrão
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 usuário
Pool do Spark do Synapse anexado Identidade do usuário, identidade gerenciada atribuída pelo usuário anexada ao pool do Spark do Synapse anexado, identidade gerenciada atribuída pelo sistema do pool do Spark do Synapse anexado Identidade gerenciada atribuída pelo sistema do pool do Spark do Synapse anexado

Este artigo descreve o acesso a recursos para trabalhos do Spark. Em uma sessão de notebook, tanto o Spark Compute sem servidor quanto o Pool do Spark Synapse conectado dependem da passagem de identidade do usuário para acesso aos dados durante a disputa interativa de dados.

Observação

  • Para garantir a execução bem-sucedida da tarefa do Spark, atribua as funções de Colaborador e Colaborador de Dados de Blob de Armazenamento à identidade que você usa para envio da tarefa do Spark na conta de armazenamento do Azure usada para entrada e saída de dados.
  • Se um pool do Spark do Synapse anexado apontar para um pool do Spark do Synapse em um workspace do Azure Synapse que tenha uma rede virtual gerenciada associada, configure um ponto de extremidade privado gerenciado para a conta de armazenamento. Essa configuração ajuda a garantir o acesso aos dados.

Próximas etapas