Environnements de traitement

Earth Engine propose différents environnements pour le traitement des données : interactif et par lots. Ces deux environnements (ou "domaines") 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 comprendre quand et comment utiliser chacun d'eux.

Environnement interactif

Également appelé pile "synchrone" ou "en ligne", cet environnement est optimisé 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 maximum). De nombreuses requêtes peuvent être effectuées en parallèle jusqu'à atteindre les limites de quota.

Points de terminaison

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

Point de terminaison standard

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

Point de terminaison à volume élevé

Le point de terminaison à volume élevé 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 à volume élevé présente une latence moyenne par requête plus élevée.
  • Mise en cache moins importante : il offre moins de mise en cache des résultats intermédiaires. Les requêtes complexes peuvent donc nécessiter plus de temps de calcul.
  • Idéal pour les petites requêtes automatisées : le point de terminaison à volume élevé est idéal pour gérer de nombreuses requêtes programmatiques, mais il convient mieux 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 une mise en cache efficace, le point de terminaison d'API standard peut être préférable. Le point de terminaison à volume élevé est optimisé pour les tâches à haut débit et à faible calcul. Les requêtes complexes nécessitent généralement plus de temps d'unité de calcul Earth Engine (EECU) lorsqu'elles utilisent le point de terminaison à volume élevé que dans le point de terminaison en ligne standard.

Utilisation du point de terminaison à volume élevé

Client Python

Lors de l'initialisation de la bibliothèque earthengine, transmettez un paramètre opt_urlet 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 earthengine bibliothèque à l'aide ee.initialize(), transmettez https://earthengine-highvolume.googleapis.com pour le premier paramètre.

API REST

Adressez vos requêtes REST à 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 par lots

Également appelé pile "asynchrone" ou "hors connexion", cet environnement est optimisé pour le traitement parallèle à latence élevée 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 lots, généralement en appelant des fonctions d'importation ou d'exportation de données (par exemple, Export.* et ee.batch.*) à partir des bibliothèques clientes Earth Engine. Chaque tâche par lots a une durée de vie maximale de dix jours. Chaque projet accepte jusqu'à 3 000 tâches en attente, mais chaque utilisateur individuel 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 à une file d'attente et classées par ordre de priorité (de la plus élevée à la plus basse) et par heure d'envoi (de la plus ancienne à la plus récente). L'état des tâches passe de SUBMITTED (en file d'attente) à RUNNING lorsqu'elles sont attribuées à un processeur par lots. Chaque processeur est chargé d'orchestrer un nombre variable de nœuds de calcul par lots pour exécuter le calcul et produire 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 le job 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 au niveau du projet pour les lister. Si le projet est enregistré pour un accès payant à Earth Engine, les tâches sont organisées dans une file d'attente à l'échelle du projet. Si le projet est enregistré pour un accès non payant (recherche), les tâches sont planifiées indépendamment pour chaque personne, mais restent visibles par tous les utilisateurs du projet.

Les tâches se terminent correctement lorsqu'elles créent les artefacts nécessaires (actifs Earth Engine, fichiers dans Google Cloud Storage, etc.).

Gestion des tâches

Les tâches peuvent être affichées et annulées à l'aide des interfaces suivantes :

Échecs de tâches

Si une tâche échoue pour une raison qui ne sera pas corrigée en cas de nouvelle tentative (par exemple, si les données ne sont pas valides), elle sera marquée comme FAILED et ne sera plus exécutée.

Si une tâche échoue pour une raison qui pourrait être intermittente (par exemple, si elle a expiré lors de l'exécution d'un calcul), Earth Engine tentera automatiquement de la relancer et de renseigner le champ retries. Les tâches peuvent échouer jusqu'à cinq fois, et le dernier échec entraînera le marquage de la tâche entière comme FAILED.

ID de la tâche

Chaque tâche possède un ID alphanumérique au format 3DNU363IM57LNU4SDTMB6I33. Vous pouvez les afficher 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 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 d'une 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ée avec succès
  • FAILED : terminée sans succès
  • CANCEL_REQUESTED: toujours en cours d'exécution, mais une demande d'annulation a été envoyée (c'est-à-dire qu'il n'est pas garanti que la tâche sera annulée)
  • CANCELLED : annulée par le propriétaire

Priorité des tâches

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 leur heure d'envoi. La priorité par défaut des tâches est de 100.

La possibilité de définir d'autres priorités (supérieures ou inférieures) pour les tâches d'exportation n'est disponible que pour les utilisateurs de projets enregistrés pour un accès payant à Earth Engine access. La modification de la priorité d'une tâche d'exportation n'affecte pas sa planification par rapport aux tâches d'importation, car les deux types de tâches sont planifiés séparément.

Exemple : utilisation des priorités des tâches

Prenons l'exemple de la liste de tâches suivante, dans laquelle les tâches 1 à 5 sont envoyées dans leur ordre naturel avec la priorité par défaut. Elles s'exécutent dans l'ordre dans lequel elles ont été envoyées, car les priorités sont toutes identiques. De plus, comme deux emplacements de traitement par lots sont disponibles pour ce projet, deux tâches s'exécutent simultanément (la première et la deuxième envoyées).

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'affecte pas 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 d'exécution terminée, la tâche en attente ayant la priorité la plus élevée s'exécute (dans ce cas, notre tâche de haute priorité) :

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