Ambienti di elaborazione

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:

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