Verarbeitungsumgebungen

Earth Engine bietet verschiedene Umgebungen für die Datenverarbeitung: interaktiv und Batch. In diesen beiden Umgebungen (oder „Bereichen“) werden unterschiedliche Arten von Anfragen verarbeitet und sie haben sehr unterschiedliche Leistungsmerkmale. Daher ist es wichtig zu wissen, wann und wie die einzelnen Umgebungen verwendet werden.

Interaktive Umgebung

Diese Umgebung, auch als „synchroner“ oder „Online“-Stack bezeichnet, ist für die Beantwortung kleiner Anfragen optimiert, die schnell abgeschlossen werden (Antworten sind auf einige zehn Megabyte Daten beschränkt und müssen innerhalb von fünf Minuten verarbeitet werden). Es können viele Anfragen parallel bis zu den Kontingentlimits gestellt werden.

Endpunkte

Die interaktive Umgebung besteht aus verschiedenen API-Endpunkten: Standard und Hohes Volumen.

Standardendpunkt

Der Standardendpunkt eignet sich für die meisten Anwendungsfälle, die von Menschen gesteuert werden. Er ist die Grundlage für den Code-Editor und Earth Engine-Apps. Dieser Endpunkt eignet sich besonders für latenzempfindliche Anwendungen mit einem geringen Volumen gleichzeitiger, nicht programmatischer Anfragen.

Endpunkt mit hohem Volumen

Der Endpunkt für hohes Volumen ist darauf ausgelegt, ein höheres Volumen an Anfragen parallel zu verarbeiten als der Standardendpunkt. Die Hauptunterschiede sind:

  • Höhere Latenz: Der High-Volume-Endpunkt hat eine höhere durchschnittliche Latenz pro Anfrage.
  • Weniger Caching: Es werden weniger Zwischenergebnisse im Cache gespeichert, sodass für komplexe Abfragen möglicherweise mehr Rechenzeit erforderlich ist.
  • Am besten für automatisierte, kleine Anfragen geeignet: Der High-Volume-Endpunkt eignet sich hervorragend für die Verarbeitung vieler programmatischer Anfragen, ist aber am besten für einfache Anfragen geeignet, die keine Aggregation erfordern (z. B. das Abrufen von Kacheln aus vorgefertigten Bildern).

Für komplexe Analysen, die ein effizientes Caching erfordern, ist der Standard-API-Endpunkt möglicherweise besser geeignet. Der Endpunkt für hohes Volumen ist für Aufgaben mit hohem Durchsatz und geringem Rechenaufwand optimiert. Komplexe Abfragen erfordern in der Regel mehr EECU-Zeit, wenn der High-Volume-Endpunkt verwendet wird, als beim regulären Online-Endpunkt.

Verwendung des Endpunkts für hohes Volumen

Python-Client

Übergeben Sie beim Initialisieren der earthengine-Bibliothek einen opt_url-Parameter und legen Sie ihn auf https://earthengine-highvolume.googleapis.com fest. Wie immer müssen Sie auch die richtigen Anmeldedaten übergeben und das Cloud-Projekt angeben. Beispiel:

ee.Initialize(
    credentials=credentials,
    project='my-project',
    opt_url='https://earthengine-highvolume.googleapis.com'
)

JavaScript-Client

Wenn Sie die earthengine-Bibliothek mit ee.initialize()> initialisieren, übergeben Sie https://earthengine-highvolume.googleapis.com für den ersten Parameter.

REST API

Richten Sie Ihre REST-Anfragen an https://earthengine-highvolume.googleapis.com (anstelle von https://earthengine.googleapis.com, wie z. B. in der REST API-Kurzanleitung gezeigt).

Batch-Umgebung

Diese Umgebung, auch als „asynchroner“ oder „Offline“-Stack bezeichnet, ist für die parallele Verarbeitung großer Datenmengen mit hoher Latenz optimiert. Anfragen werden als Aufgaben an Batchverarbeitungs-Endpunkte gesendet, in der Regel durch Aufrufen von Import- oder Export-Funktionen (z.B. Export.* und ee.batch.*) aus den Earth Engine-Clientbibliotheken. Jede Batchaufgabe hat eine maximale Lebensdauer von zehn Tagen. Jedes Projekt unterstützt bis zu 3.000 ausstehende Aufgaben, aber jeder einzelne Nutzer ist auf eine kleine Anzahl von gleichzeitig ausgeführten Aufgaben beschränkt.

Aufgabenlebenszyklus

Aufgaben werden in eine Warteschlange gestellt und nach Priorität (höchste zuerst) und Einreichungszeit (früheste zuerst) sortiert. Aufgaben ändern sich vom Status SUBMITTED (in der Warteschlange) in den Status RUNNING, wenn sie einem Batch-Prozessor zugewiesen werden. Jeder Prozessor ist für die Orchestrierung einer variablen Anzahl von Batch-Workern verantwortlich, um die Berechnung auszuführen und die Ergebnisse der Aufgabe zu generieren. Die Anzahl der Worker für eine Aufgabe wird durch die Fähigkeit des EE-Dienstes bestimmt, den Job zu parallelisieren, und ist nicht vom Nutzer konfigurierbar.

