Ajuste de desempenho do Openflow Connector para Kafka¶
Nota
O conector está sujeito aos termos do conector.
Este tópico fornece orientação para otimizar o desempenho de Openflow Connector para Kafka a fim de obter a melhor taxa de transferência e minimizar a latência ao ingerir dados no Snowflake.
Considerações de desempenho¶
Ao configurar o Openflow Connector para Kafka para obter o desempenho ideal, considere os seguintes fatores principais que afetam a taxa de transferência e a latência da ingestão:
Características da mensagem¶
- Tamanho da mensagem
Mensagens maiores podem proporcionar melhor taxa de transferência, mas podem exigir mais memória e tempo de processamento por mensagem.
- Formato de mensagem
Normalmente mensagens JSON exigem mais sobrecarga de processamento em comparação com mensagens AVRO devido à inferência de esquema e à serialização/desserialização diferente.
- Volume da mensagem
Volumes maiores de mensagens se beneficiam do processamento paralelo e de lotes maiores.
Configuração do Kafka¶
- Contagem de partições
Mais partições permitem maior paralelismo, mas exigem uma coordenação cuidadosa com a configuração do consumidor.
- Compressão
A compressão de mensagens pode reduzir a largura de banda da rede, mas aumenta a sobrecarga da CPU.
Otimização do FlowFile¶
- Tamanho do FlowFile
Para otimizar o desempenho, os FlowFiles devem estar no intervalo de 1 a 10 MB em vez de conter mensagens pequenas individuais. Os FlowFiles maiores reduzem a sobrecarga de processamento e melhoram o rendimento, minimizando o número de operações de arquivos individuais. As configurações padrão devem produzir FlowFiles em uma faixa de tamanho aceitável. Espera-se que os FlowFiles sejam pequenos quando a taxa de transferência for baixa.
Se você observar pequenos FlowFiles com taxa de transferência elevada, entre em contato com o suporte Snowflake para obter assistência.
Rede e infraestrutura¶
- Latência da rede
A menor latência entre os corretores Kafka e Openflow melhora o desempenho geral.
- Largura de banda
Uma largura de banda de rede suficiente é essencial para cenários de alta produtividade.
Recomendações do tamanho de nó¶
A tabela a seguir fornece recomendações de configuração com base nas características esperadas da carga de trabalho.
Tamanho do nó |
Recomendado para |
Capacidade da taxa de mensagens |
---|---|---|
Small (S) |
Cenários de taxa de transferência baixa a moderada |
Até 10 MB/s por nó |
Medium (M) |
Cenários de taxa de transferência moderada a alta |
Até 40 MB/s por nó |
Large (L) |
Cenários de alto rendimento |
Excedendo 40 MB/s por nó |
Práticas recomendadas de otimização de desempenho¶
Ajuste das tarefas simultâneas do processador¶
Para otimizar o desempenho do processador, você pode ajustar o número de tarefas simultâneas para os processadores ConsumeKafka e PutSnowpipeStreaming. As tarefas simultâneas permitem que os processadores executem vários threads simultaneamente, melhorando o rendimento em cenários de alto volume.
Para ajustar as tarefas simultâneas de um processador, execute as seguintes tarefas:
Clique com o botão direito do mouse no processador na tela do Openflow.
Selecione Configure no menu de contexto.
Navegue até a guia Scheduling.
No campo Concurrent tasks, digite o número preferencial de tarefas simultâneas.
Selecione Apply para salvar a configuração.
Configurações recomendadas para tarefas simultâneas¶
Tamanho do nó |
Tarefas ConsumeKafka |
Tarefas PutSnowpipeStreaming |
---|---|---|
Small (S) |
1 |
1-2 |
Medium (M) |
2 |
2-4 |
Large (L) |
4-8 |
4-10 |
Considerações importantes¶
- Uso da memória
Cada tarefa simultânea consome memória adicional. Monitore o uso do heap de JVM ao aumentar as tarefas simultâneas.
- Partições do Kafka
Para ConsumeKafka, o número de tarefas simultâneas multiplicado pelo número de nós não deve exceder o número total de partições do Kafka de todos os tópicos.
- Comece de forma conservadora
Comece com valores mais baixos e aumente gradualmente enquanto monitora as métricas de desempenho.
Ajuste do tamanho máximo do lote no processador PutSnowpipeStreaming¶
O parâmetro Tamanho máximo do lote (Max Batch Size) no processador PutSnowpipeStreaming controla quantos registros são processados em um único lote. O ajuste desse parâmetro ajuda a otimizar o uso da memória e a taxa de transferência.
O Tamanho máximo do lote deve ser ajustado com base no tamanho médio do registro para manter o tamanho total do lote (Tamanho máximo do lote × tamanho médio do registro) em torno de 4 MB, não excedendo 16 MB para obter um desempenho ideal.
Por exemplo: se o tamanho médio do registro for 1KB, o Tamanho máximo do lote deverá ser definido como 4.000.
Para ajustar o Tamanho máximo do lote, faça o seguinte
Clique com o botão direito do mouse no processador PutSnowpipeStreaming.
Selecione Configure no menu de contexto.
Navegue até a guia Properties.
Localize a propriedade Max Batch Size.
Digite o valor calculado com base no tamanho médio do registro.
Selecione Apply para salvar as alterações.
Considerações importantes¶
Monitore o uso da memória e o rendimento ao ajustar o tamanho do lote.
Comece com esses valores recomendados e ajuste apenas se necessário enquanto monitora o desempenho.
Considerações de escala¶
A plataforma Openflow usa um Horizontal Pod Autoscaler (HPA) com base na utilização da CPU e não oferece suporte ao dimensionamento automático baseado em métricas personalizadas.
A configuração adequada de tarefas simultâneas é essencial para o dimensionamento automático eficaz. Se as tarefas simultâneas forem definidas como muito baixas, o sistema poderá não ser escalonado mesmo quando o atraso do Kafka estiver aumentando, porque o limite de uso da CPU necessário para acionar o escalonamento poderá não ser atingido. Isso pode resultar em atrasos no processamento e acúmulo de pendências, apesar da disponibilidade de recursos adicionais.
Para garantir o comportamento ideal de dimensionamento, configure as tarefas simultâneas de acordo com as recomendações em Ajuste das tarefas simultâneas do processador e monitore a utilização da CPU e as métricas de atraso do Kafka.
Solução de problemas de desempenho¶
Gargalos de desempenho comuns¶
Alto atraso do consumidor ou gargalos de ingestão do Snowflake¶
Se o atraso do consumidor Kafka estiver aumentando ou a ingestão do Snowflake estiver lenta, execute as seguintes tarefas:
Verifique a conectividade da rede e a largura de banda entre os corretores Openflow e Kafka.
Observe se a fila na frente do processador PutSnowpipeStreaming aumenta.
Em caso afirmativo, considere a possibilidade de adicionar mais tarefas simultâneas ao processador PutSnowpipeStreaming nas limitações de intervalo fornecidas em Ajuste das tarefas simultâneas do processador.
Caso contrário, considere a possibilidade de adicionar mais tarefas simultâneas para o processador ConsumeKafka nas limitações de intervalo fornecidas em Ajuste das tarefas simultâneas do processador.
Considere usar um tipo de nó maior.
Considere aumentar o número máximo de nós para o tempo de execução.
Pressão da memória¶
Se você estiver enfrentando problemas relacionados à memória:
Reduza o tamanho dos lotes para diminuir o consumo de memória.
Reduza o número de tarefas simultâneas para o processador ConsumeKafka.
Considere a possibilidade de atualizar para um tipo de nó maior.
Problemas de latência da rede¶
Se você estiver enfrentando alta latência:
Verifique a configuração da rede entre o Openflow e os sistemas externos.
Considere a possibilidade de implementar o Openflow mais próximo do cluster do Kafka.
Se estiver trabalhando com baixa taxa de transferência, considere reduzir as configurações Atraso do cliente no processador PutSnowpipeStreaming e Tempo máximo não comprometido no processador ConsumeKafka.
Próximos passos¶
Comece com a configuração recomendada para o tamanho de seu nó.
Monitore as métricas de desempenho e ajuste as configurações com base no comportamento observado.
Considere a possibilidade de fazer testes de carga em um ambiente que não seja de produção antes de implementar na produção.