Môi trường xử lý

Earth Engine có nhiều môi trường để xử lý dữ liệu: tương táctheo 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ẩnsố 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.*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:

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ụng
  • READY, được đưa vào hàng đợi trên máy chủ
  • RUNNING, đang chạy
  • COMPLETED, đã hoàn tất thành công
  • FAILED, hoàn tất không thành công
  • CANCEL_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