Earth Engine ma różne środowiska do przetwarzania danych: interaktywne i wsadowe. Te 2 środowiska (lub „obszary”) obsługują różne typy zapytań i mają bardzo różne charakterystyki wydajności, dlatego ważne jest, aby wiedzieć, kiedy i jak ich używać.
Środowisko interaktywne
To środowisko, nazywane też stosem „synchronicznym” lub „online”, jest zoptymalizowane pod kątem odpowiadania na małe żądania, które są szybko realizowane (odpowiedzi są ograniczone do kilkudziesięciu megabajtów danych i muszą zostać przetworzone w ciągu 5 minut). Można równolegle wysyłać wiele żądań, aż do osiągnięcia limitów .
Punkty końcowe
Środowisko interaktywne składa się z różnych punktów końcowych interfejsu API: standardowego i o dużej liczbie żądań.
Standardowy punkt końcowy
Standardowy punkt końcowy jest odpowiedni w większości przypadków użycia przez człowieka. To on obsługuje edytor kodu i aplikacje Earth Engine. Ten punkt końcowy najlepiej sprawdza się w przypadku aplikacji wrażliwych na opóźnienia, które obejmują niewielką liczbę równoczesnych żądań nieprogramowych.
Punkt końcowy o dużej liczbie żądań
Punkt końcowy o dużej liczbie żądań jest przeznaczony do obsługi większej liczby żądań równolegle niż standardowy punkt końcowy. Najważniejsze różnice:
- Większe opóźnienie: punkt końcowy o dużej liczbie żądań ma większe średnie opóźnienie na żądanie.
- Mniej buforowania: zapewnia mniejsze buforowanie wyników pośrednich, dlatego złożone zapytania mogą wymagać więcej czasu obliczeniowego.
- Najlepszy do zautomatyzowanych, małych zapytań: punkt końcowy o dużej liczbie żądań doskonale radzi sobie z obsługą wielu żądań programowych, ale najlepiej nadaje się do prostych zapytań które nie wymagają agregacji (np. pobierania kafelków z gotowych obrazów).
W przypadku złożonych analiz, które wymagają wydajnego buforowania, lepszym rozwiązaniem może być standardowy punkt końcowy API. Punkt końcowy o dużej liczbie żądań jest zoptymalizowany pod kątem zadań o dużej przepustowości i niskim poziomie obliczeń. W przypadku złożonych zapytań korzystanie z punktu końcowego o dużej liczbie żądań zwykle wymaga więcej czasu EECU niż w przypadku zwykłego punktu końcowego online.
Korzystanie z punktu końcowego o dużej liczbie żądań
Klient Python
Podczas inicjowania biblioteki earthengine przekaż parametr opt_url
i ustaw go na
https://earthengine-highvolume.googleapis.com.
Jak zawsze, pamiętaj też o przekazaniu odpowiednich danych logowania i określeniu projektu Cloud. Na przykład:
ee.Initialize(
credentials=credentials,
project='my-project',
opt_url='https://earthengine-highvolume.googleapis.com'
)
Klient JavaScript
Podczas inicjowania biblioteki earthengine za pomocą
ee.initialize(),
przekaż https://earthengine-highvolume.googleapis.com
jako pierwszy parametr.
Interfejs API typu REST
Kieruj żądania REST do
https://earthengine-highvolume.googleapis.com
(zamiast do https://earthengine.googleapis.com,
jak pokazano np. w
przewodniku Szybki start dotyczącym interfejsu API typu REST,
).
Środowisko wsadowe
– obliczenia są wykonywane asynchronicznie, a wyniki są zapisywane w celu późniejszego dostępu (w Cloud Storage, magazynie zasobów Earth Engine itp.).To środowisko, nazywane też stosem „asynchronicznym” lub „offline”, jest zoptymalizowane pod kątem równoległego przetwarzania dużych ilości danych z dużym opóźnieniem. Żądania są
przesyłane jako zadania do punktów końcowych przetwarzania wsadowego, zwykle przez wywołanie funkcji
importu lub
eksportu danych (np. Export.* i
ee.batch.*) z bibliotek klienta Earth Engine. Maksymalny czas życia każdego zadania wsadowego wynosi 10 dni. Każdy projekt obsługuje do 3000 zadań oczekujących, ale każdy użytkownik
jest ograniczony do niewielkiej liczby zadań wykonywanych jednocześnie.
Cykl życia zadania
Zadania są przesyłane do kolejki i porządkowane według priorytetu (najwyższy jako pierwszy) i czasu przesłania (najwcześniejszy jako pierwszy). Gdy zadania zostaną przypisane do procesora wsadowego, zmienią stan z SUBMITTED (w kolejce) na RUNNING (działające). Każdy procesor jest odpowiedzialny za koordynowanie różnej liczby procesów wsadowych w celu wykonania obliczeń i uzyskania wyników zadania.
Liczba procesów dla zadania jest określana przez możliwość równoległego wykonywania zadania przez usługę EE i nie można jej skonfigurować.
Gdy używasz projektu w chmurze, zadania są widoczne dla wszystkich osób, które mają uprawnienia na poziomie projektu do wyświetlania listy zadań. Jeśli projekt jest zarejestrowany na potrzeby płatnego dostępu do Earth Engine, zadania są uporządkowane w kolejce obejmującej cały projekt. Jeśli projekt jest zarejestrowany na potrzeby bezpłatnego dostępu (do celów badawczych), zadania są planowane niezależnie dla każdego użytkownika, ale nadal są widoczne dla wszystkich użytkowników projektu.
Zadania są wykonywane pomyślnie, gdy tworzą niezbędne artefakty (zasoby Earth Engine, pliki w Google Cloud Storage itp.).
Zarządzanie zadaniami
Zadania można wyświetlać i anulować za pomocą tych interfejsów:
- Strona Zadania w konsoli Cloud
- Umożliwia zarządzanie zadaniami na poziomie projektu w chmurze. W przyszłości będzie to główny interfejs do zarządzania zadaniami.
- Strona Menedżer zadań
- Ten interfejs wyświetla zadania na poziomie użytkownika i projektu oraz umożliwia filtrowanie według nazwy zadania.
- Karta Zadania w edytorze kodu
- Umożliwia monitorowanie zadań obok skryptu edytora kodu.
ListOperationspunkt końcowy itaskpolecenie- Najlepsze rozwiązanie do programowego wyświetlania zadań i zarządzania nimi.
Niepowodzenia zadań
Jeśli zadanie nie powiedzie się z powodu, którego nie można naprawić przez ponowienie (np. dane są nieprawidłowe), zostanie oznaczone jako FAILED i nie zostanie ponownie uruchomione.
Jeśli zadanie nie powiedzie się z powodu, który może być przejściowy (np. przekroczy limit czasu podczas wykonywania obliczeń), Earth Engine automatycznie spróbuje je ponowić i wypełni pole retries. Zadania mogą się nie powieść maksymalnie 5 razy, a ostatnie niepowodzenie spowoduje oznaczenie całego zadania jako FAILED.
Identyfikator zadania
Każde zadanie ma alfanumeryczny identyfikator w formacie 3DNU363IM57LNU4SDTMB6I33. Można je
wyświetlić lub uzyskać za pomocą naszych interfejsów zarządzania zadaniami. Jeśli uruchamiasz zadania programowo, identyfikator zadania uzyskasz z
ee.data.newTaskId. Gdy prosisz o pomoc w debugowaniu zadania eksportu lub pozyskiwania, podaj ten identyfikator zadania jako ciąg znaków, który można skopiować (nie jako zrzut ekranu).
Lista stanów zadań
Zadania mogą mieć te wartości state:
UNSUBMITTED– nadal oczekuje na klienta.READY– w kolejce na serwerze.RUNNING– obecnie działa.COMPLETED– ukończone pomyślnie.FAILED– ukończone niepomyślnie.CANCEL_REQUESTED– nadal działa, ale zostało zgłoszone do anulowania (tzn.nie ma gwarancji, że zadanie zostanie anulowane).CANCELLED– anulowane przez właściciela.
Priorytet zadania
Priorytet zadania to mechanizm sterowania kolejnością zadań w kolejce. Zadania o wyższym priorytecie są planowane przed innymi zadaniami oczekującymi o niższym priorytecie, niezależnie od czasu przesłania. Domyślny priorytet zadania to 100.
Możliwość ustawienia innych priorytetów (wyższych lub niższych) w przypadku zadań eksportu jest tylko dostępna dla użytkowników projektów zarejestrowanych na potrzeby płatnego dostępu do Earth Engine dostępu. Zmiana priorytetu zadania eksportu nie wpływa na sposób jego planowania w stosunku do zadań importu, ponieważ te 2 typy zadań są planowane oddzielnie.
Przykład: używanie priorytetów zadań
Rozważmy tę listę zadań, na której zadania 1–5 są przesyłane w naturalnej kolejności z domyślnym priorytetem. Są one wykonywane w kolejności, w jakiej zostały przesłane, ponieważ wszystkie mają ten sam priorytet. Ponieważ w tym projekcie dostępne są 2 miejsca przetwarzania wsadowego, 2 zadania są wykonywane równolegle (pierwsze i drugie przesłane).
Task name State Priority
---------------------------------------
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
Przesłanie nowego zadania, MyHighPriorityTask1, nie wpłynie na działające zadania:
Task name State Priority
---------------------------------------
MyHighPriorityTask READY 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
Gdy jedno z działających zadań zostanie ukończone, zostanie uruchomione zadanie oczekujące o najwyższym priorytecie (w tym przypadku zadanie o wysokim priorytecie):
Task name State Priority
-----------------------------------------
MyHighPriorityTask RUNNING 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 COMPLETED 100
MyDefaultTask1 RUNNING 100