Leer de Bigtable a Dataflow

Para leer datos de Bigtable en Dataflow, usa el conector de E/S de Bigtable de Apache Beam.

Paralelismo

El paralelismo se controla mediante el número de nodos del clúster de Bigtable. Cada nodo gestiona uno o varios intervalos de claves, aunque estos pueden moverse entre nodos como parte del equilibrio de carga. Para obtener más información, consulta Lecturas y rendimiento en la documentación de Bigtable.

Se te cobra por el número de nodos de los clústeres de tu instancia. Consulta los precios de Bigtable.

Rendimiento

En la siguiente tabla se muestran las métricas de rendimiento de las operaciones de lectura de Bigtable. Las cargas de trabajo se ejecutaron en un trabajador e2-standard2 con el SDK de Apache Beam 2.48.0 para Java. No usaron Runner v2.

100 M de registros | 1 KB | 1 columna Rendimiento (bytes) Rendimiento (elementos)
Leer 180 MB/s 170.000 elementos por segundo

Estas métricas se basan en sencillas canalizaciones por lotes. Su objetivo es comparar el rendimiento entre conectores de E/S y no representan necesariamente las canalizaciones del mundo real. El rendimiento de las canalizaciones de Dataflow es complejo y depende del tipo de VM, los datos que se procesan, el rendimiento de las fuentes y los receptores externos, y el código de usuario. Las métricas se basan en la ejecución del SDK de Java y no representan las características de rendimiento de otros SDKs de lenguaje. Para obtener más información, consulta Rendimiento de Beam IO.

Prácticas recomendadas

  • En las nuevas, usa el conector BigtableIO, no CloudBigtableIO.

  • Crea perfiles de aplicación independientes para cada tipo de pipeline. Los perfiles de aplicación permiten obtener mejores métricas para diferenciar el tráfico entre las canalizaciones, tanto para ofrecer asistencia como para hacer un seguimiento del uso.

  • Monitoriza los nodos de Bigtable. Si experimentas cuellos de botella en el rendimiento, comprueba si los recursos, como la utilización de la CPU, están limitados en Bigtable. Para obtener más información, consulta Monitorización.

  • Por lo general, los tiempos de espera predeterminados están bien ajustados para la mayoría de las canalizaciones. Si parece que una canalización de streaming se bloquea al leer datos de Bigtable, prueba a llamar a withAttemptTimeout para ajustar el tiempo de espera de los intentos.

  • Te recomendamos que habilites el autoescalado de Bigtable o que cambies el tamaño del clúster de Bigtable para que se ajuste al tamaño de tus trabajos de Dataflow.

  • Te recomendamos que definas maxNumWorkers en la tarea de Dataflow para limitar la carga del clúster de Bigtable.

  • Si se realiza un procesamiento significativo en un elemento de Bigtable antes de una aleatorización, las llamadas a Bigtable pueden agotar el tiempo de espera. En ese caso, puedes llamar a withMaxBufferElementCount para almacenar elementos en el búfer. Este método convierte la operación de lectura de streaming a paginada, lo que evita el problema.

  • Si usas un solo clúster de Bigtable para las canalizaciones de streaming y por lotes, y el rendimiento se reduce en Bigtable, considera la posibilidad de configurar la replicación en el clúster. Después, separa las canalizaciones de procesamiento por lotes y de streaming para que lean de réplicas diferentes. Para obtener más información, consulta el artículo Replication overview (Descripción general de la replicación).

Siguientes pasos