Ambientes de processamento

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

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:

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 cliente
  • READY, enfileirado no servidor
  • RUNNING, em execução
  • COMPLETED, concluído
  • FAILED, concluído sem sucesso
  • CANCEL_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