Ce document du framework d'architecture de Google Cloud fournit des recommandations pour vous aider à optimiser les performances de vos charges de travail d'analyse dans Google Cloud.
BigQuery
Cette section fournit des recommandations pour vous aider à optimiser les performances des requêtes dans BigQuery.
Optimiser la conception des requêtes
Les performances des requêtes dépendent de facteurs tels que le nombre d'octets lus et écrits par vos requêtes ainsi que le volume de données transmis entre les emplacements. Pour optimiser les performances de vos requêtes dans BigQuery, suivez les bonnes pratiques décrites dans la documentation suivante :
- Présentation de l'optimisation des performances des requêtes
- Gérer les données d'entrée et les sources de données
- Optimiser la communication entre les emplacements
- Optimiser le calcul des requêtes
- Gérer les données de sortie de requêtes
- Éviter les antimodèles SQL
Définir et utiliser efficacement les vues matérialisées
Pour améliorer les performances des charges de travail utilisant des requêtes courantes et répétées, vous pouvez utiliser des vues matérialisées. Le nombre de vues matérialisées que vous pouvez créer est limité. Ne créez pas de vue matérialisée distincte pour chaque permutation d'une requête. Définissez plutôt des vues matérialisées que vous pouvez utiliser pour plusieurs modèles de requêtes.
Performances améliorées pour l'opération JOIN
Vous pouvez utiliser des vues matérialisées pour réduire le coût et la latence d'une requête qui effectue une agrégation en plus d'une opération JOIN
.
Imaginons que vous joignez une grande table de faits à plusieurs tables de dimensions plus petites, puis que vous effectuez une agrégation en plus de la jointure. Il peut s'avérer pratique de réécrire la requête pour effectuer d'abord l'agrégation sur la table de faits, en utilisant des clés étrangères comme clés de regroupement.
Ensuite, joignez le résultat de l'opération aux tables de dimensions. Pour finir, effectuez une post-agrégation.
Dataflow
Cette section fournit des recommandations pour vous aider à optimiser les performances des requêtes de vos pipelines Dataflow.
Lorsque vous créez et déployez des pipelines, vous pouvez configurer des paramètres d'exécution, tels que le type de machine Compute Engine à utiliser pour les VM de nœuds de calcul Dataflow. Pour en savoir plus, consultez la section Options de pipeline.
Une fois les pipelines déployés, Dataflow gère les ressources Compute Engine et Cloud Storage nécessaires à l'exécution de vos tâches. En outre, les fonctionnalités suivantes de Dataflow aident à optimiser les performances des pipelines :
- Chargement en parallèle : Dataflow partitionne automatiquement vos données et distribue votre code de nœud de calcul aux instances Compute Engine pour un traitement parallèle. Pour en savoir plus, consultez la section Parallélisation et distribution.
- Optimisation : Dataflow utilise votre code de pipeline pour créer un graphique d'exécution représentant les objets PCollection et les transformations dans le pipeline. Il optimise ensuite le graphique afin d'obtenir des performances et une utilisation des ressources optimales. Le service optimise également automatiquement les opérations potentiellement coûteuses, telles que les agrégations de données. Pour en savoir plus, consultez les sections Optimisation de la fusion et Combiner l'optimisation.
- Réglages automatiques : Dataflow optimise dynamiquement les tâches pendant leur exécution en utilisant l'Autoscaling horizontal, l'Autoscaling vertical et le Rééquilibrage dynamique des tâches.
Vous pouvez surveiller les performances des pipelines Dataflow en utilisant l'interface de surveillance Web ou la gcloud CLI de Dataflow.
Dataproc
Cette section décrit les bonnes pratiques relatives à l'optimisation des performances de vos clusters Dataproc.
Effectuer l'autoscaling des clusters
Pour vous assurer que vos clusters Dataproc offrent des performances prévisibles, vous pouvez activer l'autoscaling. Dataproc se sert des métriques de mémoire Hadoop YARN et d'une règle d'autoscaling que vous définissez pour ajuster automatiquement le nombre de VM de nœud de calcul dans un cluster. Pour en savoir plus sur l'utilisation et la configuration de l'autoscaling, consultez la page Procéder à l'autoscaling des clusters.
Provisionner le stockage approprié
Choisissez une option de stockage appropriée pour votre cluster Dataproc en fonction de vos exigences en termes de performances et de coûts :
- Si vous avez besoin d'un système de fichiers (HCFS) économique et compatible avec Hadoop, dans lequel les tâches Hadoop et Spark peuvent lire et écrire avec des modifications minimales, utilisez Cloud Storage. Les données stockées dans Cloud Storage sont persistantes et sont accessibles aux autres clusters Dataproc ainsi qu'à d'autres produits comme BigQuery.
- Si vous avez besoin d'un système de fichiers distribué Hadoop (HDFS, Hadoop Distributed File System) à faible latence pour votre cluster Dataproc, utilisez des disques persistants Compute Engine associés aux nœuds de calcul. Les données stockées dans l'espace de stockage HDFS sont temporaires et le coût de stockage est supérieur à celui de l'option Cloud Storage.
- Pour bénéficier des avantages de performances des disques persistants Compute Engine et des avantages de Cloud Storage en termes de coût et de durabilité, vous pouvez combiner les deux options de stockage. Par exemple, vous pouvez stocker vos ensembles de données source et final dans Cloud Storage, et provisionner une capacité HDFS limitée pour les ensembles de données intermédiaires. Lorsque vous décidez de la taille et du type des disques pour le stockage HDFS, tenez compte des recommandations de la section Disques persistants et disques SSD locaux.
Réduire la latence lors de l'utilisation de Cloud Storage
Pour réduire la latence lorsque vous accédez à des données stockées dans Cloud Storage, nous vous recommandons de procéder comme suit :
- Créez votre bucket Cloud Storage dans la même région que le cluster Dataproc.
- Désactivez
auto.purge
pour les tables gérées par Apache Hive qui sont stockées dans Cloud Storage. - Si vous utilisez Spark SQL, envisagez de créer des clusters Dataproc avec les dernières versions d'images disponibles. En utilisant la dernière version, vous pouvez éviter les problèmes de performances toujours présents dans des versions plus anciennes, tels que les performances ralenties de
INSERT OVERWRITE
dans Spark 2.x. - Pour réduire le risque d'écrire de nombreux fichiers de taille variable ou faible dans Cloud Storage, vous pouvez configurer les paramètres Spark SQL
spark.sql.shuffle.partitions
etspark.default.parallelism
, ou le paramètre Hadoopmapreduce.job.reduces
.
Surveiller et ajuster la charge et la capacité de stockage
Les disques persistants associés aux nœuds de calcul d'un cluster Dataproc contiennent des données de brassage. Pour atteindre des performances optimales, les nœuds de calcul nécessitent un espace disque suffisant. Si les nœuds ne disposent pas d'un espace disque suffisant, ils sont marqués comme UNHEALTHY
dans le journal de YARN NodeManager. Si ce problème survient, augmentez la taille de disque pour les nœuds concernés ou exécutez moins de tâches simultanément.
Activer l'EFM
Lorsque des nœuds de calcul sont supprimés d'un cluster Dataproc en cours d'exécution, par exemple en raison d'un scaling à la baisse ou d'une préemption, les données de brassage peuvent être perdues. Pour minimiser les retards de tâche dans de tels scénarios, nous vous recommandons d'activer le Mode de flexibilité améliorée (EFM) pour les clusters qui utilisent des VM préemptives ou qui n'appliquent un autoscaling qu'au groupe de nœuds de travail secondaire.
Étapes suivantes
Passez en revue les bonnes pratiques pour optimiser les performances de vos ressources de calcul, de stockage, de mise en réseau et de base de données :
- Optimiser les performances de calcul.
- Optimiser les performances de stockage.
- Optimiser les performances du réseau.
- Optimiser les performances de la base de données.