Política de envio em lote de ingestão
Visão geral
Durante o processo de ingestão na fila, o serviço otimiza a taxa de transferência agrupando partes de dados de entrada pequenas antes da ingestão. O envio em lote reduz os recursos consumidos pelo processo de ingestão na fila e não requer recursos pós-ingestão para otimizar os pequenos fragmentos de dados produzidos pela ingestão não em lote.
A desvantagem de fazer o envio em lote antes da ingestão é o atraso forçado. Portanto, a hora de ponta a ponta de solicitar a ingestão de dados até que os dados prontos para consulta sejam maiores.
Ao definir a política, você precisará encontrar um equilíbrio entre a otimização da taxa de transferência e o IngestionBatching
atraso de tempo. Essa política se aplica à ingestão na fila. Ele define o atraso forçado máximo permitido ao agrupar blobs pequenos em lote. Para saber mais sobre como usar comandos de política de envio em lote e otimizar a taxa de transferência, confira:
- Referência de comando de política de envio em lote de ingestão
- Melhores práticas de ingestão – otimização para taxa de transferência
Selando um lote
Há um tamanho ideal de cerca de 1 GB de dados não compactados para ingestão em massa. A ingestão de blobs com muito menos dados é abaixo do ideal, portanto, na ingestão enfileirada, o serviço agrupará blobs pequenos em lote.
A lista a seguir mostra os gatilhos básicos da política de envio em lote para selar um lote. Um lote é selado e ingerido quando a primeira condição é atendida:
Size
: limite de tamanho do lote atingido ou excedidoCount
: limite de número de arquivo do lote atingidoTime
: o tempo de envio em lote expirou
A IngestionBatching
política pode ser definida em bancos de dados ou tabelas. Os valores padrão são os seguintes: tempo máximo de atraso de 5 minutos , 1000 itens, tamanho total de 1 GB.
Importante
O impacto de definir essa política como valores muito pequenos é um aumento no COGS (custo de mercadorias vendidas) do cluster e desempenho reduzido. Além disso, a redução dos valores da política de envio em lote pode, na verdade, resultar em maior latência efetiva de ingestão de ponta a ponta, devido à sobrecarga do gerenciamento de vários processos de ingestão em paralelo.
A lista a seguir mostra condições para selar lotes relacionados à ingestão de blob único. Um lote é selado e ingerido quando as condições são atendidas:
SingleBlob_FlushImmediately
: ingerir um único blob porque 'FlushImmediately' foi definidoSingleBlob_IngestIfNotExists
: ingerir um único blob porque 'IngestIfNotExists' foi definidoSingleBlob_IngestByTag
: ingerir um único blob porque 'ingest-by' foi definidoSingleBlob_SizeUnknown
: ingerir um único blob porque o tamanho do blob é desconhecido
Se a SystemFlush
condição estiver definida, um lote será selado quando uma liberação do sistema for disparada. Com o SystemFlush
conjunto de parâmetros, o sistema libera os dados, por exemplo, devido ao dimensionamento de cluster ou à redefinição interna dos componentes do sistema.
Padrões e limites
Tipo | Propriedade | Padrão | Configuração de baixa latência | Valor mínimo | Valor máximo |
---|---|---|---|---|---|
Número de itens | MaximumNumberOfItems | 500 | 500 | 1 | 25,000 |
Tamanho dos dados (MB) | MaximumRawDataSizeMB | 1024 | 1024 | 100 | 4096 |
Tempo (s) | MaximumBatchingTimeSpan | 300 | 20 - 30 | 10 | 1800 |
A maneira mais eficaz de controlar a latência de ponta a ponta usando a política de envio em lote de ingestão é alterar seu limite de tempo no nível da tabela ou do banco de dados , de acordo com o limite mais alto de requisitos de latência. Uma política de nível de banco de dados afeta todas as tabelas nesse banco de dados que não têm a política de nível de tabela definida e qualquer tabela recém-criada.
Importante
Se você definir o limite de tempo da política de Envio em Lote de Ingestão muito baixo em tabelas de baixa entrada, poderá incorrer em trabalhos adicionais de computação e armazenamento à medida que o cluster tenta otimizar os fragmentos de dados recém-criados. Para obter mais informações sobre fragmentos de dados, confira extensões.
Tamanho dos dados do lote
O tamanho dos dados da política de envio em lote é definido para dados não compactados. Para arquivos Parquet, AVRO e ORC, uma estimativa é calculada com base no tamanho do arquivo. Para dados compactados, o tamanho dos dados descompactados é avaliado da seguinte maneira em ordem decrescente de precisão:
- Se o tamanho não compactado for fornecido nas opções de origem de ingestão, esse valor será usado.
- Ao ingerir arquivos locais usando SDKs, arquivos zip e fluxos gzip são inspecionados para avaliar seu tamanho bruto.
- Se as opções anteriores não fornecerem um tamanho de dados, um fator será aplicado ao tamanho dos dados compactados para estimar o tamanho dos dados não compactados.
Latências de envio em lote
Latências podem resultar de várias causas que podem ser resolvidas usando configurações de política de envio em lote.
Causa | Solução |
---|---|
A latência de dados corresponde à time configuração, com poucos dados para atingir o size limite ou count |
Reduzir o time limite |
Envio em lote ineficiente devido a um grande número de arquivos muito pequenos | Aumente o tamanho dos arquivos de origem. Se estiver usando o Coletor kafka, configure-o para enviar dados em ~100 KB partes ou superiores. Se você tiver muitos arquivos pequenos, aumente o count (até 2000) na política de ingestão de banco de dados ou tabela. |
Envio em lote de uma grande quantidade de dados descompactados | Isso é comum ao ingerir arquivos Parquet. Diminua size incrementalmente para a política de envio em lote de tabela ou banco de dados para 250 MB e marcar para melhoria. |
Lista de pendências porque o cluster está em escala | Aceite qualquer sugestão do assistente do Azure para escalar horizontalmente ou escalar verticalmente o cluster. Como alternativa, dimensione manualmente o cluster para ver se a lista de pendências está fechada. Se essas opções não funcionarem, entre em contato com o suporte para obter assistência. |
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de