Earth Engine dispone di ambienti diversi per l'elaborazione dei dati: interattivo e batch. Questi due ambienti (o "regni") gestiscono diversi tipi di query e hanno caratteristiche di rendimento molto diverse, quindi è importante capire quando e come utilizzare ciascuno.
Ambiente interattivo
Chiamato anche stack "sincrono" o "online", questo ambiente è ottimizzato per rispondere a piccole richieste che terminano rapidamente (le risposte sono limitate a decine di megabyte di dati e devono terminare l'elaborazione entro cinque minuti). È possibile effettuare molte richieste in parallelo fino ai limiti di quota.
Endpoint
L'ambiente interattivo è composto da diversi endpoint API: standard e ad alto volume.
Endpoint standard
L'endpoint standard è appropriato per la maggior parte dell'utilizzo da parte di persone fisiche ed è ciò che alimenta l'editor di codice e le app Earth Engine. Nello specifico, questo endpoint è più adatto per le applicazioni sensibili alla latenza che comportano un basso volume di richieste simultanee non programmatiche.
Endpoint ad alto volume
L'endpoint ad alto volume è progettato per gestire un volume maggiore di richieste in parallelo rispetto all'endpoint standard. Le principali differenze includono:
- Latenza più elevata: l'endpoint ad alto volume ha una latenza media più elevata per richiesta.
- Meno memorizzazione nella cache: fornisce meno memorizzazione nella cache dei risultati intermedi, quindi le query complesse potrebbero richiedere più tempo di calcolo.
- Ideale per query automatiche di piccole dimensioni: l'endpoint ad alto volume è ideale per gestire molte richieste programmatiche, ma è più adatto a query semplici che non richiedono l'aggregazione (ad esempio il recupero di riquadri da immagini predefinite).
Per analisi complesse che richiedono una memorizzazione nella cache efficiente, potrebbe essere preferibile l'endpoint API standard. L'endpoint ad alto volume è ottimizzato per attività a velocità effettiva elevata e a basso calcolo. Le query complesse in genere richiedono più tempo EECU quando si utilizza l'endpoint ad alto volume rispetto all'endpoint online normale.
Utilizzo dell'endpoint ad alto volume
Client Python
Quando inizializzi la libreria earthengine, trasmetti un parametro opt_url e impostalo su https://earthengine-highvolume.googleapis.com.
Come sempre, assicurati di passare anche le credenziali corrette e specifica il progetto Cloud. Ad esempio:
ee.Initialize(
credentials=credentials,
project='my-project',
opt_url='https://earthengine-highvolume.googleapis.com'
)
Client JavaScript
Quando inizializzi la libreria earthengine utilizzando
ee.initialize(),
trasmetti https://earthengine-highvolume.googleapis.com
per il primo parametro.
API REST
Indirizza le richieste REST a
https://earthengine-highvolume.googleapis.com
(anziché https://earthengine.googleapis.com,
come mostrato nella
guida rapida all'API REST,
ad esempio).
Ambiente batch
Chiamato anche stack "asincrono" o "offline", questo ambiente è ottimizzato
per l'elaborazione parallela a latenza elevata di grandi quantità di dati. Le richieste vengono inviate come attività agli endpoint di elaborazione batch, di solito chiamando le funzioni di importazione o esportazione dei dati (ad es. Export.* e ee.batch.*) dalle librerie client Earth Engine. Ogni attività batch ha una
durata massima di dieci giorni. Ogni progetto supporta fino a 3000
attività in attesa, ma ogni singolo utente
è limitato a un numero ridotto di attività
in esecuzione contemporaneamente.
Ciclo di vita dell'attività
Le attività vengono inviate a una coda e ordinate in base alla priorità (prima la più alta) e all'ora di invio (prima la più recente). Le attività passano dallo stato
SUBMITTED (in coda) allo stato RUNNING quando vengono assegnate a un
processore batch. Ogni processore è responsabile dell'orchestrazione di un numero variabile di worker batch per eseguire il calcolo e produrre i risultati dell'attività.
Il numero di worker per un'attività è determinato dalla capacità del servizio EE di parallelizzare il job e non è configurabile dall'utente.
Quando utilizzi un progetto Cloud, le attività sono visibili a chiunque disponga dell'autorizzazione a livello di progetto per elencare le attività. Se il progetto è registrato per l'accesso a pagamento a Earth Engine, le attività vengono organizzate in una coda a livello di progetto; se il progetto è registrato per l'accesso non a pagamento (ricerca), le attività vengono pianificate in modo indipendente per ogni individuo, ma sono comunque visibili a tutti gli utenti del progetto.
Le attività vengono completate correttamente quando creano gli artefatti necessari (asset Earth Engine, file in Google Cloud Storage e così via).
Gestione delle attività
Le attività possono essere visualizzate e annullate utilizzando le seguenti interfacce:
- Pagina Tasks in Cloud Console
- Consente la gestione delle attività a livello di progetto Cloud. In futuro, questa sarà l'interfaccia utente principale per la gestione delle attività.
- Pagina Task Manager
- Questa interfaccia mostra le attività a livello di utente e progetto e supporta il filtro per nome dell'attività.
- Scheda Attività dell'editor di codice
- Consente di monitorare le attività insieme a uno script dell'editor di codice.
- Endpoint
ListOperationse comandotask- Ideale per visualizzare e gestire le attività in modo programmatico.
Errori delle attività
Se un'attività non va a buon fine per un motivo che non verrà risolto riprovando (ad esempio, i dati non sono validi), l'attività verrà contrassegnata come FAILED e non verrà eseguita di nuovo.
Se un'attività non va a buon fine per un motivo che potrebbe essere intermittente (ad esempio, è scaduto il timeout
durante l'esecuzione di un calcolo), Earth Engine tenterà automaticamente di riprovare
e compilare il campo retries. Le attività possono non riuscire fino a cinque volte e l'ultimo
errore farà sì che l'intera attività venga contrassegnata come FAILED.
ID attività
Ogni attività ha un ID alfanumerico nel formato 3DNU363IM57LNU4SDTMB6I33. Questi
possono essere visualizzati o ottenuti tramite le nostre interfacce di gestione delle attività. Se avvii le attività in modo programmatico, ottieni l'ID attività da
ee.data.newTaskId. Quando richiedi
assistenza per il debug di un'attività di esportazione o importazione, fornisci questo ID attività come stringa
copiabile (non uno screenshot).
Elenco degli stati delle attività
Le attività possono avere i seguenti valori di state:
UNSUBMITTED, ancora in attesa del clientREADY, in coda sul serverRUNNING, attualmente in esecuzioneCOMPLETED, completata correttamenteFAILED, completata senza esito positivoCANCEL_REQUESTED, ancora in esecuzione, ma è stato richiesto l'annullamento (ovvero non è garantito che l'attività verrà annullata)CANCELLED, annullato dal proprietario
Priorità dell'attività
La priorità delle attività è un meccanismo per controllare l'ordine delle attività nella coda. Le attività con priorità più alta vengono pianificate prima delle altre attività in attesa con priorità inferiori, indipendentemente dall'ora di invio. La priorità predefinita del compito è 100.
La possibilità di impostare altre priorità (superiori o inferiori) per le attività di esportazione è disponibile solo per gli utenti di progetti registrati per l'accesso a pagamento a Earth Engine. La modifica della priorità di un'attività di esportazione non influisce sulla sua pianificazione rispetto alle attività di importazione, poiché i due tipi di attività vengono pianificati separatamente.
Esempio: utilizzo delle priorità delle attività
Considera il seguente elenco di attività, in cui le attività 1-5 vengono inviate nel loro ordine naturale con la priorità predefinita. Vengono eseguiti nell'ordine in cui sono stati inviati, poiché le priorità sono tutte uguali e, poiché sono disponibili due slot di elaborazione batch per questo progetto, due vengono eseguiti contemporaneamente (il primo e il secondo invio).
Task name State Priority
---------------------------------------
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
L'invio di una nuova attività, MyHighPriorityTask1, non influirà sulle attività in esecuzione:
Task name State Priority
---------------------------------------
MyHighPriorityTask READY 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
Una volta completata una delle attività in esecuzione, verrà eseguita l'attività in attesa con la priorità più alta (in questo caso, la nostra attività ad alta priorità):
Task name State Priority
-----------------------------------------
MyHighPriorityTask RUNNING 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 COMPLETED 100
MyDefaultTask1 RUNNING 100