Earth Engine có nhiều môi trường để xử lý dữ liệu: tương tác và tập hợp. Hai môi trường này (hoặc "phạm vi") xử lý nhiều loại truy vấn và có các đặc điểm hiệu suất rất khác nhau, vì vậy, điều quan trọng là bạn phải hiểu thời điểm và cách sử dụng từng môi trường.
Môi trường tương tác
Còn được gọi là ngăn xếp "đồng bộ" hoặc "trực tuyến", môi trường này được tối ưu hoá để trả lời các yêu cầu nhỏ và hoàn tất nhanh chóng (phản hồi được giới hạn ở hàng chục megabyte dữ liệu và phải hoàn tất quá trình xử lý trong vòng 5 phút). Bạn có thể thực hiện nhiều yêu cầu song song lên đến giới hạn hạn mức.
Điểm cuối
Môi trường tương tác bao gồm nhiều điểm cuối API: tiêu chuẩn và lượng lớn.
Điểm cuối tiêu chuẩn
Điểm cuối tiêu chuẩn phù hợp với hầu hết các trường hợp sử dụng do con người thực hiện và là nền tảng cho Trình chỉnh sửa mã và Ứng dụng Earth Engine. Cụ thể, điểm cuối này phù hợp nhất với các ứng dụng nhạy cảm với độ trễ, liên quan đến số lượng yêu cầu không đồng thời, không theo phương thức lập trình thấp.
Điểm cuối có khối lượng lớn
Điểm cuối có khối lượng lớn được thiết kế để xử lý song song nhiều yêu cầu hơn so với điểm cuối tiêu chuẩn. Sau đây là một số điểm khác biệt chính:
- Độ trễ cao hơn: Điểm cuối có lưu lượng lớn có độ trễ trung bình cao hơn trên mỗi yêu cầu.
- Lưu ít vào bộ nhớ đệm hơn: Phương thức này lưu ít kết quả trung gian vào bộ nhớ đệm hơn, vì vậy, các truy vấn phức tạp có thể cần nhiều thời gian tính toán hơn.
- Phù hợp nhất với các truy vấn nhỏ, tự động: Điểm cuối có khối lượng lớn rất hiệu quả trong việc xử lý nhiều yêu cầu có lập trình, nhưng phù hợp nhất với các truy vấn đơn giản không yêu cầu tổng hợp (chẳng hạn như tìm nạp thẻ thông tin từ hình ảnh tạo sẵn).
Đối với các hoạt động phân tích phức tạp cần lưu vào bộ nhớ đệm hiệu quả, bạn nên sử dụng điểm cuối API tiêu chuẩn. Điểm cuối có khối lượng lớn được tối ưu hoá cho các tác vụ có lưu lượng cao, tính toán thấp. Các truy vấn phức tạp thường yêu cầu nhiều thời gian EECU hơn khi sử dụng điểm cuối có khối lượng lớn so với điểm cuối trực tuyến thông thường.
Sử dụng điểm cuối có lưu lượng lớn
Ứng dụng Python
Khi khởi chạy thư viện earthengine
, hãy truyền tham số opt_url
và đặt tham số này thành https://earthengine-highvolume.googleapis.com
.
Như mọi khi, hãy nhớ truyền vào thông tin xác thực thích hợp và chỉ định dự án trên Cloud. Ví dụ:
ee.Initialize(
credentials=credentials,
project='my-project',
opt_url='https://earthengine-highvolume.googleapis.com'
)
Ứng dụng JavaScript
Khi khởi chạy thư viện earthengine
bằng ee.initialize()
, hãy truyền https://earthengine-highvolume.googleapis.com
cho tham số đầu tiên.
API REST
Chuyển hướng các yêu cầu REST đến https://earthengine-highvolume.googleapis.com
(thay vì https://earthengine.googleapis.com
, chẳng hạn như trong phần Bắt đầu nhanh với API REST).
Môi trường xử lý hàng loạt
Còn được gọi là ngăn xếp "không đồng bộ" hoặc "ngoại tuyến", môi trường này được tối ưu hoá để xử lý song song với độ trễ cao đối với một lượng lớn dữ liệu. Các yêu cầu được gửi dưới dạng tác vụ đến các điểm cuối xử lý hàng loạt, thường là bằng cách gọi các hàm import hoặc xuất dữ liệu (ví dụ: Export.*
và
ee.batch.*
) từ thư viện ứng dụng Earth Engine. Mỗi tác vụ theo lô có thời gian tồn tại tối đa là 10 ngày. Mỗi dự án hỗ trợ tối đa 3.000 tác vụ đang chờ xử lý, nhưng mỗi người dùng cá nhân chỉ được giới hạn ở một số ít tác vụ chạy đồng thời.
Vòng đời tác vụ
Các tác vụ được gửi vào hàng đợi và sắp xếp theo mức độ ưu tiên (cao nhất trước) và thời gian gửi (sớm nhất trước). Các tác vụ thay đổi từ trạng thái SUBMITTED
(đã đưa vào hàng đợi) thành trạng thái RUNNING
khi được chỉ định cho một trình xử lý hàng loạt. Mỗi bộ xử lý chịu trách nhiệm điều phối một số lượng worker theo lô để chạy phép tính và tạo ra kết quả của tác vụ.
Số lượng worker cho một tác vụ được xác định theo khả năng của dịch vụ EE trong việc chạy song song công việc và không phải do người dùng định cấu hình.
Khi sử dụng dự án trên Google Cloud, bất kỳ ai có quyền liệt kê tác vụ ở cấp dự án đều có thể xem các tác vụ. Nếu dự án được đăng ký để sử dụng Earth Engine có tính phí, thì các tác vụ sẽ được sắp xếp trong hàng đợi trên toàn dự án; nếu dự án được đăng ký để sử dụng Earth Engine không tính phí (dùng cho mục đích nghiên cứu), thì các tác vụ sẽ được lên lịch độc lập cho từng cá nhân nhưng vẫn hiển thị với người dùng của dự án.
Các tác vụ hoàn tất thành công khi tạo các cấu phần phần mềm cần thiết (tài sản Earth Engine, tệp trong Google Cloud Storage, v.v.).
Quản lý công việc
Bạn có thể xem và huỷ các tác vụ bằng các giao diện sau:
- Trang Tác vụ trong Cloud Console
- Cho phép quản lý công việc ở cấp dự án trên Google Cloud. Từ giờ trở đi, đây sẽ là giao diện người dùng chính để quản lý các tác vụ.
- Trang Trình quản lý tác vụ
- Giao diện này hiển thị các tác vụ ở cấp người dùng và cấp dự án, đồng thời hỗ trợ lọc theo tên tác vụ.
- Thẻ Tác vụ của trình soạn thảo mã
- Cho phép theo dõi các tác vụ cùng với tập lệnh Trình soạn thảo mã.
- Điểm cuối
ListOperations
và lệnhtask
- Phù hợp nhất để xem và quản lý các tác vụ theo phương thức lập trình.
Lỗi tác vụ
Nếu một tác vụ không thành công vì lý do không thể khắc phục bằng cách thử lại (ví dụ: dữ liệu không hợp lệ), thì tác vụ đó sẽ được đánh dấu là FAILED
và sẽ không chạy lại.
Nếu một tác vụ không thành công vì lý do có thể là không liên tục (ví dụ: hết thời gian khi chạy một phép tính), Earth Engine sẽ tự động thử lại tác vụ đó và điền vào trường retries
. Các tác vụ có thể không thành công tối đa 5 lần và lỗi cuối cùng sẽ khiến toàn bộ tác vụ bị đánh dấu là FAILED
.
Mã việc cần làm
Mỗi tác vụ có một mã nhận dạng gồm chữ và số ở dạng 3DNU363IM57LNU4SDTMB6I33
. Bạn có thể xem hoặc lấy các thông tin này thông qua giao diện quản lý tác vụ. Nếu bắt đầu các tác vụ theo phương thức lập trình, bạn sẽ nhận được mã tác vụ từ ee.data.newTaskId
. Khi yêu cầu trợ giúp gỡ lỗi cho một tác vụ xuất hoặc nhập, hãy cung cấp mã tác vụ này dưới dạng một chuỗi có thể sao chép (không phải ảnh chụp màn hình).
Danh sách trạng thái tác vụ
Tác vụ có thể có các giá trị state
sau:
UNSUBMITTED
, vẫn đang chờ xử lý trên máy kháchREADY
, được đưa vào hàng đợi trên máy chủRUNNING
, đang chạyCOMPLETED
, đã hoàn tất thành côngFAILED
, không hoàn tất đượcCANCEL_REQUESTED
, vẫn đang chạy nhưng đã được yêu cầu huỷ (tức là không đảm bảo rằng tác vụ sẽ bị huỷ)CANCELLED
, do chủ sở hữu huỷ
Mức độ ưu tiên của tác vụ
Mức độ ưu tiên của tác vụ là một cơ chế để kiểm soát thứ tự của các tác vụ trong hàng đợi. Các tác vụ có mức độ ưu tiên cao hơn sẽ được lên lịch trước các tác vụ đang chờ xử lý khác có mức độ ưu tiên thấp hơn, bất kể thời gian gửi. Mức độ ưu tiên mặc định của tác vụ là 100.
Chỉ những người dùng các dự án đã đăng ký quyền truy cập có tính phí vào Earth Engine mới có thể đặt các mức độ ưu tiên khác (cao hơn hoặc thấp hơn) cho các tác vụ xuất. Việc thay đổi mức độ ưu tiên của một tác vụ xuất sẽ không ảnh hưởng đến cách lên lịch tác vụ đó so với bất kỳ tác vụ nhập nào, vì hai loại tác vụ này được lên lịch riêng biệt.
Ví dụ: sử dụng mức độ ưu tiên của tác vụ
Hãy xem xét danh sách công việc sau đây, trong đó các công việc từ 1 đến 5 được gửi theo thứ tự tự nhiên với mức độ ưu tiên mặc định. Các công việc này chạy theo thứ tự được gửi, vì các mức độ ưu tiên đều giống nhau và vì có hai khung xử lý hàng loạt cho dự án này, nên hai công việc sẽ chạy đồng thời (công việc đầu tiên và công việc thứ hai được gửi).
Task name State Priority
---------------------------------------
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
Việc gửi một tác vụ mới, MyHighPriorityTask1
, sẽ không ảnh hưởng đến các tác vụ đang chạy:
Task name State Priority
---------------------------------------
MyHighPriorityTask READY 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
Sau khi một trong các tác vụ đang chạy hoàn tất, tác vụ đang chờ xử lý có mức độ ưu tiên cao nhất sẽ chạy (trong trường hợp này là tác vụ có mức độ ưu tiên cao):
Task name State Priority
-----------------------------------------
MyHighPriorityTask RUNNING 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 COMPLETED 100
MyDefaultTask1 RUNNING 100