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 :

  1. Cliquez avec le bouton droit de la souris sur le processeur dans le canevas Openflow.

  2. Sélectionnez Configure dans le menu contextuel.

  3. Accédez à l’onglet Scheduling.

  4. Dans le champ Concurrent tasks, entrez le nombre préféré de tâches simultanées.

  5. Sélectionnez Apply pour enregistrer la configuration.

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

  1. Cliquez avec le bouton droit de la souris sur le processeur PutSnowpipeStreaming.

  2. Sélectionnez Configure dans le menu contextuel.

  3. Accédez à l’onglet Properties.

  4. Emplacement de la propriété Max Batch Size.

  5. Saisissez la valeur calculée en fonction de la taille moyenne de vos enregistrements.

  6. 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 :

  1. Vérifiez la connectivité du réseau et la bande passante entre Openflow et les brokers Kafka.

  2. Observez si la file d’attente devant le processeur PutSnowpipeStreaming augmente.

    1. 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.

    2. 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.

  3. Envisagez d’utiliser un type de nœud plus grand.

  4. 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 :

  1. Réduisez la taille des lots pour diminuer l’empreinte mémoire.

  2. Réduisez le nombre de tâches simultanées pour le processeur ConsumeKafka.

  3. Envisagez de passer à un type de nœud plus important.

Problèmes de latence du réseau

En cas de latence élevée :

  1. Vérifiez la configuration du réseau entre Openflow et les systèmes externes.

  2. Envisagez de déployer Openflow plus près de votre cluster Kafka.

  3. 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.