Earth Engine에는 데이터를 처리하기 위한 다양한 환경(대화형, 일괄)이 있습니다. 이 두 환경 (또는 '영역')은 서로 다른 유형의 쿼리를 처리하고 성능 특성이 매우 다르므로 각 환경을 언제 어떻게 사용하는지 이해하는 것이 중요합니다.
대화형 환경
'동기' 또는 '온라인' 스택이라고도 하는 이 환경은 빠르게 완료되는 작은 요청에 응답하도록 최적화되어 있습니다 (대답은 수십 메가바이트의 데이터로 제한되며 5분 이내에 처리를 완료해야 함). 할당량 한도까지 여러 요청을 동시에 할 수 있습니다.
엔드포인트
대화형 환경은 표준 및 대량의 다양한 API 엔드포인트로 구성됩니다.
표준 엔드포인트
표준 엔드포인트는 대부분의 사용자 중심 사용에 적합하며 코드 편집기 및 Earth Engine 앱을 지원합니다. 특히 이 엔드포인트는 동시 비프로그래매틱 요청의 양이 적은 지연 시간에 민감한 애플리케이션에 가장 적합합니다.
대량 엔드포인트
대량 엔드포인트는 표준 엔드포인트보다 더 많은 요청을 병렬로 처리하도록 설계되었습니다. 가장 큰 차이점은 다음과 같습니다.
- 지연 시간 증가: 대량 엔드포인트의 요청당 평균 지연 시간이 더 깁니다.
- 캐싱 감소: 중간 결과의 캐싱이 적으므로 복잡한 쿼리에 더 많은 컴퓨팅 시간이 필요할 수 있습니다.
- 자동화된 소규모 쿼리에 가장 적합: 대량 엔드포인트는 많은 프로그래매틱 요청을 처리하는 데 탁월하지만 집계가 필요하지 않은 간단한 쿼리 (예: 사전 빌드된 이미지에서 타일 가져오기)에 가장 적합합니다.
효율적인 캐싱이 필요한 복잡한 분석의 경우 표준 API 엔드포인트가 더 적합할 수 있습니다. 대량 엔드포인트는 높은 처리량과 낮은 컴퓨팅 태스크에 최적화되어 있습니다. 복잡한 쿼리는 일반적으로 대량 엔드포인트를 사용할 때 일반 온라인 엔드포인트에서보다 더 많은 EECU 시간이 필요합니다.
대량 엔드포인트 사용
Python 클라이언트
earthengine 라이브러리를 초기화할 때 opt_url 매개변수를 전달하고 https://earthengine-highvolume.googleapis.com로 설정합니다.
언제나처럼 적절한 사용자 인증 정보를 전달하고 Cloud 프로젝트를 지정해야 합니다. 예를 들면 다음과 같습니다.
ee.Initialize(
credentials=credentials,
project='my-project',
opt_url='https://earthengine-highvolume.googleapis.com'
)
자바스크립트 클라이언트
ee.initialize()를 사용하여 earthengine 라이브러리를 초기화할 때 첫 번째 매개변수로 https://earthengine-highvolume.googleapis.com를 전달합니다.
REST API
REST 요청을 https://earthengine-highvolume.googleapis.com로 전달합니다(예: REST API 빠른 시작에 표시된 대로 https://earthengine.googleapis.com 대신).
배치 환경
'비동기' 또는 '오프라인' 스택이라고도 하는 이 환경은 대량의 데이터에 대한 지연 시간이 긴 병렬 처리에 최적화되어 있습니다. 요청은 일반적으로 Earth Engine 클라이언트 라이브러리에서 데이터 import 또는 export 함수 (예: Export.* 및 ee.batch.*)를 호출하여 일괄 처리 엔드포인트에 작업으로 제출됩니다. 각 배치 작업의 최대 전체 기간은 10일입니다. 각 프로젝트는 최대 3, 000개의 대기 중인 작업을 지원하지만 각 개별 사용자는 소수의 동시에 실행되는 작업으로 제한됩니다.
작업 수명 주기
작업은 큐에 제출되고 우선순위(가장 높음이 먼저)와 제출 시간 (가장 빠름이 먼저)에 따라 정렬됩니다. 작업이 일괄 처리기에 할당되면 SUBMITTED (대기열에 추가됨) 상태에서 RUNNING 상태로 변경됩니다. 각 프로세서는 다양한 수의 일괄 작업자를 오케스트레이션하여 계산을 실행하고 작업 결과를 생성합니다.
작업의 작업자 수는 EE 서비스의 작업 병렬화 기능에 따라 결정되며 사용자가 구성할 수 없습니다.
Cloud 프로젝트를 사용하는 경우 작업을 나열할 수 있는 프로젝트 수준 권한이 있는 모든 사용자에게 작업이 표시됩니다. 프로젝트가 유료 Earth Engine 액세스에 등록된 경우 작업은 프로젝트 전체 큐에 정리됩니다. 프로젝트가 무료 (연구) 액세스에 등록된 경우 작업은 각 개인에 대해 독립적으로 예약되지만 프로젝트 사용자 간에 계속 표시됩니다.
필요한 아티팩트 (Earth Engine 애셋, Google Cloud Storage의 파일 등)를 만들면 작업이 성공적으로 완료됩니다.
작업 관리
다음 인터페이스를 사용하여 작업을 보고 취소할 수 있습니다.
- Cloud 콘솔의 작업 페이지
- Cloud 프로젝트 수준에서 작업 관리를 사용 설정합니다. 앞으로 이 인터페이스가 작업을 관리하는 기본 사용자 인터페이스가 됩니다.
- 작업 관리자 페이지
- 이 인터페이스는 사용자 및 프로젝트 수준에서 작업을 표시하며 작업 이름별 필터링을 지원합니다.
- 코드 편집기 작업 탭
- 코드 편집기 스크립트와 함께 모니터링 작업을 수행할 수 있습니다.
ListOperations엔드포인트 및task명령어- 프로그래매틱 방식으로 작업을 보고 관리하는 데 가장 적합합니다.
작업 실패
재시도해도 해결되지 않는 이유로 태스크가 실패하면 (예: 데이터가 잘못됨) 태스크가 FAILED로 표시되고 다시 실행되지 않습니다.
간헐적으로 발생할 수 있는 이유로 작업이 실패하면 (예: 계산을 실행할 때 시간이 초과됨) Earth Engine이 자동으로 다시 시도하고 retries 필드를 채웁니다. 태스크는 최대 5번 실패할 수 있으며 최종 실패로 인해 전체 태스크가 FAILED로 표시됩니다.
작업 ID
각 작업에는 3DNU363IM57LNU4SDTMB6I33 형식의 영숫자 ID가 있습니다. 이러한 정보는 Google의 작업 관리 인터페이스를 통해 확인하거나 가져올 수 있습니다. 프로그래매틱 방식으로 작업을 시작하는 경우 ee.data.newTaskId에서 작업 ID를 가져옵니다. 내보내기 또는 수집 작업을 디버깅하기 위해 도움을 요청할 때는 이 작업 ID를 복사 가능한 문자열 (스크린샷 아님)로 제공하세요.
작업 상태 목록
작업은 다음 state 값을 가질 수 있습니다.
UNSUBMITTED, 아직 클라이언트에서 대기 중READY, 서버에서 대기열에 추가됨RUNNING, 현재 실행 중COMPLETED, 성공적으로 완료됨FAILED, 완료되지 않음CANCEL_REQUESTED: 아직 실행 중이지만 취소 요청이 접수됨(즉, 작업이 취소된다는 보장은 없음)CANCELLED, 소유자가 취소함
작업 우선순위
작업 우선순위는 대기열에서 작업의 순서를 제어하는 메커니즘입니다. 우선순위가 높은 작업은 제출 시간과 관계없이 우선순위가 낮은 다른 대기 작업보다 먼저 예약됩니다. 기본 작업 우선순위는 100입니다.
내보내기 작업에 다른 우선순위 (높거나 낮음)를 설정하는 기능은 유료 Earth Engine 액세스에 등록된 프로젝트의 사용자에게만 제공됩니다. 내보내기 작업의 우선순위를 변경해도 가져오기 작업과 별도로 예약되므로 가져오기 작업과 관련된 예약 방식에는 영향을 미치지 않습니다.
예: 작업 우선순위 사용
다음 할 일 목록을 고려해 보세요. 여기서 할 일 1~5는 기본 우선순위로 자연스러운 순서로 제출됩니다. 우선순위가 모두 동일하므로 제출된 순서대로 실행되며, 이 프로젝트에 사용할 수 있는 일괄 처리 슬롯이 두 개이므로 두 개가 동시에 실행됩니다 (첫 번째 및 두 번째 제출).
Task name State Priority
---------------------------------------
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
새 태스크 MyHighPriorityTask1를 제출해도 실행 중인 태스크에는 영향을 미치지 않습니다.
Task name State Priority
---------------------------------------
MyHighPriorityTask READY 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 RUNNING 100
MyDefaultTask1 RUNNING 100
실행 중인 작업 중 하나가 완료되면 우선순위가 가장 높은 대기 중인 작업이 실행됩니다 (이 경우 우선순위가 높은 작업).
Task name State Priority
-----------------------------------------
MyHighPriorityTask RUNNING 500
MyDefaultTask5 READY 100
MyDefaultTask4 READY 100
MyDefaultTask3 READY 100
MyDefaultTask2 COMPLETED 100
MyDefaultTask1 RUNNING 100