Quotas de requêtes

Le service Dataflow gère entièrement les ressources dans Google Cloud, job par job. Cela inclut le démarrage et l'arrêt d'instances Compute Engine (parfois appelées workers ou VMs) ainsi que l'accès aux buckets Cloud Storage de votre projet pour les E/S et la préparation de fichiers temporaires. Toutefois, si votre pipeline interagit avec des technologies de stockage de données Google Cloud telles que BigQuery ou Pub/Sub, vous devez gérer les ressources et les quotas de ces services.

Dataflow utilise un emplacement fourni par l'utilisateur dans Cloud Storage spécifiquement pour la préparation des fichiers. Cet emplacement est sous votre contrôle, et vous devez vous assurer que sa durée de vie est maintenue aussi longtemps que vos jobs lisent les données qu'il contient. Vous pouvez réutiliser un même emplacement de préparation pour plusieurs exécutions de jobs, car la mise en cache intégrée du SDK peut accélérer le démarrage de vos jobs.

Jobs

Vous pouvez exécuter jusqu'à 25 jobs Dataflow simultanés par projet Google Cloud. Toutefois, cette limite peut être augmentée en contactant l'assistance Google Cloud. Pour en savoir plus, consultez la page consacrée aux quotas.

Le service Dataflow est actuellement limité au traitement des requêtes de job JSON d'une taille inférieure ou égale à 20 Mo. La taille de la requête de job est spécifiquement liée à la représentation JSON de votre pipeline. Plus le pipeline est grand, plus la requête est importante.

Pour estimer la taille de la requête JSON correspondant à votre pipeline, exécutez celui-ci avec l'option suivante :

Java

--dataflowJobFile=<path to output file>

Python

--dataflow_job_file=<path to output file>

Go

L'estimation de la taille de la charge utile JSON d'un job avec un indicateur n'est actuellement pas disponible dans Go.

Cette commande écrit une représentation JSON de votre job dans un fichier. La taille du fichier sérialisé représente une estimation fiable de la taille de la requête. La taille réelle est toutefois légèrement plus importante en raison de la présence d'informations supplémentaires incluses dans la requête.

Pour plus d'informations, consultez la page de dépannage sur l'erreur 413 Corps de requête trop long / La taille de la représentation JSON sérialisée du pipeline dépasse la limite autorisée".

De plus, la taille du graphique de votre job ne doit pas dépasser 10 Mo. Pour plus d'informations, consultez la page de dépannage concernant l'erreur "Le graphique du job est trop grand. Veuillez réessayer avec un graphique de job plus petit, ou diviser votre job en deux jobs plus petits (ou plus)".

Nœuds de calcul

Le service Dataflow autorise actuellement un maximum de 1 000 instances Compute Engine par job. Pour les jobs par lots, le type de machine par défaut est n1-standard-1. Pour les jobs en streaming, le type de machine par défaut pour les jobs compatibles Streaming Engine est n1-standard-2 et le type de machine par défaut pour les jobs non Streaming Engine est n1-standard-4. Lorsque vous utilisez les types de machines par défaut, le service Dataflow peut allouer jusqu'à 4 000 cœurs par job. Si vous avez besoin de davantage de cœurs pour votre job, vous pouvez sélectionner un type de machine plus grand.

Vous ne devez pas essayer de gérer votre groupe d'instances géré Compute Engine ou d'interagir directement avec lui. Le service Dataflow s'en charge pour vous. La modification manuelle des ressources Compute Engine associées à votre job Dataflow n'est pas acceptée.

Vous pouvez utiliser toutes les familles de types de machines Compute Engine disponibles, ainsi que des types de machines personnalisés. Pour des résultats optimaux, utilisez des types de machine n1. Les types de machines à cœur partagé, tels que les nœuds de calcul des séries f1 et g1, ne sont pas pris en charge dans le cadre du contrat de niveau de service de Dataflow.

Pour allouer de la mémoire supplémentaire par thread de calcul, utilisez un type de machine personnalisé avec extension de mémoire. Par exemple, custom-2-15360-ext est une machine de type n1 avec 2 processeurs et 15 Go de mémoire. Dataflow prend en compte le nombre de processeurs d'une machine pour déterminer le nombre de threads de calcul par VM de nœud de calcul. Si votre pipeline traite des tâches qui utilisent beaucoup de mémoire, un type de machine personnalisé avec extension de mémoire peut offrir plus de mémoire par thread de calcul. Pour plus d'informations, consultez la section Créer une instance de VM personnalisée.

