Lingkungan Pemrosesan

Earth Engine memiliki lingkungan yang berbeda untuk memproses data: interaktif dan batch. Kedua lingkungan ini (atau "realm") menangani berbagai jenis kueri dan memiliki karakteristik performa yang sangat berbeda, jadi penting untuk memahami kapan dan cara menggunakan masing-masing.

Lingkungan interaktif

Juga disebut stack "sinkron" atau "online", lingkungan ini dioptimalkan untuk menjawab permintaan kecil yang selesai dengan cepat (respons dibatasi hingga puluhan megabyte data dan harus selesai diproses dalam waktu lima menit). Banyak permintaan dapat dilakukan secara paralel hingga batas kuota.

Endpoint

Lingkungan interaktif terdiri dari endpoint API yang berbeda: standar dan volume tinggi.

Endpoint standar

Endpoint standar sesuai untuk sebagian besar penggunaan yang berbasis manusia, dan inilah yang mendukung Editor Kode dan Aplikasi Earth Engine. Secara khusus, endpoint ini paling cocok untuk aplikasi yang sensitif terhadap latensi, yang melibatkan permintaan serentak yang tidak terprogram dalam volume rendah.

Endpoint bervolume tinggi

Endpoint volume tinggi dirancang untuk menangani volume permintaan yang lebih tinggi secara paralel daripada endpoint standar. Perbedaan utamanya meliputi:

  • Latensi yang lebih tinggi: Endpoint volume tinggi memiliki latensi rata-rata per permintaan yang lebih tinggi.
  • Lebih sedikit caching: Menyediakan lebih sedikit caching hasil perantara, sehingga kueri yang kompleks mungkin memerlukan lebih banyak waktu komputasi.
  • Terbaik untuk kueri kecil otomatis: Endpoint volume tinggi sangat cocok untuk menangani banyak permintaan terprogram, tetapi paling cocok untuk kueri sederhana yang tidak memerlukan agregasi (seperti mengambil ubin dari gambar bawaan).

Untuk analisis kompleks yang memerlukan penyimpanan dalam cache yang efisien, endpoint API standar mungkin lebih disukai. Endpoint volume tinggi dioptimalkan untuk tugas dengan throughput tinggi dan komputasi rendah. Kueri kompleks biasanya memerlukan lebih banyak waktu EECU saat menggunakan endpoint bervolume tinggi daripada di endpoint online reguler.

Penggunaan endpoint bervolume tinggi

Klien Python

Saat melakukan inisialisasi library earthengine, teruskan parameter opt_url dan tetapkan ke https://earthengine-highvolume.googleapis.com. Seperti biasa, pastikan juga untuk meneruskan kredensial yang sesuai dan menentukan project Cloud. Contoh:

ee.Initialize(
    credentials=credentials,
    project='my-project',
    opt_url='https://earthengine-highvolume.googleapis.com'
)

Klien JavaScript

Saat melakukan inisialisasi library earthengine menggunakan ee.initialize(), teruskan https://earthengine-highvolume.googleapis.com untuk parameter pertama.

REST API

Arahkan permintaan REST Anda ke https://earthengine-highvolume.googleapis.com (bukan https://earthengine.googleapis.com, seperti yang ditunjukkan dalam Panduan Mulai Cepat REST API, misalnya).

Lingkungan batch

Juga disebut stack "asinkron" atau "offline", lingkungan ini dioptimalkan untuk pemrosesan paralel latensi tinggi dari data dalam jumlah besar. Permintaan dikirimkan sebagai tugas ke endpoint pemrosesan batch, biasanya dengan memanggil fungsi import atau ekspor data (misalnya, Export.* dan ee.batch.*) dari library klien Earth Engine. Setiap tugas batch memiliki masa berlaku maksimum sepuluh hari. Setiap project mendukung hingga 3.000 tugas yang tertunda, tetapi setiap pengguna individu dibatasi untuk sejumlah kecil tugas yang berjalan secara serentak.

Siklus proses tugas

Tugas dikirim ke antrean dan diurutkan berdasarkan prioritasnya (tertinggi terlebih dahulu) dan waktu pengiriman (paling awal terlebih dahulu). Tugas berubah dari status SUBMITTED (antrean) menjadi status RUNNING saat ditetapkan ke pemroses batch. Setiap prosesor bertanggung jawab untuk mengatur jumlah pekerja batch yang bervariasi untuk menjalankan komputasi dan menghasilkan hasil tugas. Jumlah pekerja untuk tugas ditentukan oleh kemampuan layanan EE untuk memparalelkan tugas dan tidak dapat dikonfigurasi oleh pengguna.

