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:
- Page "Tasks" (Tâches) de la console Cloud
- Active la gestion des tâches au niveau du projet Cloud. À l'avenir, il s'agira de l'interface utilisateur principale pour la gestion des tâches.
- Page du Gestionnaire des 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 des tâches en plus d'un script de l'éditeur de code.
- Point de terminaison
ListOperations
et commandetask
- Idéal pour afficher et gérer des tâches de manière programmatique.
É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 clientREADY
, en file d'attente sur le serveurRUNNING
, en cours d'exécutionCOMPLETED
, terminéesFAILED
, échecCANCEL_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