Compartilhar via


Visão geral da computação do Apache Spark no Microsoft Fabric

Aplica-se a:✅ Engenharia de dados e ciência de dados do Fabric

A Engenharia de Dados do Fabric e a Ciência de Dados são executadas em uma plataforma de computação do Apache Spark totalmente gerenciada. Os pools iniciais fornecem inicialização de sessão rápida, normalmente em 5 a 10 segundos, sem configuração manual. Os pools personalizados do Spark permitem ajustar o tamanho do nó, o comportamento de dimensionamento e outras configurações de computação para sua carga de trabalho. Em suma, os pools de início fornecem Spark rápido e pré-configurado, enquanto os pools personalizados do Spark fornecem controle e flexibilidade mais profundos.

Imagem de uma plataforma de computação Spark com pools iniciais e pools personalizados do Spark.

Pools iniciais

Os pools iniciais são uma maneira rápida e fácil de usar o Spark na plataforma Microsoft Fabric em segundos. Você pode usar as sessões do Spark imediatamente, em vez de esperar que o Spark configure os nós para você, o que ajuda você a fazer mais com os dados e obter insights mais rapidamente.

Imagem de uma tabela mostrando a configuração do pool inicial.

Os pools de início têm clusters do Apache Spark com sessões sempre ativas e prontas para suas solicitações. Eles usam nós de porte médio que escalam horizontalmente de forma dinâmica com base nas suas necessidades de tarefas do Spark.

Diagrama mostrando o design de alto nível dos pools de inicialização.

Quando você usa um pool inicial sem nenhuma dependência de biblioteca extra ou propriedades personalizadas do Spark, sua sessão normalmente começa em 5 a 10 segundos. Essa inicialização rápida é possível porque o cluster já está em execução e não requer tempo de provisionamento.

Observação

Os pools de início dão suporte apenas ao tamanho médio do nó. Se você selecionar um tamanho de nó diferente ou personalizar as configurações de computação, o Fabric usará a inicialização da sessão sob demanda, o que pode levar de 2 a 5 minutos.

No entanto, há vários cenários em que sua sessão pode levar mais tempo para começar.

Bibliotecas personalizadas ou propriedades do Spark: se você tiver configurado bibliotecas ou configurações personalizadas em seu ambiente, o Spark precisará personalizar a sessão depois que ela for criada. Esse processo pode adicionar cerca de 30 segundos a 5 minutos ao tempo de inicialização, dependendo do número e do tamanho das dependências da biblioteca.

Os pools de inicialização em sua região estão completamente utilizados: em casos raros, os pools de inicialização de uma região podem estar temporariamente exauridos devido a alto volume de tráfego. Quando isso acontece, o Fabric cria um novo cluster para acomodar sua solicitação, o que leva cerca de 2 a 5 minutos. Depois que o novo cluster estiver disponível, sua sessão será iniciada. Se você também tiver bibliotecas personalizadas para instalar, adicione os 30 segundos adicionais a 5 minutos necessários para personalização.

Recursos avançados de rede ou segurança (Links Privados ou VNets Gerenciadas): Quando o workspace tem recursos de rede, como Links Privados de Locatário ou VNets Gerenciadas, não há suporte para pools iniciais. Nessa situação, o Fabric deve criar um cluster sob demanda, o que adiciona de 2 a 5 minutos à hora de início da sessão. Se você também tiver dependências de biblioteca, essa etapa de personalização poderá adicionar mais 30 segundos a 5 minutos.

Aqui estão alguns cenários de exemplo para ilustrar possíveis horários de início:

Cenário Hora típica de inicialização
Configurações padrão, sem bibliotecas 5 a 10 segundos
Configurações padrão + dependências de biblioteca 5 – 10 segundos + 30 segundos – 5 minutos (para instalação da biblioteca)
Tráfego alto na região, sem bibliotecas 2 a 5 minutos
Tráfego alto + dependências de biblioteca 2 – 5 minutos + 30 segundos – 5 minutos (para bibliotecas)
Segurança de rede (Links Privados/VNet), sem bibliotecas 2 a 5 minutos
Segurança de rede + dependências de biblioteca 2 – 5 minutos + 30 segundos – 5 minutos (para bibliotecas)

