Environnements de traitement

Earth Engine propose différents environnements de traitement des données: interactif et par lot. Ces deux environnements (ou "sphères") gèrent différents types de requêtes et présentent des caractéristiques de performances très différentes. Il est donc important de savoir quand et comment les utiliser.

Environnement interactif

Également appelée pile "synchrone" ou "en ligne", cette pile est optimisée pour répondre aux petites requêtes qui se terminent rapidement (les réponses sont limitées à des dizaines de mégaoctets de données et doivent être traitées en cinq minutes). Vous pouvez envoyer de nombreuses requêtes en parallèle, jusqu'aux limites de quota.

Points de terminaison

L'environnement interactif est composé de différents points de terminaison d'API: standard et haut volume.

Point de terminaison standard

Le point de terminaison standard convient à la plupart des utilisations humaines. C'est ce qui alimente l'éditeur de code et les applications Earth Engine. Plus précisément, ce point de terminaison est le plus adapté aux applications sensibles à la latence qui impliquent un faible volume de requêtes non programmatiques simultanées.

Point de terminaison à fort volume

Le point de terminaison à fort volume est conçu pour gérer un volume de requêtes plus élevé en parallèle que le point de terminaison standard. Les principales différences qui les distinguent sont décrites ci-dessous.

  • Latence plus élevée: le point de terminaison à fort volume a une latence moyenne plus élevée par requête.
  • Moins de mise en cache: elle fournit moins de mise en cache des résultats intermédiaires. Par conséquent, les requêtes complexes peuvent nécessiter plus de temps de calcul.
  • Idéal pour les requêtes automatisées de petite envergure: le point de terminaison à fort volume excelle dans la gestion de nombreuses requêtes programmatiques, mais il est plus adapté aux requêtes simples qui ne nécessitent pas d'agrégation (comme l'extraction de tuiles à partir d'images prédéfinies).

Pour les analyses complexes qui nécessitent un mise en cache efficace, le point de terminaison de l'API standard peut être préférable. Le point de terminaison à fort volume est optimisé pour les tâches à haut débit et à faible calcul. Les requêtes complexes nécessitent généralement plus de temps EECU lorsque vous utilisez le point de terminaison à fort volume que dans le point de terminaison en ligne standard.

Utilisation du point de terminaison à fort volume

Client Python

Lorsque vous initialisez la bibliothèque earthengine, transmettez un paramètre opt_url et définissez-le sur https://earthengine-highvolume.googleapis.com. Comme toujours, veillez également à transmettre les identifiants appropriés et à spécifier le projet Cloud. Exemple :

ee.Initialize(
    credentials=credentials,
    project='my-project',
    opt_url='https://earthengine-highvolume.googleapis.com'
)

Client JavaScript

Lorsque vous initialisez la bibliothèque earthengine à l'aide de ee.initialize(), transmettez https://earthengine-highvolume.googleapis.com pour le premier paramètre.

API REST

Dirigez vos requêtes REST vers https://earthengine-highvolume.googleapis.com (au lieu de https://earthengine.googleapis.com, comme indiqué dans le guide de démarrage rapide de l'API REST, par exemple).

Environnement de traitement par lot

Également appelé pile "asynchrone" ou "hors connexion", cet environnement est optimisé pour le traitement parallèle à haute latence de grandes quantités de données. Les requêtes sont envoyées en tant que tâches aux points de terminaison de traitement par lot, généralement en appelant des fonctions d'import ou d'exportation de données (par exemple, Export.* et ee.batch.*) à partir des bibliothèques clientes Earth Engine. Chaque tâche de lot a une durée de vie maximale de dix jours. Chaque projet accepte jusqu'à 3 000 tâches en attente, mais chaque utilisateur est limité à un petit nombre de tâches exécutées simultanément.

Cycle de vie des tâches

Les tâches sont envoyées dans une file d'attente et triées par priorité (la plus élevée en premier) et par heure d'envoi (la plus ancienne en premier). Les tâches passent de l'état SUBMITTED (en file d'attente) à l'état RUNNING lorsqu'elles sont attribuées à un processeur par lot. Chaque processeur est chargé d'orchestrer un nombre variable de workers de lot pour exécuter le calcul et générer les résultats de la tâche. Le nombre de nœuds de calcul pour une tâche est déterminé par la capacité du service EE à paralléliser la tâche et n'est pas configurable par l'utilisateur.

