Earth Engine tiene diferentes entornos para procesar datos: interactivo y por lotes. Estos dos entornos (o "reinos") controlan diferentes tipos de consultas y tienen características de rendimiento muy diferentes, por lo que es importante comprender cuándo y cómo usar cada uno.
Entorno interactivo
Este entorno, también llamado pila "síncrona" o "en línea", está optimizado para responder solicitudes pequeñas que terminan rápidamente (las respuestas se limitan a decenas de megabytes de datos y deben terminar de procesarse en un plazo de cinco minutos). Se pueden realizar muchas solicitudes en paralelo hasta los límites de la cuota.
Extremos
El entorno interactivo se compone de diferentes extremos de API: estándares y de alto volumen.
Extremo estándar
El extremo estándar es adecuado para la mayoría de los usos manuales y es lo que potencia las apps de Code Editor y Earth Engine. Específicamente, este extremo es más adecuado para aplicaciones sensibles a la latencia que involucran un volumen bajo de solicitudes simultáneas no programáticas.
Extremo de alto volumen
El extremo de alto volumen está diseñado para controlar un volumen más alto de solicitudes en paralelo que el extremo estándar. Las diferencias clave incluyen lo siguiente:
- Latencia más alta: El extremo de alto volumen tiene una latencia promedio más alta por solicitud.
- Menos almacenamiento en caché: Proporciona menos almacenamiento en caché de resultados intermedios, por lo que las consultas complejas pueden requerir más tiempo de procesamiento.
- Mejor para consultas pequeñas y automatizadas: El extremo de alto volumen se destaca por controlar muchas solicitudes programáticas, pero es más adecuado para consultas simples que no requieren agregación (como recuperar tarjetas de imágenes precompiladas).
Para los análisis complejos que necesitan un almacenamiento en caché eficiente, es posible que sea preferible el extremo de la API estándar. El extremo de gran volumen está optimizado para tareas de alta capacidad de procesamiento y baja computación. Por lo general, las consultas complejas requieren más tiempo de EECU cuando se usa el extremo de alto volumen que en el extremo en línea normal.
Uso del extremo de alto volumen
Cuando inicialices la biblioteca earthengine
, pasa un parámetro opt_url
y establécelo en https://earthengine-highvolume.googleapis.com
.
Como siempre, asegúrate de pasar las credenciales correctas y especificar el proyecto de Cloud. Por ejemplo:
ee.Initialize(
credentials=credentials,
project='my-project',
opt_url='https://earthengine-highvolume.googleapis.com'
)
Cuando inicialices la biblioteca earthengine
con ee.initialize()
, pasa https://earthengine-highvolume.googleapis.com
para el primer parámetro.
Dirige tus solicitudes de REST a https://earthengine-highvolume.googleapis.com
(en lugar de https://earthengine.googleapis.com
, como se muestra en la Guía de inicio rápido de la API de REST, por ejemplo).
Entorno de Batch
Este entorno, también llamado pila "asíncrona" o "sin conexión", está optimizado para el procesamiento en paralelo de alta latencia de grandes cantidades de datos. Las solicitudes se envían como tareas a los extremos de procesamiento por lotes, por lo general, llamando a las funciones de import o exportación de datos (p.ej., Export.*
y ee.batch.*
) de las bibliotecas cliente de Earth Engine. Cada tarea por lotes tiene una
duración máxima de diez días. Cada proyecto admite hasta 3,000 tareas pendientes, pero cada usuario individual tiene un límite de una pequeña cantidad de tareas que se ejecutan de forma simultánea.
Ciclo de vida de la tarea
Las tareas se envían a una cola y se ordenan según su prioridad (la más alta primero) y el tiempo de envío (la más antigua primero). Las tareas cambian del estado SUBMITTED
(en cola) al estado RUNNING
cuando se asignan a un procesador por lotes. Cada procesador es responsable de organizar una cantidad variable de trabajadores por lotes para ejecutar el procesamiento y producir los resultados de la tarea.
La cantidad de trabajadores para una tarea se determina según la capacidad del servicio de EE para paralelizar el trabajo y el usuario no puede configurarla.
Cuando usas un proyecto de Cloud, las tareas son visibles para cualquier persona que tenga el permiso a nivel del proyecto para enumerarlas. Si el proyecto está registrado para el acceso pagado a Earth Engine, las tareas se organizan en una cola para todo el proyecto. Si el proyecto está registrado para el acceso no pagado (investigación), las tareas se programan de forma independiente para cada persona, pero siguen siendo visibles para todos los usuarios del proyecto.
Las tareas se completan correctamente cuando crean los artefactos necesarios (recursos de Earth Engine, archivos en Google Cloud Storage, etcétera).
Administración de tareas
Las tareas se pueden ver y cancelar con las siguientes interfaces:
- Página Tasks en la consola de Cloud
- Habilita la administración de tareas a nivel del proyecto de Cloud. En el futuro, esta será la interfaz de usuario principal para administrar tareas.
- Página del Administrador de tareas
- Esta interfaz muestra las tareas a nivel del usuario y del proyecto, y admite la filtración por nombre de tarea.
- pestaña Tasks del editor de código
- Permite supervisar tareas junto con una secuencia de comandos del editor de código.
- Extremo
ListOperations
y comandotask
- Es mejor para ver y administrar tareas de forma programática.
Fallas de tareas
Si una tarea falla por un motivo que no se solucionará con un reintento (p.ej., los datos
no son válidos), la tarea se marcará como FAILED
y no se volverá a ejecutar.
Si una tarea falla por un motivo que podría ser intermitente (p.ej., se agotó el tiempo de espera cuando se ejecutaba un procesamiento), Earth Engine intentará volver a ejecutarla automáticamente y propagará el campo retries
. Las tareas pueden fallar hasta cinco veces, y la falla final hará que toda la tarea se marque como FAILED
.
ID de la tarea
Cada tarea tiene un ID alfanumérico con el formato 3DNU363IM57LNU4SDTMB6I33
. Se pueden ver o obtener a través de nuestras interfaces de administración de tareas. Si inicias tareas de manera programática, obtienes el ID de la tarea de ee.data.newTaskId
. Cuando solicites ayuda para depurar una tarea de exportación o transferencia, proporciona este ID de tarea como una cadena que se pueda copiar (no una captura de pantalla).
Lista de estados de tareas
Las tareas pueden tener los siguientes valores de state
:
UNSUBMITTED
, aún pendiente del clienteREADY
, en fila en el servidorRUNNING
, en ejecución actualmenteCOMPLETED
, completado correctamenteFAILED
, completado con erroresCANCEL_REQUESTED
, aún se está ejecutando, pero se solicitó que se cancele (es decir, no es una garantía de que se cancelará la tarea)CANCELLED
, cancelada por el propietario
Prioridad de la tarea
La prioridad de la tarea es un mecanismo para controlar el orden de las tareas en la cola. Las tareas de prioridad más alta se programan antes que otras tareas pendientes con prioridades más bajas, independientemente del momento en que se envíen. La prioridad de la tarea predeterminada es 100.
La capacidad de establecer otras prioridades (más altas o más bajas) en las tareas de exportación solo está disponible para los usuarios de proyectos registrados para obtener acceso pagado a Earth Engine. Cambiar la prioridad de una tarea de exportación no afecta la forma en que se programa en relación con cualquier tarea de importación, ya que los dos tipos de tareas se programan por separado.
Ejemplo: Usa prioridades de tareas
Considera la siguiente lista de tareas, en la que las tareas del 1 al 5 se envían en su orden natural con la prioridad predeterminada. Se ejecutan en el orden en que se enviaron, ya que las prioridades son las mismas y, como hay dos ranuras de procesamiento por lotes disponibles para este proyecto, dos se ejecutan de forma simultánea (la primera y la segunda enviadas).
Task name State Priority
---------------------------------------
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
El envío de una tarea nueva, MyHighPriorityTask1
, no afectará a las tareas en ejecución:
Task name State Priority
---------------------------------------
MyHighPriorityTask READY 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
Una vez que se complete una de las tareas en ejecución, se ejecutará la tarea pendiente con la prioridad más alta (en este caso, nuestra tarea de prioridad alta):
Task name State Priority
-----------------------------------------
MyHighPriorityTask RUNNING 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 COMPLETED 100
MyDefaultTask1 RUNNING 100