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:
- Desenvolvimento de código Spark interativo
- Executando pipelines de aprendizado de máquina com um componente do Spark
- Envios de trabalhos em lote do Spark
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 do recurso de computação Spark automatizado 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.
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 expira 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 visitar estes recursos para determinar os pacotes disponíveis na imagem base para a versão do 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 o Apache Spark 3.4
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 você instalar um pacote grande ou um pacote que precise 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 alteração da 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 definir a spark.hadoop.aml.enable_cache
variável de configuração como true
, para melhorar o tempo de inicialização a frio da sessão do Spark. Com pacotes Conda de nível de sessão, o início a frio da 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.
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 mais etapas antes que você possa usar o pool no Azure Machine Learning para:
- Desenvolvimento de código Spark interativo
- Envio de trabalho em lote do Spark
- Executando pipelines de aprendizado de máquina com um componente do Spark
Um pool Synapse Spark anexado fornece acesso aos recursos nativos do Azure Synapse. O usuário é responsável pelo provisionamento, anexaçã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 dependem da 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 você usará 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
- Anexar e gerenciar um pool do Synapse Spark no Aprendizado de Máquina do Azure
- Disputa interativa de dados com o Apache Spark no Azure Machine Learning
- Enviar trabalhos do Spark no Azure Machine Learning
- Exemplos de código para trabalhos do Spark usando a CLI do Azure Machine Learning
- Exemplos de código para trabalhos do Spark usando o SDK Python do Azure Machine Learning