Lorsque vous utilisez un projet Cloud, les tâches sont visibles par toute personne disposant de l'autorisation de lister les tâches au niveau du projet. Si le projet est enregistré pour un accès payant à Earth Engine, les tâches sont organisées dans une file d'attente pour l'ensemble du projet. Si le projet est enregistré pour un accès non payant (recherche), les tâches sont planifiées indépendamment pour chaque utilisateur, mais restent visibles par tous les utilisateurs du projet.

Les tâches sont effectuées avec succès lorsqu'elles créent les artefacts nécessaires (éléments Earth Engine, fichiers dans Google Cloud Storage, etc.).

Gestion des tâches

Vous pouvez afficher et annuler les tâches à l'aide des interfaces suivantes:

Échecs de tâches

Si une tâche échoue pour une raison qui ne sera pas résolue en réessayant (par exemple, les données ne sont pas valides), la tâche sera marquée comme FAILED et ne sera pas exécutée à nouveau.

Si une tâche échoue pour une raison pouvant être intermittente (par exemple, si elle a expiré lors de l'exécution d'un calcul), Earth Engine tente automatiquement de la réessayer et de renseigner le champ retries. Les tâches peuvent échouer jusqu'à cinq fois. L'échec final entraîne le marquage de l'ensemble de la tâche comme FAILED.

ID de tâche

Chaque tâche possède un ID alphanumérique au format 3DNU363IM57LNU4SDTMB6I33. Vous pouvez les consulter ou les obtenir via nos interfaces de gestion des tâches. Si vous démarrez des tâches de manière programmatique, vous obtenez l'ID de la tâche à partir de ee.data.newTaskId. Lorsque vous demandez de l'aide pour déboguer une tâche d'exportation ou d'ingestion, fournissez cet ID de tâche sous forme de chaîne copiable (et non sous forme de capture d'écran).

Liste des états des tâches

Les tâches peuvent avoir les valeurs state suivantes:

  • UNSUBMITTED, toujours en attente sur le client
  • READY, en file d'attente sur le serveur
  • RUNNING, en cours d'exécution
  • COMPLETED, terminées
  • FAILED, échec
  • CANCEL_REQUESTED, toujours en cours d'exécution, mais dont l'annulation a été demandée (c'est-à-dire qu'il n'est pas garanti que la tâche sera annulée)
  • CANCELLED, annulé par le propriétaire

Priorité de la tâche

La priorité des tâches est un mécanisme permettant de contrôler l'ordre des tâches dans la file d'attente. Les tâches de priorité plus élevée sont planifiées avant les autres tâches en attente de priorité inférieure, quel que soit le moment de leur envoi. La priorité de tâche par défaut est de 100.

La possibilité de définir d'autres priorités (plus élevées ou plus faibles) sur les tâches d'exportation n'est disponible que pour les utilisateurs de projets enregistrés pour un accès payant à Earth Engine. Modifier la priorité d'une tâche d'exportation n'a aucune incidence sur la planification de celle-ci par rapport aux tâches d'importation, car les deux types de tâches sont planifiés séparément.

Exemple: utiliser des priorités de tâche

Prenons la liste de tâches suivante, où les tâches 1 à 5 sont envoyées dans l'ordre naturel avec la priorité par défaut. Ils s'exécutent dans l'ordre dans lequel ils ont été envoyés, car les priorités sont toutes les mêmes. Étant donné que deux emplacements de traitement par lot sont disponibles pour ce projet, deux s'exécutent simultanément (le premier et le deuxième envoyés).

Task name           State      Priority
---------------------------------------
MyDefaultTask5      READY      100
MyDefaultTask4      READY      100
MyDefaultTask3      READY      100
MyDefaultTask2      RUNNING    100
MyDefaultTask1      RUNNING    100

L'envoi d'une nouvelle tâche, MyHighPriorityTask1, n'a aucune incidence sur les tâches en cours d'exécution:

Task name           State      Priority
---------------------------------------
MyHighPriorityTask    READY      500
MyDefaultTask5        READY      100
MyDefaultTask4        READY      100
MyDefaultTask3        READY      100
MyDefaultTask2        RUNNING    100
MyDefaultTask1        RUNNING    100

Une fois l'une des tâches en cours terminée, la tâche en attente ayant la priorité la plus élevée s'exécute (dans ce cas, notre tâche prioritaire):

Task name             State      Priority
-----------------------------------------
MyHighPriorityTask    RUNNING    500
MyDefaultTask5        READY      100
MyDefaultTask4        READY      100
MyDefaultTask3        READY      100
MyDefaultTask2        COMPLETED  100
MyDefaultTask1        RUNNING    100