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. Seus usuários podem evitar a necessidade de criar um espaço de trabalho do Azure Synapse e um pool do Spark Synapse.
Os usuários podem definir recursos, incluindo o tipo de instância e a versão de runtime do Apache Spark. Eles podem usar esses recursos para acessar a computação do Spark sem servidor nos notebooks do Azure Machine Learning para:
- o desenvolvimento de código interativo do Spark
- a execução de pipelines de aprendizado de máquina com um componente do Spark
- envios de trabalho em lotes do Spark
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, os usuários deverão levar em consideração as vantagens e as 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:
- Uma metastore do Hive persistente está ausente. A computação do Spark sem servidor só dá suporte ao Spark SQL na memória.
- Nenhuma tabela ou banco de dados disponível.
- Integração do Azure Purview ausente.
- 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. O provisionamento do recurso de computação Spark sem servidor automatizado, 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 (inicialização a quente) não sofrerã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 será finalizada após um período de inatividade que exceder o tempo limite definido pelo usuário. Se outra sessão do Spark não iniciar nos 10 minutos seguintes, os recursos provisionados para a computação Spark sem servidor serão desativados.
Depois que ocorrer a desativação do recurso de computação do Spark sem servidor, o envio do próximo trabalho exigirá uma inicialização a frio. A próxima visualização mostra alguns cenários de período de inatividade de sessão e de desativaçã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. É 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 esses recursos para determinar os pacotes disponíveis na imagem base para a versão do Apache Spark em uso:
Importante
Runtime do Azure Synapse para o Apache Spark: Comunicados
- Runtime do Azure Synapse para Apache Spark 3.2:
- Data do Comunicado EOLA: 8 de julho de 2023
- Data do Término do Suporte: 8 de julho de 2024. Após essa data, o runtime será desabilitado.
- Para suporte contínuo e desempenho ideal, recomendamos que você migre para o Apache Spark 3.4
Observação
Para um pacote Conda no nível da sessão:
- a Inicialização a frio levará cerca de 10 a 15 minutos.
- a Inicialização a quente, usando o mesmo pacote Conda, levará cerca de 1 minuto.
- a Inicialização a quente, com um pacote Conda diferente, também precisará 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
Você pode definir a variável de configuração spark.hadoop.aml.enable_cache
como true
para melhorar o tempo de inicialização a frio da sessão do Spark. Com os pacotes Conda de nível de sessão, a sessão inicialização a frio 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.
Pool do Spark do Synapse anexado
Um pool do Spark criado em um workspace do Azure Synapse fica disponível no workspace do Azure Machine Learning com o pool do Spark do Synapse anexado. Essa opção pode ser adequada aos usuários que queiram reutilizar um pool do Spark do Synapse.
A anexação de um Pool do Spark Synapse 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:
- o desenvolvimento de código interativo do Spark
- o envio de trabalho em lotes do Spark
- a execução de pipelines de aprendizado de máquina com um componente do Spark
Um pool do Spark do Synapse anexado fornece acesso aos recursos nativos do Azure Synapse. O usuário é responsável pelo provisionamento, anexação, configuração e gerenciamento do Pool do Spark 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
Nos trabalhos do Spark do Azure Machine Learning, você pode definir o tamanho do cluster do Spark com três valores de parâmetro:
- Número de executores
- Núcleos do executor
- Memória do executor
É necessário considerar um executor do Apache Spark do Azure Machine Learning como equivalente de 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 do executor como 4 e a memória do executor como 28 GB. Assim, seu trabalho do Spark terá acesso a um cluster com 24 núcleos 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 do trabalho do Spark, atribua as funções Colaborador e Colaborador de Dados do 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 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 ajudará a garantir o acesso aos dados.
Próximas etapas
- Anexar e gerenciar um Pool do Spark do Synapse no Azure Machine Learning
- Estruturação de dados interativa 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 do Python do Azure Machine Learning