Leistungsoptimierung des Openflow Connector für Kafka

Bemerkung

Der Konnektor unterliegt den Bedingungen für Konnektoren.

Dieses Thema enthält Anleitungen zur Optimierung der Leistung von Openflow Connector für Kafka, um einen optimalen Durchsatz zu erzielen und die Latenzzeit bei der Datenaufnahme in Snowflake zu minimieren.

Hinweise zur Performance

Wenn Sie den Openflow Connector für Kafka für eine optimale Leistung konfigurieren, sollten Sie die folgenden Schlüsselfaktoren berücksichtigen, die sich auf den Datenaufnahmedurchsatz und die Latenzzeit auswirken:

Meldungseigenschaften

Meldungsgröße

Größere Meldungen bieten zwar einen besseren Durchsatz, benötigen aber möglicherweise mehr Speicher und Verarbeitungszeit pro Meldung.

Message format

JSON-Meldungen erfordern in der Regel mehr Verarbeitungsaufwand im Vergleich zu AVRO-Meldungen aufgrund von Schema-Inferenz und unterschiedlicher Serialisierung/Deserialisierung.

Meldungsvolumen

Höhere Meldungsvolumen profitieren von paralleler Verarbeitung und größeren Batchgrößen.

Kafka-Konfiguration

Anzahl der Partitionen

Mehr Partitionen ermöglichen eine höhere Parallelität, erfordern aber eine sorgfältige Abstimmung mit der Verbraucherkonfiguration.

Kompression

Die Meldungskomprimierung kann die Netzwerkbandbreite reduzieren, erhöht jedoch die CPU-Auslastung.

FlowFile-Optimierung

FlowFile-Größe

Für eine optimale Leistung sollten FlowFiles im Bereich von 1–10 MB liegen und nicht einzelne kleine Meldungen enthalten. Größere Flowfiles reduzieren den Verarbeitungsaufwand und verbessern den Durchsatz, indem sie die Anzahl der einzelnen Dateioperationen minimieren. Die Standardeinstellungen sollten FlowFiles in einem akzeptablen Größenbereich ergeben. Bei geringem Durchsatz sind kleine Flowfiles zu erwarten.

Wenn Sie kleine FlowFiles bei hoher Durchsatzrate beobachten, wenden Sie sich an den Snowflake-Support.

Netzwerk und Infrastruktur

Netzwerklatenz

Niedrigere Latenzzeiten zwischen Kafka-Brokern und Openflow verbessern die Gesamtleistung.

Bandbreite

Eine ausreichende Netzwerkbandbreite ist für Szenarien mit hohem Durchsatz entscheidend.

Empfehlungen zur Knotengröße

Die folgende Tabelle enthält Konfigurationsempfehlungen auf der Grundlage der zu erwartenden Workload-Eigenschaften.

Knotengröße

Empfohlen für

Meldungsratenkapazität

Klein (S)

Szenarien mit niedrigem bis mittlerem Durchsatz

Bis zu 10 MB/s pro Knoten

Mittel (M)

Szenarien mit mittlerem bis hohem Durchsatz

Bis zu 40 MB/s pro Knoten

Groß (L)

Szenarien mit hohem Durchsatz

Überschreitung von 40 MB/s pro Knoten

Best Practices zur Leistungsoptimierung

Anpassen der gleichzeitigen Aufgaben des Prozessors

Um die Prozessorleistung zu optimieren, können Sie die Anzahl der gleichzeitigen Aufgaben sowohl für ConsumeKafka als auch für PutSnowpipeStreaming anpassen. Parallele Aufgaben ermöglichen es Prozessoren, mehrere Threads gleichzeitig auszuführen, wodurch der Durchsatz in Szenarien mit hohem Datenaufkommen verbessert wird.

Um die gleichzeitigen Aufgaben für einen Prozessor anzupassen, führen Sie die folgenden Aufgaben aus:

  1. Klicken Sie mit der rechten Maustaste auf den Prozessor im Openflow-Canvas.

  2. Wählen Sie Configure aus dem Kontextmenü.

  3. Navigieren Sie zur Registerkarte Scheduling.

  4. Geben Sie in das Feld Concurrent tasks die gewünschte Anzahl gleichzeitiger Aufgaben ein.

  5. Wählen Sie Apply, um die Konfiguration zu speichern.

Wichtige Hinweise

Speicherverbrauch

Jede gleichzeitig ausgeführte Aufgabe verbraucht zusätzlichen Speicherplatz. Überwachen Sie die JVM-Heap-Nutzung, wenn Sie die Anzahl gleichzeitiger Aufgaben erhöhen.

Kafka-Partitionen

Für ConsumeKafka sollte die Anzahl der gleichzeitigen Aufgaben multipliziert mit der Anzahl der Knoten die Anzahl der gesamten Kafka-Partitionen aller Themen nicht überschreiten.

Beginnen Sie vorsichtig

Beginnen Sie mit niedrigeren Werten und erhöhen Sie diese schrittweise, während Sie die Leistungskennzahlen überwachen.

Anpassen der maximalen Batchgröße im PutSnowpipeStreaming-Prozessor

Der Parameter „Max Batch Size“ im PutSnowpipeStreaming-Prozessor steuert, wie viele Datensätze in einem einzelnen Batch verarbeitet werden. Die Einstellung dieses Parameters trägt zur Optimierung der Speichernutzung und des Durchsatzes bei.