L'utilisation de Dataflow est facturée en fonction du nombre de processeurs virtuels et de Go de mémoire dans les nœuds de calcul. La facturation ne dépend pas de la famille du type de machine. Vous pouvez spécifier un type de machine pour votre pipeline en définissant le paramètre d'exécution approprié au moment de la création du pipeline.

Java

Pour modifier le type de machine, définissez l'option --workerMachineType.

Python

Pour modifier le type de machine, définissez l'option --worker_machine_type.

Go

Pour modifier le type de machine, définissez l'option ‑‑worker_machine_type.

Quota de ressources

Le service Dataflow vérifie que votre projet Google Cloud dispose du quota de ressources Compute Engine requis pour exécuter votre job, à la fois pour démarrer le job et pour le faire évoluer vers le nombre maximal d'instances de nœuds de calcul. Votre job ne peut pas démarrer si le quota de ressources disponible est insuffisant.

Si votre job Dataflow déploie des machines virtuelles Compute Engine sous la forme d'un groupe d'instances géré, vous devez vous assurer que votre projet respecte certaines exigences de quota supplémentaires. Plus précisément, votre projet doit disposer de l'un des types de quotas suivants pour chaque job Dataflow simultané que vous souhaitez exécuter :

  • Un groupe d'instances par job
  • Un groupe d'instances géré par job
  • Un modèle d'instance par job

Attention : La modification manuelle du modèle d'instance ou du groupe d'instances géré de votre job Dataflow n'est pas recommandée, ni acceptée. Utilisez plutôt les options de configuration du pipeline de Dataflow.

La fonctionnalité d'autoscaling horizontal de Dataflow est limitée par le quota Compute Engine disponible de votre projet. Si votre job possède un quota suffisant au démarrage, mais qu'un autre job utilise le reste du quota disponible de votre projet, le premier job est exécuté, mais ne peut pas être entièrement mis à l'échelle.

Cependant, le service Dataflow ne gère pas les augmentations de quota pour les jobs dépassant les quotas de ressources de votre projet. Il vous incombe d'effectuer toutes les demandes de quotas de ressources supplémentaires nécessaires. Pour cela, vous pouvez utiliser la console Google Cloud.

Adresses IP

Par défaut, Cloud Dataflow attribue des adresses IP publiques et privées aux VM de nœud de calcul. Une adresse IP publique répond à l'un des critères d'accès à Internet, mais elle est également comptabilisée dans votre quota d'adresses IP externes.

Si vos VM de nœud de calcul n'ont pas besoin d'accéder à l'Internet public, envisagez d'utiliser uniquement des adresses IP internes, qui ne sont pas comptabilisées dans votre quota d'adresses externes. Pour en savoir plus sur la configuration des adresses IP, consultez les ressources suivantes :

Nœuds de calcul inactifs

Si les nœuds de calcul d'un job donné ne présentent pas une activité suffisante sur une période d'une heure, le job échoue. L'inactivité des nœuds de calcul peut résulter de problèmes de gestion des dépendances. Par exemple, si un nœud de calcul rencontre un problème lors de l'installation de dépendances pour une image de conteneur personnalisée, le démarrage ou la progression du nœud peut échouer. L'absence de progression peut alors entraîner l'échec du job. Pour en savoir plus, consultez les sections suivantes :

Ressources de disques persistants

Le service Dataflow est limité à 15 disques persistants par instance de nœud de calcul lors de l'exécution d'une tâche de traitement par flux. Chaque disque persistant est local sur une machine virtuelle Compute Engine individuelle. Votre job ne peut pas comporter plus de nœuds de calcul que de disques persistants. L'allocation minimale de ressources est un ratio de 1:1 entre les nœuds de calcul et les disques.

Les tâches utilisant Streaming Engine nécessitent des disques de démarrage de 30 Go. Les tâches qui utilisent Dataflow Shuffle nécessitent des disques de démarrage de 25 Go. Pour les jobs qui n'utilisent pas ces offres, la taille par défaut de chaque disque persistant est de 250 Go en mode de traitement par lot et de 400 Go en mode de traitement par flux.

Locations

Par défaut, le service Dataflow déploie les ressources Compute Engine dans la zone us-central1-f de la région us-central1. Vous pouvez ignorer ce comportement en spécifiant le paramètre --region. Si vous devez utiliser une zone spécifique pour vos ressources, utilisez le paramètre --zone lors de la création de votre pipeline. Cependant, nous vous recommandons de ne spécifier que la région, mais pas la zone. Cela permet au service Dataflow de sélectionner automatiquement la meilleure zone de la région en fonction de la capacité disponible de la zone au moment de la demande de création de job. Pour en savoir plus, consultez la documentation sur les régions Dataflow.