Ambienti di elaborazione

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:

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 client
  • READY, in coda sul server
  • RUNNING, attualmente in esecuzione
  • COMPLETED, completata correttamente
  • FAILED, completata senza successo
  • CANCEL_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