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
, nichtCloudBigtableIO
.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
- Lesen Sie die Dokumentation zum Bigtable-E/A-Connector.
- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.