En este documento de Framework de la arquitectura de Google Cloud, se proporcionan recomendaciones para optimizar el rendimiento de las cargas de trabajo analíticas en Google Cloud.
BigQuery
En esta sección, se proporcionan recomendaciones para ayudarte a optimizar el rendimiento de las consultas en BigQuery.
Optimiza el diseño de las consultas
El rendimiento de las consultas depende de factores como la cantidad de bytes que tus consultas y operaciones de lectura leen, y el volumen de datos que se pasan entre las ranuras. Para optimizar el rendimiento de las consultas en BigQuery, aplica las prácticas recomendadas que se describen en la siguiente documentación:
- Introducción a la optimización del rendimiento de consultas
- Administra datos de entrada y fuentes de datos
- Optimizar la comunicación entre ranuras
- Optimiza el procesamiento de las consultas
- Administra los resultados de las consultas
- Evita antipatrones de SQL
Define y usa vistas materializadas de forma eficiente
Para mejorar el rendimiento de las cargas de trabajo que usan consultas comunes y repetidas, puedes usar vistas materializadas. Existen límites para la cantidad de vistas materializadas que puedes crear. No crees una vista materializada separada para cada permutación de una consulta. En su lugar, define las vistas materializadas que puedes usar para varios patrones de consultas.
Mejora el rendimiento de JOIN
Puedes usar vistas materializadas para reducir el costo y la latencia de una consulta que realiza la agregación sobre un JOIN
.
Considera un caso en el que combinas una tabla de hechos grande con unas pocas tablas de dimensiones y, luego, realiza una agregación sobre la unión. Puede ser práctico reescribir la consulta para realizar primero la agregación en la tabla de hechos con claves externas como agrupamientos de claves.
Luego, combina el resultado con las tablas de dimensiones. Por último, realiza una agregación posterior.
Dataflow
En esta sección, se proporcionan recomendaciones para ayudarte a optimizar el rendimiento de las consultas de tus canalizaciones de Dataflow.
Cuando creas y, luego, implementas canalizaciones, puedes configurar parámetros de ejecución, como el tipo de máquina de Compute Engine que se debe usar para las VMs de trabajador de Dataflow. Para obtener más información, consulta Opciones de canalización.
Después de implementar las canalizaciones, Dataflow administra los recursos de Compute Engine y Cloud Storage que son necesarios para ejecutar los trabajos. Además, las siguientes características de Dataflow ayudan a optimizar el rendimiento de las canalizaciones:
- Paralelización: Dataflow particiona los datos de forma automática y distribuye el código de trabajador a las instancias de Compute Engine para el procesamiento paralelo. Para obtener más información, consulta Paralelización y distribución.
- Optimización: Dataflow usa el código de canalización para crear un grafo de ejecución que representa objetos PCollection y transformaciones en la canalización. Luego, optimiza el grafo para lograr el rendimiento y el uso de recursos más eficientes. Dataflow también optimiza de forma automática las operaciones que pueden ser costosas, como la agregación de datos. Para obtener más información, consulta Optimización de fusiones y Optimización de combinaciones.
- Ajuste automático: Dataflow optimiza los trabajos de forma dinámica mientras se ejecutan a través del uso de Ajuste de escala automático horizontal, Ajuste de escala automático vertical yRebalanceo dinámico del trabajo.
Puedes supervisar el rendimiento de las canalizaciones de Dataflow a través de la interfaz de supervisión basada en la Web o gcloud CLI de Dataflow.
Dataproc
En esta sección, se describen las prácticas recomendadas para optimizar el rendimiento de los clústeres de Dataproc.
Ajustar la escala automática del clúster
Para asegurarte de que los clústeres de Dataproc entreguen un rendimiento predecible, puedes habilitar el ajuste de escala automático. Dataproc usa métricas de memoria de Hadoop YARN y una política de ajuste de escala automático que defines para ajustar de forma automática la cantidad de VMs de trabajador en un clúster. Si deseas obtener más información para usar y configurar el ajuste de escala automático, consulta Clústeres con ajuste de escala automático.
Aprovisiona el almacenamiento adecuado
Elige una opción de almacenamiento adecuada para tu clúster de Dataproc según tus requisitos de rendimiento y costo:
- Usa Cloud Storage si necesitas un sistema de archivos compatible con Hadoop (HCFS) de bajo costo en el que los trabajos de Hadoop y Spark puedan leer y escribir con cambios mínimos. Los datos almacenados en Cloud Storage son persistentes y otros clúesteres y productos de Dataproc, como BigQuery, pueden acceder a ellos.
- Si necesitas un sistema de archivos distribuido de Hadoop (HDFS) de baja latencia para tu clúster de Dataproc, usa discos persistentes de Compute Engine conectados a los nodos trabajadores. Los datos almacenados en el almacenamiento HDFS son transitorios, y el costo de almacenamiento es mayor que la alternativa de Cloud Storage.
- Para obtener la ventaja de rendimiento de los discos persistentes de Compute Engine y los beneficios de costo y durabilidad de Cloud Storage, puedes combinar ambas opciones de almacenamiento. Por ejemplo, puedes almacenar tu conjunto de datos fuente y final en Cloud Storage y aprovisionar capacidad del HDFS limitada para los conjuntos de datos intermedios. Cuando decidas el tamaño y el tipo de los discos para el almacenamiento del HDFS, ten en cuenta las recomendaciones de la sección Discos persistentes y SSD locales.
Reduce la latencia cuando usas Cloud Storage
Para reducir la latencia cuando accedes a los datos almacenados en Cloud Storage, te recomendamos lo siguiente:
- Crea tu bucket de Cloud Storage en la misma región que el clúster de Dataproc.
- Inhabilita
auto.purge
para las tablas administradas por Apache Hive almacenadas en Cloud Storage. - Cuando uses Spark SQL, considera crear clústeres de Dataproc con las últimas versiones de imágenes disponibles. Con la versión más reciente, puedes evitar problemas de rendimiento que podrían permanecer en versiones anteriores, como el rendimiento lento de
INSERT OVERWRITE
en Spark 2.x. - Para minimizar la posibilidad de escribir muchos archivos con tamaños diferentes o pequeños en Cloud Storage, puedes configurar los parámetros de Spark SQL
spark.sql.shuffle.partitions
yspark.default.parallelism
. el parámetro de Hadoopmapreduce.job.reduces
.
Supervisa y ajusta la carga y la capacidad de almacenamiento
Los discos persistentes conectados a los nodos trabajadores en un clúster de Dataproc contienen datos Shuffle. Para obtener un rendimiento óptimo, los nodos trabajadores necesitan suficiente espacio en el disco. Si los nodos no tienen suficiente espacio en el disco, los nodos se marcan como UNHEALTHY
en el registro YARN NodeManager. Si se produce este problema, aumenta el tamaño del disco para los nodos afectados o ejecuta menos trabajos de forma simultánea.
Habilita EFM
Cuando se quitan los nodos trabajadores de un clúster de Dataproc en ejecución, por ejemplo, debido a un escalamiento descendente o de interrupción, es posible que se pierdan los datos aleatorios. Para minimizar los retrasos de trabajo en esas situaciones, te recomendamos que habilites la función Modo de flexibilidad mejorada (EFM) para clústeres que usan VMs interrumpibles o que solo ajuste la escala de forma automática del grupo de trabajadores secundarios.
¿Qué sigue?
Revisa las prácticas recomendadas para optimizar el rendimiento de los recursos de procesamiento, almacenamiento, herramientas de redes y bases de datos:
- Optimiza el rendimiento del procesamiento.
- Optimiza el rendimiento del almacenamiento.
- Optimiza el rendimiento de las herramientas de redes.
- Optimiza el rendimiento de la base de datos.