Quando se trata de cobrança e consumo de capacidade, você é cobrado pelo consumo de capacidade ao iniciar a execução do seu Notebook ou da definição de tarefa do Apache Spark. Você não será cobrado pelo tempo em que os clusters estiverem ociosos no pool.

Diagrama mostrando as etapas de alto nível no faturamento de pools iniciais.

Por exemplo, se você enviar uma tarefa de notebook para um pool inicial, você será cobrado apenas pelo período em que a sessão do notebook estiver ativa. O tempo cobrado não inclui o tempo ocioso ou o tempo necessário para personalizar a sessão com o contexto do Spark. Para saber mais, confira Configurar pools de inicialização no Fabric.

Pools de Spark

Um pool do Spark é uma maneira de dizer ao Spark que tipo de recursos você precisa para suas tarefas de análise de dados. Você pode dar um nome ao pool do Spark e escolher quantos e quão grandes são os nós (os computadores que fazem o trabalho). Você também pode informar ao Spark como ajustar o número de nós, dependendo de quanto trabalho você tem. A criação de um pool do Spark é gratuita; você só paga quando executa um trabalho do Spark no pool e, em seguida, o Spark configura os nós para você.

Se você não usar o pool de Spark por dois minutos após o fim da sessão, o pool de Spark será desalocado. Esse período de tempo de expiração de sessão padrão é definido como 20 minutos e você pode alterá-lo se desejar. Se você for um administrador de workspace, também poderá criar pools personalizados do Spark para seu workspace e torná-los a opção padrão para outros usuários. Dessa forma, você pode economizar tempo e evitar configurar um novo pool do Spark sempre que executar um notebook ou um trabalho do Spark. Os pools personalizados do Spark levam cerca de três minutos para serem iniciados, pois o Spark deve obter os nós de Azure.

Você pode até mesmo criar pools Spark de nó único, definindo o número mínimo de nós como 1, para que o driver e o executor executem em um único nó que possui HA restaurável e é adequado para pequenas cargas de trabalho.

O tamanho e o número de nós que você pode ter no pool personalizado do Spark depende da capacidade do Microsoft Fabric. A capacidade é uma medida de quanto poder de computação você pode usar. Uma maneira de pensar nisso é que dois vCores do Apache Spark (uma unidade de computação spark) são iguais a uma unidade de capacidade.

Observação

No Apache Spark, os usuários obtêm dois vCores do Apache Spark para cada unidade de capacidade que reservam como parte de sua SKU. Uma unidade de capacidade = dois vCores spark. Por exemplo, F64 fornece 128 vCores Spark e um multiplicador de intermitência de 3x aumenta esse valor para 384 vCores Spark.

Por exemplo, um SKU F64 de capacidade do Fabric tem 64 unidades de capacidade, o que equivale a 384 VCores do Spark (64 * 2 * 3X Burst Multiplier). Você pode usar esses VCores do Spark para criar nós de tamanhos diferentes no seu Pool do Spark personalizado, desde que o número total de VCores do Spark não exceda 384.

A cobrança dos pools do Spark é semelhante à dos pools iniciais; você não paga pelos pools personalizados do Spark que criou, a menos que tenha uma sessão ativa do Spark criada para executar um notebook ou uma definição de trabalho do Spark. Você só é cobrado pela duração das execuções de tarefas. Você não é cobrado por estágios como a criação e a desalocação do cluster após a conclusão do trabalho.

Diagrama mostrando os estágios de alto nível na cobrança de pools personalizados.

Por exemplo, se você enviar um trabalho de notebook para um pool personalizado do Spark, será cobrado apenas pelo período de tempo em que a sessão estiver ativa. A cobrança dessa sessão do notebook é interrompida assim que a sessão do Spark é encerrada ou expira. Você não será cobrado pelo tempo necessário para adquirir instâncias de cluster da nuvem e pelo tempo necessário para inicializar o contexto do Spark.

