Ponto de verificação de estado assíncrono para querycom estado
Observação
Disponível em Databricks Runtime 10.4 LTS e acima.
O ponto de verificação de estado assíncrono mantém garantias exatamente uma vez para query de transmissão, mas pode reduzir a latência geral para algumas cargas de trabalho de estado estruturadas de transmissão com gargalo nas atualizações de estado. Isso é feito começando a processar os próximos microlotes assim que a computação dos microlotes anteriores for concluída, 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:
Característica |
Ponto de verificação síncrono |
Ponto de verificação assíncrono |
---|---|---|
Latência |
Maior latência para cada micro-lotes. |
Latência reduzida, pois os micro-lotes podem se sobrepor. |
Reiniciar |
Recuperação rápida, pois apenas os últimos lotes precisam ser reexecutados. |
Maior atraso de reinicialização, pois mais do que em micro-lotes pode precisar ser reexecutado. |
A seguir estão as características Job de transmissão que podem se beneficiar do ponto de verificação de estado assíncrono:
Job tem uma ou mais operações com estado (por exemplo, agregação,
flatMapGroupsWithState
,mapGroupsWithState
, junções de transmissão-transmissão)A latência do ponto de verificação do estado é um dos principais contribuintes para a latência geral da execução dos lotes. Esta informação pode ser encontrada nos eventos StreamingQueryProgress . Esses eventos também são encontrados nos logs log4j no driver Spark. Aqui está um exemplo do progresso query de transmissão e como encontrar o impacto do ponto de verificação de estado na latência geral de execução dos lotes.
{ "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 do estado do evento de progresso query acima
a duração dos lotes (
durationMs.triggerDuration
) é de cerca de 547 segundos.a latência commit do armazenamento do estado (
stateOperations[0].commitTimeMs
) é de cerca de 3.186 segundos. a latência commit é agregada entre as tarefas que contêm um armazenamento do estado. Neste caso, existem 64 dessas tarefas (stateOperators[0].numShufflePartitions
).Cada tarefa contendo o operador de estado levou em média 50 segundos (3.186/64) para o ponto de verificação. Esta é uma latência extra que contribui para a duração dos lotes. Assumindo que todas as 64 tarefas estão sendo executadas simultaneamente, a passo do ponto de verificação contribuiu com cerca de 9% (50 segundos / 547 segundos) da duração dos lotes. A porcentagem fica ainda maior quando o máximo de tarefas concorrentes é menor que 64.
Ativando o ponto de verificação de estado assíncrono
Você deve usar o armazenamento do estado baseado em RocksDB para verificação de estado assíncrona. 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 ponto de verificação assíncrono
Observação
O dimensionamento automático de computação tem limitações ao reduzir o tamanho do cluster para cargas de trabalho de streaming estruturado. A Databricks recomenda usar Delta Live Tables com Autoscale aprimorado para cargas de trabalho de streaming. Consulte Otimize a utilização do cluster dos pipelines do Delta Live Tables com escalonamento automático aprimorado.
Qualquer falha em um ponto de verificação assíncrono em uma ou mais lojas falha 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 no ponto de verificação de estado assíncrono. Databricks recomenda o uso do Job contínuo para novas tentativas automáticas em caso de falha do Job. Ver execução do trabalho continuamente.
O checkpointing assíncrono funciona melhor quando os locais de armazenamento do estado não são alterados entre as execuções de micro-lotes. o redimensionamento clusters , 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 clusters .
O ponto de verificação de estado assíncrono é suportado apenas na implementação do provedor RocksDB armazenamento do estado. A implementação default do armazenamento do estado em memória não o suporta.