Compartilhar via


Limites de simultaneidade e filas no Apache Spark para Microsoft Fabric

Aplica-se a:✅ engenharia e ciência de dados no Microsoft Fabric

O Microsoft Fabric permite a alocação de unidades de computação por meio da capacidade, que é um conjunto dedicado de recursos que está disponível em um determinado momento para ser usado. A capacidade define a possibilidade de um recurso executar uma atividade ou produzir uma saída. Itens diferentes consomem capacidades diferentes em um determinado momento. O Microsoft Fabric oferece capacidade por meio de SKUs e avaliações do Fabric. Para saber mais, confiraO que é Capacidade?

Quando os usuários criam uma capacidade do Microsoft Fabric no Azure, eles podem escolher um tamanho de capacidade com base no tamanho da carga de trabalho de análise. No Apache Spark, os usuários obtêm dois VCores do Apache Spark para cada unidade de capacidade que reservam como parte de seu SKU.

Uma unidade de capacidade = dois VCores do Spark

Depois que a capacidade é adquirida, os administradores podem criar workspaces dentro da capacidade no Microsoft Fabric. Os VCores do Spark associados à capacidade são compartilhados entre todos os itens baseados em Apache Spark, como Notebooks, definições de trabalho do Apache Spark e lakehouses criados nesses espaços de trabalho.

Limitação e enfileiramento de simultaneidade

O Spark para Fabric impõe um mecanismo de limitação e enfileiramento baseado em núcleos, no qual os usuários podem enviar trabalhos com base nos SKUs de capacidade adquiridos do Fabric. O mecanismo de enfileiramento é uma fila simples baseada em FIFO, que verifica se há slots de trabalho disponíveis e repete automaticamente os trabalhos depois que a capacidade fica disponível.

Quando os usuários enviam trabalhos de notebook ou lakehouse (como Carregar na Tabela) e a capacidade está em utilização máxima, devido a trabalhos simultâneos usando todos os VCores do Spark, eles recebem o seguinte erro em muitas solicitações de capacidade:

[TooManyRequestsForCapacity] HTTP Response code 430: This Spark job can't be run because you have hit a Spark compute or API rate limit. To run this Spark job, cancel an active Spark job through the Monitoring hub, or choose a larger capacity SKU or try again later.

Com a fila habilitada, trabalhos de notebook disparados de pipelines, agendador de trabalho e definições de trabalho do Spark são adicionados à fila e repetidos automaticamente quando a capacidade fica disponível.

Observação

A expiração da fila é definida em 24 horas a partir do tempo de envio do trabalho. Após esse período, os trabalhos são removidos da fila e devem ser reenviados manualmente.

As capacidades de malha também são habilitadas com bursting, permitindo que você consuma até 3× o número de VCores do Spark que você comprou. Essa intermitência ajuda a melhorar a simultaneidade, permitindo que mais trabalhos sejam executados em paralelo.

Observação

O fator de bursting aumenta o total de VCores do Spark para a simultaneidade e pode ser aproveitado por um único trabalho, se o pool do Spark estiver configurado com uma contagem de núcleos mais alta.
Em outras palavras, a configuração do pool determina os núcleos máximos que um trabalho pode usar, não apenas a alocação de SKU base.

Exemplo

Se você tiver uma SKU de F64 com Máximo de 384 VCores do Spark com fator de intermitência:

  • Você pode configurar um pool personalizado ou inicial com até 384 VCores do Spark.
  • Se um administrador de workspace criar esse pool, um único trabalho do Spark (por exemplo, um notebook, uma definição de trabalho ou um trabalho em lakehouse) poderá usar todos os 384 VCores.
  • Exemplo: um pool com nós Medium (8 VCores cada) e máximo de 48 nós = 384 VCores.

Dica

Para maximizar o desempenho do trabalho, confirme se o pool de workspaces está configurado com tamanho e contagem de nós suficientes.

Limites de Capacidade SKU do Spark

SKU de capacidade do Fabric SKU equivalente do Power BI VCores do Spark Máx. de vCores Spark com fator de disparo contínuo Limite de fila
F2 - 4 20 4
F4 - oito 24 4
F8 - 16 48 oito
F16 - 32 96 16
F32 - 64 192 32
F64 P1 128 384 64
F128 P2 256 768 128
F256 P3 512 1536 256
F512 P4 1024 3072 512
F1024 - 2.048 6144 1024
F2048 - 4096 12288 2.048
Capacidade de avaliação P1 128 128 NA

