Von Bigtable nach Dataflow lesen

Verwenden Sie den Bigtable-E/A-Connector von Apache Beam, um Daten aus Bigtable in Dataflow zu lesen.

Parallelität

Die Parallelität wird durch die Anzahl der Knoten im Bigtable-Cluster gesteuert. Jeder Knoten verwaltet einen oder mehrere Schlüsselbereiche. Schlüsselbereiche können jedoch im Rahmen des Load-Balancing zwischen Knoten verschoben werden. Weitere Informationen finden Sie in der Bigtable-Dokumentation unter Lesevorgänge und Leistung.

Die Anzahl der Knoten in den Clustern Ihrer Instanz wird Ihnen in Rechnung gestellt. Bigtable-Preise

Leistung

In der folgenden Tabelle sind Leistungsmesswerte für Bigtable-Leseoperationen aufgeführt. Die Arbeitslasten wurden mit einem Apache Beam SDK 2.48.0 für Java auf einem e2-standard2-Worker ausgeführt. Der Portable Runner wurde nicht verwendet.

100 Mio. Datensätze | 1 KB | 1 Spalte Durchsatz (Byte) Durchsatz (Elemente)
Lesen 180 Mbit/s 170.000 Elemente pro Sekunde

Diese Messwerte basieren auf einfachen Batch-Pipelines. Sie dienen zum Vergleich der Leistung zwischen E/A-Anschlüssen und sind nicht unbedingt repräsentativ für reale Pipelines. Die Leistung der Dataflow-Pipeline ist komplex und eine Funktion des VM-Typs, der verarbeiteten Daten, der Leistung externer Quellen und Senken sowie des Nutzercodes. Die Messwerte basieren auf der Ausführung des Java SDK und sind nicht repräsentativ für die Leistungsmerkmale anderer Sprach-SDKs. Weitere Informationen finden Sie unter Beam E/A-Leistung.

Best Practices

  • Verwenden Sie für neue Pipelines den Connector BigtableIO und nicht CloudBigtableIO.

  • Erstellen Sie separate Anwendungsprofile für die einzelnen Pipeline-Typen. Anwendungsprofile ermöglichen bessere Messwerte zur Unterscheidung von Traffic zwischen Pipelines, sowohl für den Support als auch für die Nutzungsanalyse.

  • Bigtable-Knoten überwachen Wenn Sie Leistungsengpässe feststellen, prüfen Sie, ob Ressourcen wie die CPU-Auslastung in Bigtable begrenzt sind. Weitere Informationen finden Sie unter Monitoring.

  • Im Allgemeinen sind die Standardzeitüberschreitungen für die meisten Pipelines gut abgestimmt. Wenn eine Streamingpipeline aus Bigtable zu lesen scheint, versuchen Sie, withAttemptTimeout aufzurufen, um die Zeitüberschreitung für Versuche anzupassen.

  • Aktivieren Sie Bigtable-Autoscaling oder passen Sie die Größe des Bigtable-Clusters an die Größe Ihrer Dataflow-Jobs an.

  • Legen Sie maxNumWorkers für den Dataflow-Job fest, um die Last für den Bigtable-Cluster zu begrenzen.

  • Wenn ein Bigtable-Element vor einem Shuffle erheblich verarbeitet wird, kann es zu Zeitüberschreitungen bei Aufrufen von Bigtable kommen. In diesem Fall können Sie withMaxBufferElementCount aufrufen, um Elemente zu puffern. Mit dieser Methode wird der Lesevorgang von Streaming in paginiert umgewandelt, wodurch das Problem vermieden wird.

  • Wenn Sie einen einzelnen Bigtable-Cluster sowohl für Streaming- als auch für Batch-Pipelines verwenden und die Leistung auf der Bigtable-Seite nachlässt, sollten Sie die Replikation für den Cluster einrichten. Trennen Sie dann die Batch- und Streamingpipelines, sodass sie aus verschiedenen Replikaten gelesen werden. Weitere Informationen finden Sie unter Replikation – Übersicht.

Nächste Schritte