Utiliser Streaming Engine pour les jobs par flux

La fonctionnalité Streaming Engine de Dataflow transfère l'exécution du pipeline depuis les machines virtuelles (VM) de nœud de calcul vers le backend du service Dataflow. Lorsque vous n'utilisez pas Streaming Engine pour les jobs de traitement par flux, l'exécuteur Dataflow exécute les étapes de votre pipeline de traitement par flux entièrement sur les VM de nœud de calcul, ce qui consomme le processeur, la mémoire et le stockage de disque persistant du nœud de calcul.

Streaming Engine est activé par défaut pour les pipelines suivants :

  • Pipelines de traitement par flux utilisant le SDK Apache Beam pour Python version 2.21.0 ou ultérieure et Python 3.
  • Pipelines de traitement par flux utilisant le SDK Apache Beam pour Go version 2.33.0 ou ultérieure.

Pour en savoir plus sur la mise en œuvre de Streaming Engine, consultez la page Streaming Engine : modèle d'exécution pour le traitement de données hautement évolutif et à faible latence.

Avantages

Le modèle Streaming Engine présente les avantages suivants :

  • Réduction de l'utilisation des ressources de processeur, de mémoire et de disques persistants sur les VM de nœud de calcul Streaming Engine fonctionne mieux avec des types de machines plus petits (n1-standard-2 plutôt que n1-standard-4). Il ne nécessite pas de disque persistant en dehors d'un petit disque de démarrage pour le nœud de calcul, ce qui réduit la consommation de ressources et de quotas.
  • Autoscaling horizontal plus réactif en réponse aux variations du volume de données entrantes. Streaming Engine offre un scaling plus fluide et plus précis des nœuds de calcul.
  • Meilleure compatibilité : vous n'avez pas besoin de redéployer vos pipelines pour appliquer les mises à jour du service.

La majeure partie de la réduction des ressources de calcul est due au déchargement du travail sur le service Dataflow. Pour cette raison, des frais sont appliqués à l'utilisation de Streaming Engine.

Compatibilité et limites

  • Pour le SDK Java, Streaming Engine nécessite le SDK Apache Beam en version 2.10.0 ou ultérieure.
  • Pour le SDK Python, Streaming Engine nécessite le SDK Apache Beam en version 2.16.0 ou ultérieure.
  • Pour le SDK Go, Streaming Engine nécessite le SDK Apache Beam en version 2.33.0 ou ultérieure.
  • Vous ne pouvez pas mettre à jour des pipelines en cours d'exécution pour leur faire utiliser Streaming Engine. Si votre pipeline est actuellement exécuté en production, et que vous souhaitez passer d'une utilisation sans Streaming Engine à une utilisation avec Streaming Engine, arrêtez le pipeline à l'aide de l'option Drainer de Dataflow. Ensuite, spécifiez le paramètre Streaming Engine et relancez l'exécution de votre pipeline.
  • Pour les tâches qui utilisent Streaming Engine, les données d'entrée agrégées pour les fenêtres ouvertes sont limitées à 60 Go par clé. Les données d'entrée agrégées incluent les éléments mis en mémoire tampon et l'état personnalisé. Lorsqu'un pipeline dépasse cette limite, il se bloque avec un temps de latence élevé du système, mais aucune erreur n'apparaît dans les fichiers journaux externes. Nous vous recommandons d'éviter les conceptions de pipeline qui donnent lieu à des clés volumineuses. Pour en savoir plus, consultez la page Écrire des pipelines Dataflow en tenant compte de l'évolutivité.
  • Prend en charge les clés de chiffrement gérées par le client (CMEK)

Utiliser Streaming Engine

Cette fonctionnalité est disponible dans toutes les régions où Dataflow est disponible. Pour afficher les emplacements disponibles, consultez la page Emplacements Dataflow.

Java

Streaming Engine nécessite le SDK Apache Beam pour Java en version 2.10.0 ou ultérieure.

