Verwenden Sie zum Lesen von Daten von Bigtable in Dataflow den Bigtable-E/A-Connector von Apache Beam.
Parallelität
Die Parallelität wird durch die Anzahl der Knoten im Bigtable-Cluster gesteuert. Jeder Knoten verwaltet einen oder mehrere Schlüsselbereiche, wobei sich Schlüsselbereiche als Teil des Load-Balancings zwischen Knoten verschieben können. 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. Siehe 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. Sie haben nicht Runner v2 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 Batchpipelines. Sie sollen die Leistung von E/A-Connectors vergleichen 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. 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 Leistung von Beam IO.
Best Practices
Verwenden Sie für neue Pipelines den Connector
BigtableIO
und nichtCloudBigtableIO
.Erstellen Sie separate Anwendungsprofile für jeden Pipelinetyp. Anwendungsprofile ermöglichen bessere Messwerte zur Differenzierung des Traffics zwischen Pipelines, sowohl für den Support als auch für die Nachverfolgung der Nutzung.
Überwachen Sie die Bigtable-Knoten. Wenn Leistungsengpässe auftreten, prüfen Sie, ob die Ressourcen wie die CPU-Auslastung in Bigtable eingeschränkt sind. Weitere Informationen finden Sie unter Monitoring.
Im Allgemeinen werden die Standardzeitlimits 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.Erwägen Sie, Bigtable-Autoscaling zu aktivieren oder die Größe des Bigtable-Clusters nach der Größe Ihrer Dataflow-Jobs zu skalieren.
Sie können
maxNumWorkers
für den Dataflow-Job festlegen, um die Last für den Bigtable-Cluster zu begrenzen.Wenn vor einem Shuffle eine wichtige Verarbeitung für ein Bigtable-Element durchgeführt wird, kann bei Aufrufen von Bigtable eine Zeitüberschreitung auftreten. In diesem Fall können Sie
withMaxBufferElementCount
aufrufen, um Elemente zu puffern. Diese Methode konvertiert den Lesevorgang vom Streaming in die Paginierung, wodurch das Problem vermieden wird.Wenn Sie einen einzelnen Bigtable-Cluster sowohl für Streaming- als auch für Batchpipelines verwenden und die Leistung auf der Bigtable-Seite beeinträchtigt wird, sollten Sie die Replikation auf dem Cluster einrichten. Trennen Sie dann die Batch- und Streamingpipelines, sodass sie aus verschiedenen Replikaten lesen. Weitere Informationen finden Sie unter Replikation – Übersicht.
Wie geht es weiter?
- Lesen Sie die Dokumentation zum Bigtable-E/A-Connector.
- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.