Earth Engine có nhiều môi trường để xử lý dữ liệu: tương tác và theo lô. Hai môi trường (hoặc "realm") này xử lý các loại truy vấn khác nhau và có đặc điểm hiệu suất rất khác nhau, vì vậy, bạn cần hiểu rõ 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ỏ hoàn thành nhanh chóng (phản hồi bị 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ể đưa ra nhiều yêu cầu song song cho đến khi đạt 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à số 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à đây là điểm cuối hỗ trợ Trình chỉnh sửa mã và Các ứ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 một lượng nhỏ các yêu cầu đồng thời, không theo chương trình.
Điểm cuối có lưu lượng truy cập lớn
Điểm cuối có lưu lượng truy cập cao được thiết kế để xử lý song song số lượng yêu cầu lớn hơn so với điểm cuối tiêu chuẩn. Những điểm khác biệt chính bao gồm:
- Độ trễ cao hơn: Điểm cuối có lưu lượng truy cập cao có độ trễ trung bình cao hơn cho mỗi yêu cầu.
- Ít lưu vào bộ nhớ đệm hơn: Công 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ó lưu lượng truy cập cao này xử lý rất tốt 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 các ô từ hình ảnh được tạo sẵn).
Đối với những phân tích phức tạp cần có bộ nhớ đệm hiệu quả, bạn nên 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ó thông lượng cao và mức tính toán thấp. Các truy vấn phức tạp thường cần nhiều EECU-time hơn khi sử dụng điểm cuối có lưu lượng truy cập cao so với khi sử dụng điểm cuối trực tuyến thông thường.
Sử dụng điểm cuối có lưu lượng truy cập cao
Ứ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ư thường lệ, hãy nhớ truyền thông tin đăng nhập phù 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 các yêu cầu REST đến https://earthengine-highvolume.googleapis.com (thay vì https://earthengine.googleapis.com, như trong Hướng dẫn nhanh về API REST, chẳng hạn).
Môi trường theo lô
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 lượng lớn dữ liệu có độ trễ cao. Các yêu cầu được gửi dưới dạng các tác vụ đến các điểm cuối xử lý hàng loạt, thường bằng cách gọi các hàm nhập hoặc xuất dữ liệu (ví dụ: Export.* và ee.batch.*) từ các thư viện ứng dụng Earth Engine. Mỗi tác vụ hàng loạt 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 riêng lẻ chỉ được phép có một số lượng nhỏ tác vụ đang chạy đồng thời.
Vòng đời của tác vụ
Các tác vụ được gửi đến một 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ụ sẽ thay đổi từ trạng thái SUBMITTED (được xếp hàng đợi) sang 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ô khác nhau để chạy quá trình tính toán 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 bằng khả năng song song hoá công việc của dịch vụ EE và người dùng không thể định cấu hình.
Khi bạn sử dụng một dự án trên đám mây, những người có quyền liệt kê các việc cần làm ở cấp dự án sẽ thấy các việc cần làm. Nếu dự án được đăng ký để truy cập vào Earth Engine có tính phí, thì các tác vụ sẽ được sắp xếp trong một hàng đợi trên toàn dự án; nếu dự án được đăng ký để truy cập miễn phí (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ị cho người dùng của dự án.
Các tác vụ hoàn tất thành công khi tạo ra những 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ách sử dụng các giao diện sau:
- Trang Tasks (Tác vụ) trong Cloud Console
- Cho phép quản lý công việc ở cấp dự án trên đám mây. Từ nay về sau, đây sẽ là giao diện người dùng chính để quản lý các việc cần làm.
- Trang Trình quản lý tác vụ
- Giao diện này cho thấy các tác vụ ở cấp người dùng và dự án, đồng thời hỗ trợ lọc theo tên tác vụ.
- Thẻ Tasks (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 một tập lệnh Trình chỉnh sửa mã.
- Điểm cuối
ListOperationsvà lệnhtask- Phù hợp nhất để xem và quản lý các việc cần làm theo cách lập trình.
Việc cần làm không thành công
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ì một lý do có thể không liên tục (ví dụ: hết thời gian chờ khi chạy một phép tính), Earth Engine sẽ tự động cố gắng thử lại và điền vào trường retries. Các tác vụ có thể thất bại tối đa 5 lần và lần thất bại cuối cùng sẽ khiến toàn bộ tác vụ được đánh dấu là FAILED.
Mã việc cần làm
Mỗi tác vụ đều có một mã nhận dạng gồm cả chữ và số theo dạng 3DNU363IM57LNU4SDTMB6I33. Bạn có thể xem hoặc lấy những thông tin này thông qua các giao diện quản lý tác vụ của chúng tôi. Nếu đang bắt đầu các tác vụ theo phương thức lập trình, bạn sẽ nhận được mã nhận dạng 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ã nhận dạng 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 của nhiệm vụ
Các nhiệm vụ có thể có các giá trị state sau:
UNSUBMITTED, vẫn đang chờ xử lý trên ứng dụngREADY, được đưa vào hàng đợi trên máy chủRUNNING, đang chạyCOMPLETED, đã hoàn tất thành côngFAILED, hoàn tất không thành côngCANCEL_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 việc cần làm
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 của chúng. 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 không ảnh hưởng đến cách tác vụ đó được lên lịch 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 việc cần làm
Hãy xem xét danh sách việc cần làm sau đây, trong đó các việc cần làm 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 lệnh này chạy theo thứ tự được gửi, vì tất cả đều có cùng mức độ ưu tiên. Ngoài ra, vì dự án này có hai vị trí xử lý hàng loạt, nên hai lệnh sẽ chạy đồng thời (lệnh đầu tiên và lệnh 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 của chúng ta):
Task name State Priority
-----------------------------------------
MyHighPriorityTask RUNNING 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 COMPLETED 100
MyDefaultTask1 RUNNING 100