Pour utiliser Streaming Engine pour vos pipelines de streaming, spécifiez le paramètre suivant :

  • --enableStreamingEngine si vous utilisez le SDK Apache Beam pour Java en version 2.11.0 ou ultérieure.
  • --experiments=enable_streaming_engine si vous utilisez le SDK Apache Beam pour Java en version 2.10.0.

Si vous utilisez Dataflow Streaming Engine pour votre pipeline, ne spécifiez pas le paramètre --zone. Au lieu de cela, spécifiez le paramètre --region et définissez sa valeur sur une région disponible. Dataflow sélectionne automatiquement la zone dans la région spécifiée. Si vous spécifiez le paramètre --zone en le définissant sur une zone en dehors des régions disponibles, Dataflow signale une erreur.

Streaming Engine fonctionne mieux avec des types de machines plus petits pour les nœuds de calcul. Utilisez le type de tâche pour déterminer s'il convient d'utiliser un type de machine de nœud de calcul à haute capacité de mémoire. Nous vous recommandons d'utiliser les types de machines --workerMachineType=n1-standard-2 et --workerMachineType=n1-highmem-2. Vous pouvez également définir --diskSizeGb=30, car Streaming Engine n'a besoin d'espace que pour l'image de démarrage du nœud de calcul et les journaux locaux. Ces valeurs constituent les valeurs par défaut.

Python

Streaming Engine nécessite le SDK Apache Beam pour Python en version 2.16.0 ou ultérieure.

Streaming Engine est activé par défaut pour les nouveaux pipelines de traitement par flux Dataflow lorsque les conditions suivantes sont remplies :

  • Les pipelines utilisent le SDK Apache Beam pour Python en version 2.21.0 ou ultérieure et Python 3.
  • Les clés de chiffrement gérées par le client ne sont pas utilisées.
  • Les nœuds de calcul Dataflow se trouvent dans la même région que votre job Dataflow.

Dans le SDK Python version 2.45.0 ou ultérieure, vous ne pouvez pas désactiver Streaming Engine pour les pipelines de traitement par flux. Dans le SDK Python version 2.44.0 ou antérieure, spécifiez le paramètre suivant pour désactiver Streaming Engine :

--experiments=disable_streaming_engine

Si vous utilisez Python 2, pour activer Streaming Engine, spécifiez le paramètre suivant :

--enable_streaming_engine

Si vous utilisez Dataflow Streaming Engine dans votre pipeline, ne spécifiez pas le paramètre --zone. Au lieu de cela, spécifiez le paramètre --region et définissez sa valeur sur une région disponible. Dataflow sélectionne automatiquement la zone dans la région spécifiée. Si vous spécifiez le paramètre --zone en le définissant sur une zone en dehors des régions disponibles, Dataflow signale une erreur.

Streaming Engine fonctionne mieux avec des types de machines plus petits pour les nœuds de calcul. Utilisez le type de tâche pour déterminer s'il convient d'utiliser un type de machine de nœud de calcul à haute capacité de mémoire. Nous vous recommandons d'utiliser les types de machines --workerMachineType=n1-standard-2 et --workerMachineType=n1-highmem-2. Vous pouvez également définir --disk_size_gb=30, car Streaming Engine n'a besoin d'espace que pour l'image de démarrage du nœud de calcul et les journaux locaux. Ces valeurs constituent les valeurs par défaut.

Go

Streaming Engine nécessite le SDK Apache Beam pour Go en version 2.33.0 ou ultérieure.

Streaming Engine est activé par défaut pour les nouveaux pipelines de traitement par flux Dataflow utilisant le SDK Apache Beam pour Go.

Si vous souhaitez désactiver Streaming Engine dans votre pipeline de traitement par flux Go, spécifiez le paramètre suivant. Ce paramètre doit être spécifié à chaque fois que vous souhaitez désactiver Streaming Engine.

--experiments=disable_streaming_engine

