O Earth Engine tem ambientes diferentes para processar dados: interativo e em lote. Esses dois ambientes (ou "reinos") processam diferentes tipos de consultas e têm características de desempenho muito diferentes. Por isso, é importante entender quando e como usar cada um deles.
Ambiente interativo
Também chamado de pilha "síncrona" ou "on-line", esse ambiente é otimizado para responder a pequenas solicitações que são concluídas rapidamente. As respostas são limitadas a dezenas de megabytes de dados e precisam terminar o processamento em cinco minutos. Muitas solicitações podem ser feitas em paralelo até os limites de cota.
Endpoints
O ambiente interativo é composto por diferentes endpoints de API: padrão e alto volume.
Endpoint padrão
O endpoint padrão é adequado para a maioria dos usos feitos por pessoas e é o que alimenta o editor de código e os apps do Earth Engine. Especificamente, esse endpoint é mais adequado para aplicativos sensíveis à latência que envolvem um baixo volume de solicitações simultâneas não programáticas.
Endpoint de alto volume
O endpoint de alto volume foi projetado para processar um volume maior de solicitações em paralelo do que o endpoint padrão. As principais diferenças incluem:
- Latência maior: o endpoint de alto volume tem uma latência média maior por solicitação.
- Menos armazenamento em cache: fornece menos armazenamento em cache de resultados intermediários, portanto, consultas complexas podem exigir mais tempo de computação.
- Melhor para pequenas consultas automatizadas: o endpoint de alto volume se destaca por processar muitas solicitações programáticas, mas é mais adequado para consultas simples que não exigem agregação (como buscar blocos de imagens pré-criadas).
Para análises complexas que precisam de armazenamento em cache eficiente, o endpoint de API padrão pode ser a melhor opção. O endpoint de alto volume é otimizado para tarefas de alta capacidade e baixa computação. Consultas complexas normalmente exigem mais EECU-time ao usar o endpoint de alto volume do que no endpoint on-line normal.
Uso do endpoint de alto volume
Cliente Python
Ao inicializar a biblioteca earthengine
, transmita um parâmetro opt_url
e defina-o como
https://earthengine-highvolume.googleapis.com
.
Como sempre, transmita as credenciais adequadas e especifique o projeto do Cloud. Exemplo:
ee.Initialize(
credentials=credentials,
project='my-project',
opt_url='https://earthengine-highvolume.googleapis.com'
)
Cliente JavaScript
Ao inicializar a biblioteca earthengine
usando
ee.initialize()
,
transmita https://earthengine-highvolume.googleapis.com
para o primeiro parâmetro.
API REST
Direcione suas solicitações REST para
https://earthengine-highvolume.googleapis.com
(em vez de https://earthengine.googleapis.com
,
conforme mostrado no
Guia de início rápido da API REST,
por exemplo).
Ambiente do lote
Também chamado de pilha "assinada" ou "off-line", esse ambiente é otimizado
para processamento paralelo de alta latência de grandes quantidades de dados. As solicitações são
envios como tarefas para endpoints de processamento em lote, geralmente chamando funções de
import ou
exportação de dados (por exemplo, Export.*
e
ee.batch.*
) das bibliotecas de cliente do Earth Engine. Cada tarefa em lote tem uma
duração máxima de dez dias. Cada projeto oferece suporte a até 3.000 tarefas pendentes, mas cada usuário individual é limitado a um pequeno número de tarefas em execução simultaneamente.
Ciclo de vida da tarefa
As tarefas são enviadas para uma fila e ordenadas por prioridade
(a mais alta primeiro) e tempo de envio (a mais recente primeiro). As tarefas mudam do estado
SUBMITTED
(na fila) para o estado RUNNING
quando são atribuídas a um
processador de lote. Cada processador é responsável por orquestrar um número variável de workers de lote para executar o cálculo e produzir os resultados da tarefa.
O número de workers para uma tarefa é determinado pela capacidade do serviço EE de
paralelisar o job e não pode ser configurado pelo usuário.
Ao usar um projeto do Cloud, as tarefas ficam visíveis para qualquer pessoa com a permissão de listar tarefas no nível do projeto. Se o projeto estiver registrado para acesso pago ao Earth Engine, as tarefas serão organizadas em uma fila do projeto. Se o projeto estiver registrado para acesso não remunerado (de pesquisa), as tarefas serão programadas de forma independente para cada indivíduo, mas ainda estarão visíveis para todos os usuários do projeto.
As tarefas são concluídas quando criam os artefatos necessários (ativos do Earth Engine, arquivos no Google Cloud Storage etc.).
Gerenciamento de tarefas
As tarefas podem ser visualizadas e canceladas usando as seguintes interfaces:
- Página "Tasks" no console do Cloud
- Ativa o gerenciamento de tarefas no nível do projeto do Cloud. A partir de agora, essa é a principal interface do usuário para gerenciar tarefas.
- Página do Gerenciador de tarefas
- Essa interface mostra tarefas no nível do usuário e do projeto e oferece suporte à filtragem por nome da tarefa.
- Pasta "Tasks" do editor de código
- Permite o monitoramento de tarefas com um script do editor de código.
- Endpoint
ListOperations
e comandotask
- Ideal para visualizar e gerenciar tarefas de maneira programática.
Falhas na tarefa
Se uma tarefa falhar por um motivo que não será corrigido com uma nova tentativa (por exemplo, os dados
são inválidos), ela será marcada como FAILED
e não será executada novamente.
Se uma tarefa falhar por um motivo que possa ser intermitente (por exemplo, o tempo limite foi atingido ao executar uma computação), o Earth Engine vai tentar automaticamente fazer outra tentativa e preencher o campo retries
. As tarefas podem falhar até cinco vezes, e a falha final
faz com que toda a tarefa seja marcada como FAILED
.
ID da tarefa
Cada tarefa tem um ID alfanumérico no formato 3DNU363IM57LNU4SDTMB6I33
. Eles
podem ser visualizados ou acessados nas interfaces de
gerenciamento de tarefas. Se você estiver iniciando tarefas de maneira programática, receberá o ID da tarefa em
ee.data.newTaskId
. Ao solicitar
ajuda para depurar uma tarefa de exportação ou ingestão, forneça esse ID de tarefa como uma string
copiada (não uma captura de tela).
Lista de estados da tarefa
As tarefas podem ter os seguintes valores de state
:
UNSUBMITTED
, ainda pendente no clienteREADY
, na fila do servidorRUNNING
, em execução no momentoCOMPLETED
, concluídaFAILED
, concluída sem sucessoCANCEL_REQUESTED
, ainda em execução, mas foi solicitado o cancelamento (ou seja, não há garantia de que a tarefa será cancelada)CANCELLED
, cancelada pelo proprietário
Prioridade da tarefa
A prioridade da tarefa é um mecanismo para controlar a ordem das tarefas na fila. As tarefas de maior prioridade são programadas antes de outras tarefas pendentes com prioridades mais baixas, independentemente do tempo de envio. A prioridade padrão da tarefa é 100.
A capacidade de definir outras prioridades (mais altas ou mais baixas) em tarefas de exportação está disponível apenas para usuários de projetos registrados para acesso pago ao Earth Engine. Mudar a prioridade de uma tarefa de exportação não afeta a programação em relação a qualquer tarefa de importação, já que os dois tipos de tarefas são programados separadamente.
Exemplo: como usar prioridades de tarefas
Considere a lista de tarefas a seguir, em que as tarefas 1 a 5 são enviadas na ordem natural com a prioridade padrão. Elas são executadas na ordem em que foram enviados, já que as prioridades são todas iguais. Como dois slots de processamento em lote estão disponíveis para esse projeto, dois são executados simultaneamente (o primeiro e o segundo enviados).
Task name State Priority
---------------------------------------
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
O envio de uma nova tarefa, MyHighPriorityTask1
, não afeta as tarefas em execução:
Task name State Priority
---------------------------------------
MyHighPriorityTask READY 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
Depois que uma das tarefas em execução for concluída, a tarefa pendente com a maior prioridade será executada (neste caso, a tarefa de alta prioridade):
Task name State Priority
-----------------------------------------
MyHighPriorityTask RUNNING 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 COMPLETED 100
MyDefaultTask1 RUNNING 100