Optimisation des performances du connecteur Openflow pour Kafka¶
Note
Le connecteur est soumis aux conditions d’utilisation du connecteur.
Cette rubrique fournit des conseils pour optimiser les performances du site Connecteur Openflow pour Kafka afin d’obtenir un débit optimal et de minimiser la latence lors de l’ingestion de données dans Snowflake.
Considérations en matière de performances¶
Lorsque vous configurez le connecteur Openflow pour Kafka pour des performances optimales, tenez compte des facteurs clés suivants qui ont un impact sur le débit d’ingestion et la latence :
Caractéristiques du message¶
- Taille du message
Des messages plus volumineux peuvent fournir un meilleur débit mais peuvent nécessiter plus de mémoire et de temps de traitement par message.
- Format du message
JSON nécessitent généralement un traitement plus important que les messages AVRO en raison de l’inférence du schéma et de la sérialisation/désérialisation différente.
- Volume du message
Les volumes de messages plus importants bénéficient d’un traitement parallèle et de lots de plus grande taille.
Configuration de Kafka¶
- Nombre de partitions
Un plus grand nombre de partitions permet un plus grand parallélisme, mais nécessite une coordination minutieuse avec la configuration du consommateur.
- Compression
La compression des messages peut réduire la largeur de bande du réseau mais augmente la charge de travail de CPU.
Optimisation des fichiers de flux¶
- Taille du fichier d’écoulement
Pour une optimisation des performances, les fichiers de flux doivent être de l’ordre de 1 à 10 MB plutôt que de contenir des messages individuels de petite taille. Des fichiers de flux plus volumineux réduisent les frais généraux de traitement et améliorent le débit en minimisant le nombre d’opérations sur les fichiers individuels. Les paramètres par défaut devraient permettre d’obtenir des fichiers de flux d’une taille acceptable. De petits fichiers de flux sont attendus lorsque le débit est faible.
Si vous observez de petits fichiers de flux avec un débit élevé, contactez le support Snowflake pour obtenir de l’aide.
Réseau et infrastructure¶
- Temps de latence du réseau
La diminution de la latence entre les brokers Kafka et Openflow améliore les performances globales.
- Largeur de bande
Une bande passante de réseau suffisante est essentielle pour les scénarios à haut débit.
Recommandations sur la taille des nœuds¶
La table suivante fournit des recommandations de configuration basées sur les caractéristiques attendues de la charge de travail.
Taille du nœud |
Recommandé pour |
Capacité du débit de messages |
---|---|---|
Small (S) |
Scénarios de débit faible à modéré |
Jusqu’à 10 MB/s par nœud |
Medium (M) |
Scénarios de débit modéré à élevé |
Jusqu’à 40 MB/s par nœud |
Large (L) |
Scénarios à haut débit |
Dépassement de 40 MB/s par nœud |
Meilleures pratiques en matière d’optimisation des performances¶
Ajustement des tâches simultanées du processeur¶
Pour optimiser les performances du processeur, vous pouvez ajuster le nombre de tâches simultanées pour les processeurs ConsumeKafka et PutSnowpipeStreaming. Les tâches simultanées permettent aux processeurs d’exécuter plusieurs threads simultanément, ce qui améliore le débit pour les scénarios à haut volume.
Pour ajuster les tâches simultanées pour un processeur, effectuez les tâches suivantes :
Cliquez avec le bouton droit de la souris sur le processeur dans le canevas Openflow.
Sélectionnez Configure dans le menu contextuel.
Accédez à l’onglet Scheduling.
Dans le champ Concurrent tasks, entrez le nombre préféré de tâches simultanées.
Sélectionnez Apply pour enregistrer la configuration.
Paramètres recommandés pour les tâches simultanées¶
Taille du nœud |
Tâches ConsumeKafka |
Tâches PutSnowpipeStreaming |
---|---|---|
Small (S) |
1 |
1-2 |
Medium (M) |
2 |
2-4 |
Large (L) |
4-8 |
4-10 |
Considérations importantes¶
- Utilisation de la mémoire
Chaque tâche concurrente consomme de la mémoire supplémentaire. Surveillez l’utilisation du tas de JVM lorsque vous augmentez le nombre de tâches simultanées.
- Partitions Kafka
Pour ConsumeKafka, le nombre de tâches simultanées multiplié par le nombre de nœuds ne doit pas dépasser le nombre de partitions Kafka totales de tous les sujets.
- Commencez prudemment
Commencez par des valeurs plus faibles et augmentez-les progressivement tout en surveillant les performances.
Ajustement de la taille maximale des lots dans le processeur PutSnowpipeStreaming¶
Le paramètre Max Batch Size (taille maximale des lots) du processeur PutSnowpipeStreaming détermine le nombre d’enregistrements traités dans un même lot. L’utilisation de ce paramètre permet d’optimiser l’utilisation de la mémoire et le débit.
La taille maximale des lots doit être ajustée en fonction de la taille moyenne des enregistrements afin de maintenir la taille totale des lots (taille maximale des lots × taille moyenne des enregistrements) autour de 4 MB, sans dépasser 16 MB pour des performances optimales.
Par exemple, si la taille moyenne des enregistrements est de 1KB, la taille maximale des lots doit être fixée à 4 000.
Pour ajuster la taille maximale des lots, procédez comme suit
Cliquez avec le bouton droit de la souris sur le processeur PutSnowpipeStreaming.
Sélectionnez Configure dans le menu contextuel.
Accédez à l’onglet Properties.
Emplacement de la propriété Max Batch Size.
Saisissez la valeur calculée en fonction de la taille moyenne de vos enregistrements.
Sélectionnez Apply pour enregistrer les modifications.
Considérations importantes¶
Surveillez l’utilisation de la mémoire et le débit lors de l’ajustement de la taille des lots.
Commencez par ces valeurs recommandées et n’ajustez que si nécessaire tout en surveillant les performances.
Remarques relatives à la mise à l’échelle¶
La plateforme Openflow utilise un Autoscaler Horizontal Pod (HPA) basé sur l’utilisation de CPU et ne supporte pas l’autoscaling basé sur des métriques personnalisées.
Une configuration adéquate des tâches simultanées est essentielle pour une mise à l’échelle automatique efficace. Si les tâches simultanées sont fixées à un niveau trop bas, le système risque de ne pas passer à l’échelle supérieure même si le retard de Kafka augmente, car le seuil d’utilisation CPU requis pour déclencher la mise à l’échelle risque de ne pas être atteint. Cela peut entraîner des retards de traitement et des arriérés accumulés malgré la disponibilité de ressources supplémentaires.
Pour garantir un comportement de mise à l’échelle optimal, configurez les tâches concurrentes conformément aux recommandations figurant dans Ajustement des tâches concurrentes du processeur et surveillez à la fois le CPU l’utilisation et les métriques de décalage de Kafka.
Dépannage des problèmes de performance¶
Goulets d’étranglement courants en matière de performance¶
Délai élevé pour les consommateurs ou goulots d’étranglement au niveau de l’ingestion de Snowflake¶
Si le lag des consommateurs Kafka augmente ou si l’ingestion de Snowflake est lente, effectuez les tâches suivantes :
Vérifiez la connectivité du réseau et la bande passante entre Openflow et les brokers Kafka.
Observez si la file d’attente devant le processeur PutSnowpipeStreaming augmente.
Si oui, envisagez d’ajouter davantage de tâches simultanées pour le processeur PutSnowpipeStreaming dans les limites de la plage fournie dans Ajustement des tâches simultanées du processeur.
Si ce n’est pas le cas, envisagez d’ajouter davantage de tâches simultanées pour le processeur ConsumeKafka dans les limites de la plage fournie dans Ajustement des tâches simultanées du processeur.
Envisagez d’utiliser un type de nœud plus grand.
Envisagez d’augmenter le nombre maximal de nœuds pour l’environnement d’exécution.
Pression de la mémoire¶
Si vous rencontrez des problèmes liés à la mémoire :
Réduisez la taille des lots pour diminuer l’empreinte mémoire.
Réduisez le nombre de tâches simultanées pour le processeur ConsumeKafka.
Envisagez de passer à un type de nœud plus important.
Problèmes de latence du réseau¶
En cas de latence élevée :
Vérifiez la configuration du réseau entre Openflow et les systèmes externes.
Envisagez de déployer Openflow plus près de votre cluster Kafka.
Si vous travaillez avec un faible débit, envisagez de réduire les paramètres Client Lag dans le processeur PutSnowpipeStreaming et Max Uncommitted Time dans le processeur ConsumeKafka.
Prochaines étapes¶
Commencez par la configuration recommandée pour la taille de votre nœud.
Surveillez les performances et ajustez les paramètres en fonction du comportement observé.
Envisagez de réaliser des tests de charge dans un environnement autre que celui de la production avant de le déployer dans la production.