Partilhar via


Ponto de verificação de estado assíncrono para consultas com monitoração de estado

Nota

Disponível em Databricks Runtime 10.4 LTS e superior.

O ponto de verificação de estado assíncrono mantém garantias exatas uma vez para consultas de streaming, mas pode reduzir a latência geral para algumas cargas de trabalho com estado de Streaming Estruturado congestionadas em atualizações de estado. Isso é feito começando a processar o próximo microlote assim que o cálculo do microlote anterior tiver sido concluído sem esperar que o ponto de verificação de estado seja concluído. A tabela a seguir compara as compensações para pontos de verificação síncronos e assíncronos:

Characteristic Ponto de verificação síncrono Ponto de verificação assíncrono
Latência Maior latência para cada microlote. Latência reduzida, pois os microlotes podem se sobrepor.
Reiniciar Recuperação rápida, pois apenas o último lote precisa ser executado novamente. Maior atraso de reinicialização, pois mais do que em microlote pode precisar ser executado novamente.

A seguir estão as características do trabalho de streaming que podem se beneficiar do ponto de verificação de estado assíncrono:

  • O trabalho tem uma ou mais operações com monitoração de estado (por exemplo, agregação, flatMapGroupsWithState, mapGroupsWithState, junções de fluxo de fluxo)
  • A latência do ponto de verificação de estado é um dos principais contribuintes para a latência geral de execução em lote. Essas informações podem ser encontradas nos eventos StreamingQueryProgress . Esses eventos também são encontrados em logs log4j no driver Spark. Aqui está um exemplo do progresso da consulta de streaming e como encontrar o impacto do ponto de verificação de estado na latência geral de execução em lote.
    • {
         "id" : "2e3495a2-de2c-4a6a-9a8e-f6d4c4796f19",
         "runId" : "e36e9d7e-d2b1-4a43-b0b3-e875e767e1fe",
         "...",
         "batchId" : 0,
         "durationMs" : {
           "...",
           "triggerExecution" : 547730,
           "..."
         },
         "stateOperators" : [ {
           "...",
           "commitTimeMs" : 3186626,
           "numShufflePartitions" : 64,
           "..."
         }]
      }
      
    • Análise de latência do ponto de verificação de estado do evento de progresso da consulta acima

      • A duração do lote (durationMs.triggerDuration) é de cerca de 547 segundos.
      • A latência de confirmação do armazenamento de estado (stateOperations[0].commitTimeMs) é de cerca de 3.186 segundos. A latência de confirmação é agregada entre tarefas que contêm um armazenamento de estado. Neste caso, existem 64 tarefas deste tipo (stateOperators[0].numShufflePartitions).
      • Cada tarefa contendo operador de estado levou uma média de 50 segundos (3.186/64) para o ponto de verificação. Esta é uma latência extra que contribui para a duração do lote. Supondo que todas as 64 tarefas estejam sendo executadas simultaneamente, a etapa do ponto de verificação contribuiu com cerca de 9% (50 segundos / 547 segundos) da duração do lote. A porcentagem fica ainda maior quando o máximo de tarefas simultâneas é inferior a 64.

Habilitando o ponto de verificação de estado assíncrono

Você deve usar o armazenamento de estado baseado em RocksDB para pontos de verificação de estado assíncronos. Defina as seguintes configurações:


spark.conf.set(
  "spark.databricks.streaming.statefulOperator.asyncCheckpoint.enabled",
  "true"
)

spark.conf.set(
  "spark.sql.streaming.stateStore.providerClass",
  "com.databricks.sql.streaming.state.RocksDBStateStoreProvider"
)

Limitações e requisitos para pontos de verificação assíncronos

Nota

O dimensionamento automático de computação tem limitações para reduzir o tamanho do cluster para cargas de trabalho de Streaming Estruturado. O Databricks recomenda a utilização do Delta Live Tables com Dimensionamento Automático para cargas de trabalho de transmissão em fluxo. Consulte Otimizar a utilização de cluster de pipelines Delta Live Tables com dimensionamento automático aprimorado.

  • Qualquer falha em um ponto de verificação assíncrono em qualquer um ou mais armazenamentos falhará na consulta. No modo de ponto de verificação síncrono, o ponto de verificação é executado como parte da tarefa e o Spark tenta novamente a tarefa várias vezes antes de falhar na consulta. Esse mecanismo não está presente com o ponto de verificação de estado assíncrono. No entanto, usando as tentativas de trabalho do Databricks, essas falhas podem ser repetidas automaticamente.
  • O ponto de verificação assíncrono funciona melhor quando os locais de armazenamento de estado não são alterados entre execuções de microlotes. O redimensionamento do cluster, em combinação com o ponto de verificação de estado assíncrono, pode não funcionar bem porque a instância de armazenamentos de estado pode ser redistribuída à medida que os nós são adicionados ou excluídos como parte do evento de redimensionamento do cluster.
  • O ponto de verificação de estado assíncrono é suportado apenas na implementação do provedor de armazenamento de estado RocksDB. A implementação de armazenamento de estado na memória padrão não oferece suporte a ele.