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 :
- Page "Tâches" dans Cloud Console
- Permet de gérer les tâches au niveau du projet Cloud. À l'avenir, il s'agira de l'interface utilisateur principale pour la gestion des tâches.
- Page "Gestionnaire de tâches"
- Cette interface affiche les tâches au niveau de l'utilisateur et du projet, et permet de filtrer par nom de tâche.
- Onglet "Tâches" de l'éditeur de code
- Permet de surveiller les tâches en même temps qu'un script de l'éditeur de code.
ListOperationspoint de terminaison ettaskcommande- Idéal pour afficher et gérer les tâches de manière programmatique.
É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 clientREADY: en file d'attente sur le serveurRUNNING: en cours d'exécutionCOMPLETED: terminée avec succèsFAILED: terminée sans succèsCANCEL_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