O Earth Engine tem ambientes diferentes para processamento de dados: interativo e em lote. Esses dois ambientes (ou "reinos") processam tipos diferentes de consultas e têm características de desempenho muito diferentes. Por isso, é importante entender quando e como usar cada um deles.
Ambiente interativo
: execute cálculos de forma síncrona e inclua a saída diretamente na resposta.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 até cinco minutos). Muitas solicitações podem ser feitas em paralelo até os limites de cota.
Endpoints
O ambiente interativo é composto por diferentes endpoints da API: padrão e de alto volume.
Endpoint padrão
O endpoint padrão é adequado para a maioria dos usos humanos 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 e 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:
- Maior latência: o endpoint de alto volume tem uma latência média maior por solicitação.
- Menos armazenamento em cache: ele oferece menos armazenamento em cache de resultados intermediários. Portanto, consultas complexas podem exigir mais tempo de computação.
- Melhor para consultas automatizadas e pequenas: o endpoint de alto volume é excelente para 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 preferível. O endpoint de alto volume é otimizado para tarefas de alta capacidade de processamento e baixa computação. Consultas complexas normalmente exigem mais tempo de EECU 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 também 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,
como mostrado no
Guia de início rápido da API REST,
por exemplo).
Ambiente em lote
Também chamado de pilha "assíncrona" ou "off-line", esse ambiente é otimizado para processamento paralelo de alta latência de grandes quantidades de dados. As solicitações são
enviadas como tarefas para endpoints de processamento em lote, geralmente chamando funções de
importação ou
exportação de dados (por exemplo, Export.* e
ee.batch.*) das bibliotecas de cliente do Earth Engine. Cada tarefa em lote tem um tempo máximo de dez dias. Cada projeto oferece suporte a até 3.000 tarefas pendentes
tarefas, mas cada usuário individual
é limitado a um pequeno número de tarefas em execução simultânea
tarefas.
Ciclo de vida da tarefa
As tarefas são enviadas a uma fila e ordenadas por prioridade (maior primeiro) e tempo de envio (mais antigo primeiro). As tarefas mudam do estado SUBMITTED (enfileirado) para o estado RUNNING quando são atribuídas a um processador em lote. Cada processador é responsável por orquestrar um número variável de workers em lote para executar a computação e produzir os resultados da tarefa.
O número de workers para uma tarefa é determinado pela capacidade do serviço do EE de paralelizar o job e não pode ser configurado pelo usuário.
Ao usar um projeto na nuvem, as tarefas ficam visíveis para qualquer pessoa com a permissão para envolvidos no projeto para listar tarefas. Se o projeto estiver registrado para acesso pago ao Earth Engine, as tarefas serão organizadas em uma fila de todo o projeto. Se o projeto estiver registrado para acesso não pago (pesquisa), as tarefas serão programadas de forma independente para cada pessoa, mas ainda ficarão visíveis para todos os usuários do projeto.
As tarefas são concluídas quando criam os artefatos necessários (recursos 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 "Tarefas" no Console do Cloud
- Permite o gerenciamento de tarefas no nível do projeto na nuvem. Essa é a principal interface do usuário para gerenciar tarefas.
- Página "Gerenciador de tarefas"
- Essa interface mostra tarefas no nível do usuário e do projeto e oferece suporte à filtragem por nome da tarefa.
- Guia "Tarefas" do Editor de código
- Permite monitorar tarefas ao lado de um script do Editor de código.
ListOperationsendpoint etaskcomando- Melhor para visualizar e gerenciar tarefas de maneira programática.
Falhas de tarefas
Se uma tarefa falhar por um motivo que não será corrigido ao tentar novamente (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 pode ser intermitente (por exemplo, o tempo limite expirou ao executar uma computação), o Earth Engine vai tentar novamente e preencher o campo retries automaticamente. As tarefas podem falhar até cinco vezes, e a falha final fará com que toda a tarefa seja marcada como FAILED.
ID da tarefa
Cada tarefa tem um ID alfanumérico do formulário 3DNU363IM57LNU4SDTMB6I33. Eles
podem ser visualizados ou obtidos nas nossas interfaces de gerenciamento de tarefas. Se você estiver iniciando tarefas de maneira programática, receberá o ID da tarefa de
ee.data.newTaskId. Ao solicitar ajuda para depurar uma tarefa de exportação ou ingestão, forneça esse ID como uma string copiável (não uma captura de tela).
Lista de estados de tarefas
As tarefas podem ter os seguintes valores de state:
UNSUBMITTED, ainda pendente no clienteREADY, enfileirado no servidorRUNNING, em execuçãoCOMPLETED, concluídoFAILED, concluído sem sucessoCANCEL_REQUESTED, ainda em execução, mas foi solicitado o cancelamento (ou seja, não é uma garantia de que a tarefa será cancelada)CANCELLED, cancelado 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 de tarefa padrão é 100.
A capacidade de definir outras prioridades (maiores ou menores) em tarefas de exportação só está disponível para usuários de projetos registrados para acesso pago ao Earth Engine acesso. A mudança da prioridade de uma tarefa de exportação não afeta a programação dela em relação a nenhuma 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 de 1 a 5 são enviadas na ordem natural com a prioridade padrão. Elas são executadas na ordem em que foram enviadas, já que as prioridades são todas iguais e, 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 (nesse caso, nossa 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