Wenn Sie ein Cloud-Projekt verwenden, sind Aufgaben für alle sichtbar, die die Berechtigung zum Auflisten von Aufgaben auf Projektebene haben. Wenn das Projekt für den kostenpflichtigen Earth Engine-Zugriff registriert ist, werden Aufgaben in einer projektweiten Warteschlange organisiert. Wenn das Projekt für den kostenlosen (Forschungs-)Zugriff registriert ist, werden Aufgaben unabhängig für jeden einzelnen Nutzer geplant, sind aber für alle Nutzer des Projekts sichtbar.

Aufgaben werden erfolgreich abgeschlossen, wenn die erforderlichen Artefakte erstellt werden (Earth Engine-Assets, Dateien in Google Cloud Storage usw.).

Aufgabenverwaltung

Aufgaben können über die folgenden Oberflächen aufgerufen und abgebrochen werden:

Fehler bei Aufgaben

Wenn eine Aufgabe aus einem Grund fehlschlägt, der durch erneutes Ausführen nicht behoben werden kann (z.B. wenn die Daten ungültig sind), wird die Aufgabe als FAILED markiert und nicht noch einmal ausgeführt.

Wenn eine Aufgabe aus einem Grund fehlschlägt, der vorübergehend sein könnte (z.B. wenn bei der Ausführung einer Berechnung ein Zeitlimit überschritten wurde), versucht Earth Engine automatisch, die Aufgabe noch einmal auszuführen, und füllt das Feld retries aus. Aufgaben können bis zu fünfmal fehlschlagen. Beim letzten Fehler wird die gesamte Aufgabe als FAILED markiert.

Aufgaben-ID

Jede Aufgabe hat eine alphanumerische ID im Format 3DNU363IM57LNU4SDTMB6I33. Diese können über unsere Schnittstellen für die Aufgabenverwaltung aufgerufen oder abgerufen werden. Wenn Sie Aufgaben programmatisch starten, erhalten Sie die Aufgaben-ID von ee.data.newTaskId. Wenn Sie Hilfe beim Debuggen einer Export- oder Aufnahmeanfrage benötigen, geben Sie diese Aufgaben-ID als kopierbaren String (nicht als Screenshot) an.

Liste der Aufgabenstatus

Aufgaben können die folgenden state-Werte haben:

  • UNSUBMITTED, noch ausstehend beim Kunden
  • READY, auf dem Server in der Warteschlange
  • RUNNING, wird aktuell ausgeführt
  • COMPLETED, erfolgreich abgeschlossen
  • FAILED, nicht abgeschlossen
  • CANCEL_REQUESTED: Wird noch ausgeführt, aber die Abbrechen-Anfrage wurde gestellt (d.h. es gibt keine Garantie, dass die Aufgabe abgebrochen wird)
  • CANCELLED, vom Inhaber gekündigt

Aufgabenpriorität

Die Aufgabenpriorität ist ein Mechanismus zum Steuern der Reihenfolge von Aufgaben in der Warteschlange. Aufgaben mit höherer Priorität werden vor anderen ausstehenden Aufgaben mit niedrigeren Prioritäten geplant, unabhängig von der Einreichungszeit. Die Standardpriorität für Aufgaben ist 100.

Die Möglichkeit, für Exportaufgaben andere Prioritäten (höher oder niedriger) festzulegen, ist nur für Nutzer von Projekten verfügbar, die für den kostenpflichtigen Earth Engine-Zugriff registriert sind. Wenn Sie die Priorität einer Exportaufgabe ändern, hat das keine Auswirkungen darauf, wie sie im Verhältnis zu Importaufgaben geplant wird, da die beiden Arten von Aufgaben separat geplant werden.

Beispiel: Aufgabenprioritäten verwenden

Sehen Sie sich die folgende Aufgabenliste an, in der die Aufgaben 1 bis 5 in ihrer natürlichen Reihenfolge mit der Standardpriorität eingereicht werden. Sie werden in der Reihenfolge ausgeführt, in der sie eingereicht wurden, da die Prioritäten alle gleich sind. Da für dieses Projekt zwei Batchverarbeitungs-Slots verfügbar sind, werden zwei gleichzeitig ausgeführt (die erste und die zweite eingereichte).

Task name           State      Priority
---------------------------------------
MyDefaultTask5      READY      100
MyDefaultTask4      READY      100
MyDefaultTask3      READY      100
MyDefaultTask2      RUNNING    100
MyDefaultTask1      RUNNING    100

Das Senden einer neuen Aufgabe, MyHighPriorityTask1, hat keine Auswirkungen auf die laufenden Aufgaben:

Task name           State      Priority
---------------------------------------
MyHighPriorityTask    READY      500
MyDefaultTask5        READY      100
MyDefaultTask4        READY      100
MyDefaultTask3        READY      100
MyDefaultTask2        RUNNING    100
MyDefaultTask1        RUNNING    100

Nachdem eine der laufenden Aufgaben abgeschlossen ist, wird die ausstehende Aufgabe mit der höchsten Priorität ausgeführt (in diesem Fall unsere Aufgabe mit hoher Priorität):

Task name             State      Priority
-----------------------------------------
MyHighPriorityTask    RUNNING    500
MyDefaultTask5        READY      100
MyDefaultTask4        READY      100
MyDefaultTask3        READY      100
MyDefaultTask2        COMPLETED  100
MyDefaultTask1        RUNNING    100