Possíveis configurações de pool personalizado para F64 com base no exemplo anterior. Tamanhos de nó menores têm capacidade distribuída por mais nós, portanto, o número máximo de nós é maior. Enquanto nós maiores são ricos em recursos, portanto, menos nós são necessários:

SKU de capacidade do Fabric Unidades de capacidade Máx. de VCores Spark com fator de disparo contínuo Tamanho do nó Número máximo de nós
F64 64 384 Pequeno 96
F64 64 384 Médio 48
F64 64 384 Grande 24
F64 64 384 Extragrande 12
F64 64 384 XX-Grande 6

Observação

Para criar pools personalizados, você precisa de permissões de administrador para o workspace. O administrador de capacidade do Microsoft Fabric também deve conceder permissões que permitem que os administradores do espaço de trabalho dimensionem pools Spark personalizados. Para saber mais, confira Introdução aos pools personalizados do Spark no Fabric.

Nós

Uma instância do pool do Apache Spark consiste em um nó principal e um ou mais nós de trabalho. Uma instância do Spark pode começar com um mínimo de um nó. O nó principal executa serviços de gerenciamento como Livy, YARN Resource Manager, ZooKeeper e Apache Spark driver. Todos os nós executam serviços como o Agente de Nó e o YARN Node Manager. Todos os nós de trabalho executam o serviço de executor do Apache Spark.

Observação

No Fabric, a proporção de nós para executores é sempre 1:1. Quando você configura um pool, um nó é dedicado ao driver e os nós restantes são usados para os executores. A única exceção está em uma configuração de nó único, em que os recursos para o driver e o executor são reduzidos pela metade.

Tamanhos dos nós

Um pool Spark pode ser definido com tamanhos de nó que variam de um pequeno nó de computação (com 4 vCore e 32 GB de memória) a um nó de computação extragrande duplo (com 64 vCore e 512 GB de memória por nó). Os tamanhos de nó podem ser alterados após a criação do pool, embora seja necessário reiniciar a sessão.

Tamanho vCore Memória
Pequeno 4 32 GB
Médio oito 64 GB
Grande 16 128 GB
Extragrande 32 256 GB
XX-Grande 64 512 GB

Observação

Os tamanhos de nós X-Large e XX-Large só são permitidos para SKUs do Fabric que não sejam de avaliação.

Escalonamento automático

O dimensionamento automático para pools do Apache Spark permite escalar e reduzir verticalmente de modo automático os recursos de computação com base na quantidade de atividade. Quando a funcionalidade de dimensionamento automático estiver habilitada, defina o número mínimo e máximo de nós a serem dimensionados. Quando o recurso de dimensionamento automático estiver desabilitado, o número de nós definido permanecerá fixo. Você pode alterar essa configuração após a criação do pool, embora talvez seja necessário reiniciar a instância.

Observação

Por padrão, spark.yarn.executor.decommission.enabled é definido como true, permitindo o desligamento automático de nós subutilizados para otimizar a eficiência da computação. Se a redução de escala menos agressiva for preferida, essa configuração pode ser definida como false

Alocação dinâmica

A alocação dinâmica permite que o aplicativo Apache Spark solicite mais executores se as tarefas excederem a carga que os executores atuais podem suportar. Ela também libera os executores quando os trabalhos são concluídos e se o aplicativo Spark está se movendo para o estado ocioso. Os usuários corporativos geralmente têm dificuldade em ajustar as configurações do executor porque são muito diferentes em diferentes estágios de um processo de execução de trabalho do Spark. Essas configurações também dependem do volume de dados processados, que muda de tempos em tempos. Os usuários podem habilitar a opção alocação dinâmica de executores como parte da configuração do pool, o que habilitaria a alocação automática de executores para o aplicativo do Spark com base nos nós disponíveis no Pool do Spark.

Ao habilitar as opções de alocação dinâmica para cada um dos aplicativos Spark enviados, o sistema reserva executores durante a etapa de envio do trabalho com base no número mínimo de nós. Você especifica o número máximo de nós para dar suporte a cenários bem-sucedidos de dimensionamento automático.