Earth Engine использует различные среды для обработки данных: интерактивную и пакетную . Эти две среды (или «области») обрабатывают разные типы запросов и имеют очень разные характеристики производительности, поэтому важно понимать, когда и как использовать каждую из них.
Интерактивная среда
Эта среда, также называемая «синхронным» или «онлайн» стеком, оптимизирована для обработки небольших запросов, которые обрабатываются быстро (ответы ограничены десятками мегабайт данных и должны быть обработаны в течение пяти минут). Много запросов может выполняться параллельно в пределах квотных ограничений .
Конечные точки
Интерактивная среда состоит из различных API-интерфейсов: стандартного и для больших объемов запросов.
Стандартная конечная точка
Стандартный адрес электронной почты подходит для большинства задач, выполняемых пользователем, и именно он лежит в основе редактора кода и приложений Earth Engine. В частности, этот адрес лучше всего подходит для приложений, чувствительных к задержкам, которые включают небольшое количество одновременных непрограммных запросов.
Конечная точка с большим объемом
Конечная точка для обработки больших объемов запросов предназначена для параллельной обработки большего количества запросов, чем стандартная конечная точка. Ключевые отличия включают:
- Более высокая задержка : У точки с большим объемом запросов средняя задержка на один запрос выше.
- Меньшее кэширование : обеспечивается меньшее кэширование промежуточных результатов, поэтому сложные запросы могут потребовать больше вычислительного времени.
- Лучше всего подходит для автоматизированных небольших запросов : высокопроизводительная конечная точка отлично справляется с обработкой множества программных запросов, но наиболее подходит для простых запросов, не требующих агрегации (например, для получения фрагментов из предварительно созданных изображений).
Для сложных анализов, требующих эффективного кэширования, может быть предпочтительнее стандартная конечная точка API. Конечная точка для больших объемов данных оптимизирована для задач с высокой пропускной способностью и низкими вычислительными затратами. Сложные запросы, как правило, требуют больше времени EECU при использовании конечной точки для больших объемов данных, чем при использовании обычной онлайн-конечной точки.
Использование показателя большого объема
клиент на Python
При инициализации библиотеки earthengine передайте параметр opt_url и установите его значение равным https://earthengine-highvolume.googleapis.com . Как всегда, не забудьте также указать корректные учетные данные и проект Cloud. Например:
ee.Initialize(
credentials=credentials,
project='my-project',
opt_url='https://earthengine-highvolume.googleapis.com'
)
JavaScript-клиент
При инициализации библиотеки earthengine с помощью ee.initialize() в качестве первого параметра передайте https://earthengine-highvolume.googleapis.com .
REST API
Направляйте свои REST-запросы на https://earthengine-highvolume.googleapis.com (вместо https://earthengine.googleapis.com , как показано, например, в руководстве по быстрому запуску REST API ).
Пакетная среда
Эта среда, также называемая «асинхронным» или «офлайн» стеком, оптимизирована для параллельной обработки больших объемов данных с высокой задержкой. Запросы отправляются в виде задач конечным точкам пакетной обработки, обычно путем вызова функций импорта или экспорта данных (например, Export.* и ee.batch.* ) из клиентских библиотек Earth Engine. Максимальная продолжительность выполнения каждой пакетной задачи составляет десять дней. Каждый проект поддерживает до 3000 ожидающих задач , но каждый отдельный пользователь ограничен небольшим количеством одновременно выполняемых задач .
Жизненный цикл задачи
Задачи помещаются в очередь и упорядочиваются по приоритету (сначала самые высокие) и времени отправки (сначала самые ранние). Когда задачи назначаются пакетному процессору , они переходят из состояния SUBMITTED (в очередь) в состояние RUNNING . Каждый процессор отвечает за координацию работы различного количества пакетных обработчиков для выполнения вычислений и получения результатов задачи. Количество обработчиков для задачи определяется возможностью службы EE распараллелить задачу и не может быть изменено пользователем.
При использовании облачного проекта задачи видны всем, кто имеет разрешение на уровне проекта на просмотр списка задач. Если проект зарегистрирован для платного доступа к Earth Engine, задачи организуются в общепроектную очередь; если проект зарегистрирован для бесплатного (исследовательского) доступа, задачи планируются независимо для каждого отдельного пользователя, но остаются видимыми для всех пользователей проекта.
Задачи считаются успешно завершенными, когда создаются необходимые артефакты (ресурсы Earth Engine, файлы в Google Cloud Storage и т. д.).
Управление задачами
Задачи можно просматривать и отменять с помощью следующих интерфейсов:
- Страница задач в облачной консоли
- Обеспечивает управление задачами на уровне облачного проекта. В дальнейшем это будет основной пользовательский интерфейс для управления задачами.
- Страница Диспетчера задач
- Этот интерфейс отображает задачи на уровне пользователя и проекта, а также поддерживает фильтрацию по названию задачи.
- Вкладка «Задачи редактора кода»
- Позволяет отслеживать задачи параллельно со скриптом редактора кода.
- Конечная точка
ListOperationsи командаtask- Лучше всего подходит для программного просмотра и управления задачами.
Неудачи в выполнении задач
Если задача завершается с ошибкой по причине, которую невозможно устранить повторной попыткой (например, некорректные данные), задача будет помечена как FAILED и не будет запущена повторно.
Если задача завершается с ошибкой по причине, которая может быть периодической (например, истекло время выполнения вычислений), Earth Engine автоматически попытается повторить ее и заполнит поле retries . Задачи могут завершаться с ошибкой до пяти раз, и последняя ошибка приведет к тому, что вся задача будет помечена как FAILED .
Идентификатор задачи
Каждая задача имеет буквенно-цифровой идентификатор вида 3DNU363IM57LNU4SDTMB6I33 . Эти идентификаторы можно просмотреть или получить через наши интерфейсы управления задачами . Если вы запускаете задачи программно, идентификатор задачи получается из ee.data.newTaskId . При запросе помощи в отладке задачи экспорта или загрузки данных, укажите этот идентификатор задачи в виде копируемой строки (а не скриншота).
Список состояний задачи
Задачи могут иметь следующие значения state :
-
UNSUBMITTED, все еще находится на рассмотрении у клиента. -
READY, поставлено в очередь на сервере -
RUNNING, в данный момент бежит -
COMPLETED, успешно завершено -
FAILED, завершено безрезультатно -
CANCEL_REQUESTED, задача все еще выполняется, но был отправлен запрос на отмену (т.е. нет гарантии, что задача будет отменена). -
CANCELLED, отменено владельцем
Приоритет задачи
Приоритет задач — это механизм управления порядком задач в очереди. Задачи с более высоким приоритетом планируются раньше других задач с более низким приоритетом, независимо от времени их отправки. Приоритет задач по умолчанию равен 100.
Возможность устанавливать другие приоритеты (более высокие или более низкие) для задач экспорта доступна только пользователям проектов, зарегистрированных для платного доступа к Earth Engine . Изменение приоритета задачи экспорта не влияет на ее планирование относительно задач импорта, поскольку эти два типа задач планируются отдельно.
Пример: использование приоритетов задач
Рассмотрим следующий список задач, где задачи 1-5 представлены в естественном порядке с приоритетом по умолчанию. Они выполняются в том порядке, в котором были представлены, поскольку приоритеты у всех одинаковые, и, поскольку для этого проекта доступны два слота для пакетной обработки , одновременно выполняются две задачи (первая и вторая представленные).
Task name State Priority
---------------------------------------
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
Создание новой задачи, MyHighPriorityTask1 , не повлияет на выполнение уже существующих задач:
Task name State Priority
---------------------------------------
MyHighPriorityTask READY 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
После завершения одной из выполняющихся задач запустится задача с наивысшим приоритетом (в данном случае, наша задача с высоким приоритетом):
Task name State Priority
-----------------------------------------
MyHighPriorityTask RUNNING 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 COMPLETED 100
MyDefaultTask1 RUNNING 100