Si vous utilisez Dataflow Streaming Engine dans votre pipeline, ne spécifiez pas le paramètre --zone. Au lieu de cela, spécifiez le paramètre --region et définissez sa valeur sur une région disponible. Dataflow sélectionne automatiquement la zone dans la région spécifiée. Si vous spécifiez le paramètre --zone en le définissant sur une zone en dehors des régions disponibles, Dataflow signale une erreur.

Streaming Engine fonctionne mieux avec des types de machines plus petits pour les nœuds de calcul. Utilisez le type de tâche pour déterminer s'il convient d'utiliser un type de machine de nœud de calcul à haute capacité de mémoire. Nous vous recommandons d'utiliser les types de machines --workerMachineType=n1-standard-2 et --workerMachineType=n1-highmem-2. Vous pouvez également définir --disk_size_gb=30, car Streaming Engine n'a besoin d'espace que pour l'image de démarrage du nœud de calcul et les journaux locaux. Ces valeurs constituent les valeurs par défaut.

gcloud CLI

Lorsque vous exécutez votre pipeline à l'aide de la commande gcloud dataflow jobs run ou de la commande gcloud dataflow flex-template run, pour activer Streaming Engine, utilisez l'option suivante :

--enable-streaming-engine

Pour désactiver Streaming Engine, utilisez l'option suivante :

--additional-experiments=disable_streaming_engine

REST

Lorsque vous exécutez votre pipeline à l'aide de la méthode projects.locations.jobs.create dans l'API REST, utilisez la ressource Job pour activer ou désactiver Streaming Engine. Pour activer Streaming Engine, sous environment, définissez le champ experiments sur enable_streaming_engine :

"environment": {
          "experiments": "enable_streaming_engine"
      }

Pour désactiver Streaming Engine, sous environment, définissez le champ experiments sur disable_streaming_engine :

"environment": {
          "experiments": "disable_streaming_engine"
      }

Tarification

Dataflow Streaming Engine propose un modèle de facturation basé sur les ressources dans lequel vous êtes facturé pour l'ensemble des ressources utilisées par votre job. Avec la facturation basée sur les ressources, les ressources Streaming Engine utilisées par votre job sont mesurées et quantifiées en unités de calcul Streaming Engine. Vous êtes facturé pour le processeur et la mémoire des nœuds de calcul et pour les unités de calcul Streaming Engine.

Utiliser la facturation basée sur les ressources

Pour utiliser la facturation basée sur les ressources, lorsque vous démarrez ou mettez à jour votre job, incluez l'option de service Dataflow suivante.

Java

--dataflowServiceOptions=enable_streaming_engine_resource_based_billing

Python

--dataflow_service_options=enable_streaming_engine_resource_based_billing

Go

--dataflow_service_options=enable_streaming_engine_resource_based_billing

Facturation par données traitées (ancienne version)

À moins que vous n'activiez la facturation basée sur les ressources, vos jobs sont facturés à l'aide de l'ancien mode de facturation par données traitées.

Vérifier le modèle de facturation

À moins que vous n'utilisiez Dataflow Prime, lorsque vous avez des jobs qui utilisent la facturation basée sur les ressources, la facture inclut le SKU Streaming Engine Compute Unit. Lorsque vous avez des jobs qui utilisent la facturation par données traitées, la facture inclut le SKU Streaming Engine data processed. Si certains de vos jobs utilisent la facturation basée sur les ressources et d'autres qui utilisent la facturation par données traitées, la facture inclut les deux SKU.

Lorsque vous utilisez Dataflow Prime avec la facturation basée sur les ressources, le SKU Unité de calcul des données (DCU) est utilisé.

Pour connaître le modèle de tarification utilisé par votre job, sélectionnez votre job dans l'interface de surveillance de Dataflow. Si votre job utilise une facturation basée sur les ressources, le panneau latéral Job info inclut un champ Unités de calcul Streaming Engine.

Si vous avez des questions concernant votre facturation, contactez le service Cloud Customer Care.