Earth Engine dispone di ambienti diversi per l'elaborazione dei dati: interattivo e batch. Questi due ambienti (o "realm") gestiscono tipi diversi di query e hanno caratteristiche di prestazioni molto diverse, pertanto è importante comprendere quando e come utilizzarli.
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 l'elaborazione deve essere completata entro cinque minuti). È possibile effettuare molte richieste in parallelo fino ai limiti della 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 degli utilizzi da parte di persone ed è ciò che consente il funzionamento di Code Editor e delle app Earth Engine. Nello specifico, questo endpoint è maggiormente adatto per le applicazioni sensibili alla latenza che comportano un volume ridotto di richieste non programmatiche simultanee.
Endpoint ad alto volume
L'endpoint ad alto volume è progettato per gestire un volume più elevato di richieste in parallelo rispetto all'endpoint standard. Le differenze principali 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, pertanto le query complesse possono richiedere più tempo di calcolo.
- Ideale per query piccole e automatiche: l'endpoint ad alto volume è eccellente per gestire molte richieste programmatiche, ma è più adatto per 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à con throughput elevato e calcolo ridotto. Le query complesse in genere richiedono più tempo EECU quando si utilizza l'endpoint ad alto volume rispetto all'endpoint online standard.
Utilizzo dell'endpoint ad alto volume
Client Python
Quando inizili la libreria earthengine
, passa un parametro opt_url
e impostalo su https://earthengine-highvolume.googleapis.com
.
Come sempre, assicurati di passare anche le credenziali appropriate e di specificare il progetto Cloud. Ad esempio:
ee.Initialize(
credentials=credentials,
project='my-project',
opt_url='https://earthengine-highvolume.googleapis.com'
)
Client JavaScript
Quando inizializzazione 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é a https://earthengine.googleapis.com
, come mostrato nel
guida introduttiva all'API REST,
ad esempio).
Ambiente batch
Chiamato anche stack "asincrono" o "offline", questo ambiente è ottimizzato per l'elaborazione parallela ad alta latenza di grandi quantità di dati. Le richieste vengono inviate come attività agli endpoint di elaborazione collettiva, in genere chiamando le funzioni di import o di esportazione dei dati (ad es. Export.*
e
ee.batch.*
) dalle librerie client di 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 delle 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 per batch. Ogni elaboratore è 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 eseguire il paralletlismo del job e non è configurabile dall'utente.
Quando utilizzi un progetto Cloud, le attività sono visibili a chiunque disponga dell'autorizzazione a elencare le attività a livello di progetto. Se il progetto è registrato per l'accesso a Earth Engine a pagamento, le attività sono organizzate in una coda a livello di progetto. Se il progetto è registrato per l'accesso non a pagamento (per la ricerca), le attività vengono pianificate in modo indipendente per ogni utente, ma rimangono visibili a tutti gli utenti del progetto.
Le attività vengono completate correttamente quando vengono creati gli elementi 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 nella console Cloud
- Consente la gestione delle attività a livello di progetto Cloud. In futuro, sarà l'interfaccia utente principale per la gestione delle attività.
- Pagina Task Manager
- Questa interfaccia mostra le attività a livello di utente e di progetto e supporta il filtro in base al nome dell'attività.
- Scheda Attività dell'editor di codice
- Consente di monitorare le attività insieme a uno script di Editor di codice.
- Endpoint
ListOperations
e 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 es. 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 es. è scaduto il tempo di attesa
durante l'esecuzione di un calcolo), Earth Engine tenterà automaticamente di riprovare
e di compilare il campo retries
. Le attività possono non riuscire fino a cinque volte e l'errore finale farà sì che l'intera attività venga contrassegnata come FAILED
.
ID attività
Ogni attività ha un ID alfanumerico del tipo 3DNU363IM57LNU4SDTMB6I33
. Questi possono essere visualizzati o ottenuti tramite le nostre interfacce di gestione delle attività. Se avvii le attività tramite programmazione, puoi ottenere l'ID attività da
ee.data.newTaskId
. Quando richiedi aiuto per eseguire 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 state
:
UNSUBMITTED
, ancora in attesa sul clientREADY
, in coda sul serverRUNNING
, attualmente in esecuzioneCOMPLETED
, completata correttamenteFAILED
, completata senza successoCANCEL_REQUESTED
, ancora in esecuzione, ma è stata richiesta 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ù elevata vengono pianificate prima di altre attività in attesa con priorità inferiori, indipendentemente dal momento in cui sono state inviate. La priorità predefinita dell'attività è 100.
La possibilità di impostare altre priorità (superiori o inferiori) per le attività di esportazione è disponibile solo per gli utenti dei progetti registrati per l'accesso a Earth Engine a pagamento. 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à
Prendi in considerazione il seguente elenco di attività, in cui le attività 1-5 vengono inviate nell'ordine naturale con la priorità predefinita. Vengono eseguiti nell'ordine in cui sono stati inviati, poiché le priorità sono tutte uguali e, poiché per questo progetto sono disponibili due slot di elaborazione batch, due vengono eseguiti contemporaneamente (il primo e il secondo inviati).
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
Al termine di una delle attività in esecuzione, verrà eseguita l'attività in attesa con la priorità più alta (in questo caso, l'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