O que é acompanhamento assíncrono do progresso?
O acompanhamento assíncrono do progresso permite que o pipeline de transmissão estruturada faça o checkpoint do progresso de forma assíncrona e paralela ao processamento real dos dados em um micro-lote, reduzindo a latência associada à manutenção dos sites offsetLog
e commitLog
.
O acompanhamento assíncrono do progresso não funciona com os acionadores Trigger.once
ou Trigger.availableNow
. A tentativa de ativar esse recurso com esses acionadores resulta em falha na consulta.
Como o acompanhamento assíncrono do progresso funciona para reduzir a latência?
A transmissão estruturada depende da persistência e do gerenciamento de offsets como indicadores de progresso para o processamento de consultas. As operações de gerenciamento de deslocamento afetam diretamente a latência do processamento, pois nenhum processamento de dados pode ocorrer até que essas operações sejam concluídas. O acompanhamento assíncrono do progresso permite que o pipeline de transmissão estruturada verifique o progresso do ponto de verificação sem ser afetado por essas operações de gerenciamento de deslocamento.
Quando você deve configurar a frequência do ponto de verificação?
Os usuários podem configurar a frequência com que o progresso é verificado. As configurações do site default para a frequência dos pontos de verificação fornecem uma boa Taxa de transferência para a maioria das consultas. A configuração da frequência é útil para cenários em que as operações de gerenciamento de offset ocorrem em um ritmo mais alto do que podem ser processadas, o que cria um acúmulo cada vez maior de operações de gerenciamento de offset. Para conter esse acúmulo crescente, o processamento de dados é bloqueado ou desacelerado, essencialmente revertendo o comportamento do processamento para eliminar os benefícios do acompanhamento assíncrono do progresso.
O tempo de recuperação de falhas aumenta com o aumento do tempo de intervalo do ponto de verificação. Em caso de falha, um pipeline precisa reprocessar todos os dados antes do ponto de verificação anterior bem-sucedido. Os usuários podem considerar essa compensação entre menor latência durante o processamento regular e tempo de recuperação em caso de falha.
Quais configurações estão associadas ao acompanhamento assíncrono do progresso?
Opção | Valor | Padrão | Descrição |
---|---|---|---|
Rastreamento de progresso assíncrono ativado | verdadeiro/falso | False | ativar ou desativar o acompanhamento assíncrono do progresso |
Intervalos de pontos de verificação de rastreamento de progresso assíncrono | milissegundos | 1000 | o intervalo no qual commit offsets e completion commit |
Como os usuários podem ativar o acompanhamento assíncrono do progresso?
Os usuários podem usar um código semelhante ao código abaixo para ativar esse recurso:
val stream = spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "host1:port1,host2:port2")
.option("subscribe", "in")
.load()
val query = stream.writeStream
.format("kafka")
.option("topic", "out")
.option("checkpointLocation", "/tmp/checkpoint")
.option("asyncProgressTrackingEnabled", "true")
.start()
Desativação do acompanhamento assíncrono do progresso
Quando o acompanhamento do progresso assíncrono está ativado, a estrutura não verifica o progresso do ponto de verificação para cada lote. Para resolver isso, antes de desativar o acompanhamento assíncrono do progresso, processe pelo menos duas microlotes com as seguintes configurações:
.option("asyncProgressTrackingEnabled", "true")
.option("asyncProgressTrackingCheckpointIntervalMs", 0)
Interrompa a consulta depois que pelo menos dois micro-lotes tiverem concluído o processamento. Agora o senhor pode desativar com segurança o acompanhamento do progresso assíncrono e reiniciar a consulta.
Se você desativou o acompanhamento de progresso assíncrono sem concluir esta passo, poderá encontrar o seguinte erro:
java.lang.IllegalStateException: batch x doesn't exist
Nos logs do driver, o senhor pode ver o seguinte erro:
The offset log for batch x doesn't exist, which is required to restart the query from the latest batch x from the offset log. Please ensure there are two subsequent offset logs available for the latest batch via manually deleting the offset file(s). Please also ensure the latest batch for commit log is equal or one batch earlier than the latest batch for offset log.
Seguir as instruções desta seção para desativar o acompanhamento assíncrono do progresso permite que o senhor resolva esses erros e repare a carga de trabalho da transmissão.
Limitações do acompanhamento assíncrono do progresso
Esse recurso tem as seguintes limitações:
- O acompanhamento assíncrono do progresso só é compatível com o pipeline sem estado quando o senhor usa o site Kafka como coletor.
- O processamento de ponta a ponta exatamente uma vez não é garantido com o acompanhamento assíncrono do progresso porque os intervalos de deslocamento dos lotes podem ser alterados em caso de falha. Alguns coletores, como o Kafka, nunca oferecem garantias de exatamente uma vez.