Saat menggunakan project Cloud, tugas dapat dilihat oleh siapa saja yang memiliki izin tingkat project untuk mencantumkan tugas. Jika project terdaftar untuk akses Earth Engine berbayar, tugas akan diatur dalam antrean seluruh project; jika project terdaftar untuk akses (riset) tidak berbayar, tugas akan dijadwalkan secara independen untuk setiap individu, tetapi tetap terlihat oleh semua pengguna project.

Tugas berhasil diselesaikan saat membuat artefak yang diperlukan (aset Earth Engine, file di Google Cloud Storage, dll.).

Pengelolaan tugas

Tugas dapat dilihat dan dibatalkan menggunakan antarmuka berikut:

Kegagalan tugas

Jika tugas gagal karena alasan yang tidak akan diperbaiki dengan mencoba lagi (misalnya, data tidak valid), tugas akan ditandai sebagai FAILED dan tidak akan dijalankan lagi.

Jika tugas gagal karena alasan yang mungkin bersifat intermiten (misalnya, waktu tunggunya habis saat menjalankan komputasi), Earth Engine akan otomatis mencoba mencobanya lagi dan mengisi kolom retries. Tugas dapat gagal hingga lima kali, dan kegagalan akhir akan menyebabkan seluruh tugas ditandai sebagai FAILED.

ID Tugas

Setiap tugas memiliki ID alfanumerik dalam bentuk 3DNU363IM57LNU4SDTMB6I33. Informasi ini dapat dilihat atau diperoleh melalui antarmuka pengelolaan tugas kami. Jika memulai tugas secara terprogram, Anda akan mendapatkan ID tugas dari ee.data.newTaskId. Saat meminta bantuan untuk men-debug tugas ekspor atau penyerapan, berikan ID tugas ini sebagai string yang dapat disalin (bukan screenshot).

Daftar status tugas

Tugas dapat memiliki nilai state berikut:

  • UNSUBMITTED, masih tertunda di klien
  • READY, dimasukkan dalam antrean di server
  • RUNNING, saat ini berjalan
  • COMPLETED, berhasil diselesaikan
  • FAILED, tidak berhasil diselesaikan
  • CANCEL_REQUESTED, masih berjalan tetapi telah diminta untuk dibatalkan (yaitu, bukan jaminan bahwa tugas akan dibatalkan)
  • CANCELLED, dibatalkan oleh pemilik

Prioritas tugas

Prioritas tugas adalah mekanisme untuk mengontrol urutan tugas dalam antrean. Tugas dengan prioritas lebih tinggi akan dijadwalkan sebelum tugas tertunda lainnya dengan prioritas lebih rendah, terlepas dari waktu pengirimannya. Prioritas tugas defaultnya adalah 100.

Kemampuan untuk menetapkan prioritas lain (lebih tinggi atau lebih rendah) pada tugas ekspor hanya tersedia untuk pengguna project yang terdaftar untuk akses Earth Engine berbayar. Mengubah prioritas tugas ekspor tidak memengaruhi cara penjadwalannya dibandingkan dengan tugas impor, karena kedua jenis tugas dijadwalkan secara terpisah.

Contoh: menggunakan prioritas tugas

Pertimbangkan daftar tugas berikut, dengan tugas 1-5 dikirim dalam urutan alami dengan prioritas default. Keduanya berjalan dalam urutan yang dikirimkan, karena prioritasnya sama, dan, karena dua slot pemrosesan batch tersedia untuk project ini, dua slot berjalan secara serentak (yang pertama dan kedua dikirimkan).

Task name           State      Priority
---------------------------------------
MyDefaultTask5      READY      100
MyDefaultTask4      READY      100
MyDefaultTask3      READY      100
MyDefaultTask2      RUNNING    100
MyDefaultTask1      RUNNING    100

Mengirimkan tugas baru, MyHighPriorityTask1, tidak akan memengaruhi tugas yang sedang berjalan:

Task name           State      Priority
---------------------------------------
MyHighPriorityTask    READY      500
MyDefaultTask5        READY      100
MyDefaultTask4        READY      100
MyDefaultTask3        READY      100
MyDefaultTask2        RUNNING    100
MyDefaultTask1        RUNNING    100

Setelah salah satu tugas yang sedang berjalan selesai, tugas tertunda dengan prioritas tertinggi akan berjalan (dalam hal ini, tugas prioritas tinggi):

Task name             State      Priority
-----------------------------------------
MyHighPriorityTask    RUNNING    500
MyDefaultTask5        READY      100
MyDefaultTask4        READY      100
MyDefaultTask3        READY      100
MyDefaultTask2        COMPLETED  100
MyDefaultTask1        RUNNING    100