Die maximale Batchgröße sollte auf der Grundlage der durchschnittlichen Datensatzgröße so eingestellt werden, dass die Gesamtbatchgröße (maximale Batchgröße × durchschnittliche Datensatzgröße) bei etwa 4 MB liegt und 16 MB nicht überschreitet, um eine optimale Leistung zu erzielen.

Ein Beispiel: Wenn die durchschnittliche Datensatzgröße 1KB ist, sollte die maximale Batchgröße auf 4.000 gesetzt werden.

Um die maximale Batchgröße anzupassen, gehen Sie wie folgt vor:

  1. Klicken Sie mit der rechten Maustaste auf den PutSnowpipeStreaming-Prozessor.

  2. Wählen Sie Configure aus dem Kontextmenü.

  3. Navigieren Sie zur Registerkarte Properties.

  4. Suchen Sie die Eigenschaft Max Batch Size.

  5. Geben Sie den berechneten Wert ein, der auf Ihrer durchschnittlichen Datensatzgröße basiert.

  6. Wählen Sie Apply aus, um die Änderungen zu speichern.

Wichtige Hinweise

  • Überwachen Sie die Speichernutzung und den Durchsatz, wenn Sie die Batchgröße anpassen.

  • Beginnen Sie mit diesen empfohlenen Werten und passen Sie sie nur bei Bedarf an, während Sie die Leistung überwachen.

Hinweise zur Skalierung

Die Openflow-Plattform verwendet einen horizontalen Pod-Autoscaler (HPA), der auf der CPU-Auslastung basiert, und unterstützt keine benutzerdefinierte, auf Metriken basierende automatische Skalierung.

Die richtige Konfiguration von gleichzeitigen Aufgaben ist für eine effektive automatische Skalierung entscheidend. Wenn die Anzahl der gleichzeitigen Aufgaben zu niedrig eingestellt ist, kann es sein, dass das System nicht skaliert, auch wenn die Verzögerung bei Kafka zunimmt, da der für den Trigger der Skalierung erforderliche Schwellenwert für die CPU-Auslastung möglicherweise nicht erreicht wird. Dies kann trotz der Verfügbarkeit zusätzlicher Ressourcen zu Verzögerungen bei der Bearbeitung und zu einem Rückstau führen.

Um ein optimales Skalierungsverhalten zu gewährleisten, konfigurieren Sie gleichzeitige Aufgaben gemäß den Empfehlungen in Anpassen der gleichzeitigen Aufgaben des Prozessors und überwachen Sie sowohl die Auslastung der CPU als auch die Verzögerungsmetriken von Kafka.

Fehlerbehebung bei Leistungsproblemen

Häufige Leistungsengpässe

Hohe Verbraucherverzögerung oder Engpässe bei der Snowflake-Datenaufnahme

Wenn die Verzögerung der Kafka-Verbraucher zunimmt oder die Snowflake-Datenaufnahme langsam ist, führen Sie die folgenden Aufgaben durch:

  1. Überprüfen Sie die Konnektivität und Bandbreite des Netzwerks zwischen Openflow und Kafka-Brokern.

  2. Beobachten Sie, ob die Warteschlange vor dem PutSnowpipeStreaming-Prozessor zunimmt.

    1. Wenn ja, erwägen Sie das Hinzufügen weiterer gleichzeitiger Aufgaben für den Prozessor PutSnowpipeStreaming innerhalb der Bereichsgrenzen, die unter Anpassung der gleichzeitigen Aufgaben des Prozessors angegeben sind.

    2. Wenn dies nicht der Fall ist, sollten Sie in Erwägung ziehen, mehr gleichzeitige Aufgaben für den Prozessor ConsumeKafka im Rahmen der Bereichsgrenzen hinzuzufügen, die unter Anpassung der gleichzeitigen Aufgaben des Prozessors angegeben sind.

  3. Ziehen Sie die Verwendung eines größeren Knotentyps in Betracht.

  4. Erwägen Sie, die maximale Anzahl von Knoten für die Laufzeit zu erhöhen.

Speicherauslastung

Wenn Probleme mit dem Speicher auftreten:

  1. Reduzieren Sie die Batchgrößen, um den Speicherbedarf zu verringern.

  2. Reduzieren Sie die Anzahl der gleichzeitigen Aufgaben für den ConsumeKafka-Prozessor.

  3. Ziehen Sie ein Upgrade auf einen größeren Knotentyp in Betracht.

Probleme mit der Netzwerklatenz

Wenn eine hohe Latenz auftritt:

  1. Überprüfen Sie die Netzwerkkonfiguration zwischen Openflow und externen Systemen.

  2. Ziehen Sie in Betracht, Openflow näher an Ihrem Kafka-Cluster zu installieren.

  3. Wenn Sie mit geringem Durchsatz arbeiten, sollten Sie die Client Lag-Einstellungen im Prozessor PutSnowpipeStreaming und Max Uncommitted Time im Prozessor ConsumeKafka verringern.

Nächste Schritte

  • Beginnen Sie mit der empfohlenen Konfiguration für Ihre Knotengröße.

  • Überwachen Sie die Leistungsmetriken und passen Sie die Einstellungen anhand des beobachteten Verhaltens an.

  • Ziehen Sie vor der Bereitstellung in der Produktionsumgebung Lasttests in einer Nicht-Produktionsumgebung in Betracht.