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 Balancings zwischen Knoten verschoben werden. Weitere Informationen finden Sie in der Bigtable-Dokumentation unter Lesevorgänge und Leistung.

Ihnen wird die Anzahl der Knoten in den Clustern Ihrer Instanz in Rechnung gestellt. Weitere Informationen finden Sie unter Bigtable-Preise.

Leistung

Die folgende Tabelle enthält Leistungsmesswerte für Bigtable-Lesevorgänge. Die Arbeitslasten wurden mit einem Apache Beam SDK 2.48.0 für Java auf einem e2-standard2-Worker ausgeführt. Runner v2 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 Anschluss BigtableIO, nicht CloudBigtableIO.

  • Erstellen Sie für jeden Pipelinetyp separate App-Profile. Mithilfe von App-Profilen können Sie den Traffic zwischen Pipelines besser unterscheiden, sowohl für den Support als auch für die Nutzeraufzeichnung.

  • Überwachen Sie die Bigtable-Knoten. Wenn Sie Leistungsengpässe feststellen, prüfen Sie, ob Ressourcen wie die CPU-Auslastung in Bigtable eingeschränkt 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.

  • Sie können das Bigtable-Autoscaling aktivieren oder die Größe des Bigtable-Clusters so anpassen, dass er mit der Größe Ihrer Dataflow-Jobs skaliert.

  • Legen Sie maxNumWorkers für den Dataflow-Job fest, um die Auslastung des Bigtable-Clusters zu begrenzen.

  • Wenn vor dem Zufallsmix eine umfangreiche Verarbeitung eines Bigtable-Elements erfolgt, kann es zu einem Zeitüberschreitungsfehler bei Bigtable-Aufrufen kommen. In diesem Fall kannst du withMaxBufferElementCount aufrufen, um Elemente zu puffern. Bei dieser Methode wird der Lesevorgang von Streaming in paginated umgewandelt, wodurch das Problem vermieden wird.

  • Wenn Sie einen einzigen Bigtable-Cluster sowohl für Streaming- als auch für Batch-Pipelines verwenden und die Leistung auf Bigtable-Seite abnimmt, sollten Sie die Replikation im Cluster einrichten. Trennen Sie dann die Batch- und Streaming-Pipelines, damit sie aus verschiedenen Replikaten lesen. Weitere Informationen finden Sie unter Replikation – Übersicht.

Nächste Schritte