Importante

A tabela se aplica somente a trabalhos do Spark em execução na Capacidade do Fabric. Com a cobrança de dimensionamento automático habilitada, os trabalhos do Spark são executados separadamente da capacidade do Fabric, evitando intermitência ou suavização. O total de VCores do Spark será o dobro do conjunto máximo de unidades de capacidade nas configurações de escala automática.

Cálculo de exemplo

  • Um SKU F64 oferece 128 Spark VCores.
  • Com um fator de expansão de 3, ele dá suporte a até 384 VCores Spark para execução simultânea.
  • Se um pool estiver configurado com os 384 VCores completos, um único trabalho poderá usá-los todos, supondo que nenhum outro trabalho esteja consumindo capacidade.
  • Exemplo: três trabalhos usando 128 VCores podem ser executados simultaneamente ou 1 trabalho usando 384 VCores.

Observação

Os trabalhos têm um período de expiração de fila de 24 horas, após o qual são cancelados e os usuários devem reenviá-los para serem executados.

A limitação do Spark para Fabric não impõe limites arbitrários baseados em trabalhos e o limite é baseado apenas no número de núcleos permitidos para o SKU de capacidade adquirido do Fabric. A admissão de trabalho por padrão será um controle de admissão otimista, em que os trabalhos são admitidos com base nos seus requisitos mínimos de núcleos. Saiba mais: Admissão e Gerenciamento de Trabalhos.

Se a opção de pool padrão (Pool inicial) estiver selecionada para o workspace, a tabela a seguir listará os limites máximos de trabalho de simultaneidade.

Saiba mais: Configurando pools de inicialização.

Os administradores podem configurar seus pools do Apache Spark para utilizar o máximo de VCores do Spark disponíveis dentro da capacidade, incluindo o fator de explosão de 3× que o Fabric oferece para execução simultânea. Por exemplo, um administrador de workspace com uma capacidade do F64 Fabric pode configurar o seu pool do Spark (Pool de Início ou Pool Personalizado) para usar até 384 Spark VCores por:

Configurando o número máximo de nós do Pool de Iniciantes para 48 (com nós Médios = 8 VCores cada) ou

Configurando um Pool Personalizado usando nós maiores (por exemplo, XXLarge = 64 VCores cada) com uma contagem de nós apropriada para atingir a capacidade desejada.

Com essa configuração, um único trabalho do Spark pode consumir toda a capacidade de intermitência, ideal para o processamento de dados em grande escala que prioriza o desempenho.

Novo: controle de explosão no nível de trabalho por meio do Portal de Administração Os administradores de capacidade agora têm controle sobre como habilitar ou desabilitar a explosão no nível do trabalho por meio de uma nova configuração no Portal de Administração:

Navegue até o Portal de Administração → Configurações de Capacidade → Guia Engenharia de Dados/Ciência

Use a nova opção "Disable Job-Level Bursting" para impedir que um único trabalho do Spark consuma toda a capacidade de burst disponível.

Observação

Quando o estouro de nível de trabalho é desabilitado, o mecanismo Spark assegura que nenhum trabalho isolado possa utilizar toda a capacidade disponível (incluindo núcleos adicionais). Isso garante que a capacidade permaneça disponível para trabalhos simultâneos, melhorando a taxa de transferência e a simultaneidade de vários usuários.

Esse recurso é particularmente útil em ambientes multiusuário ou de alta simultaneidade, em que as cargas de trabalho precisam ser equilibradas entre várias equipes e pipelines. Os administradores podem ajustar essa configuração com base em se a capacidade do sistema é otimizada para a máxima capacidade de execução de tarefas (burst habilitado) ou para maior concorrência e imparcialidade (burst desabilitado).

Cenários de exemplo com bursting habilitado (padrão): um grande trabalho de notebook em lote pode consumir todos os 384 Spark VCores em uma capacidade F64, supondo que nenhum outro trabalho esteja em execução.

Burst desativado: um trabalho pode ser restringido ao limite do núcleo base (por exemplo, 128 Spark VCores para F64), permitindo espaço para que outros trabalhos comecem simultaneamente.

Dica

Para equipes com diversos tipos de trabalho (ETL, ML, Adhoc), desabilitar o estouro no nível do trabalho pode ajudar a evitar a monopolização da capacidade e reduzir os atrasos na fila de trabalhos.