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
대신).
일괄 처리 환경
'비동기' 또는 '오프라인' 스택이라고도 하는 이 환경은 대용량 데이터의 지연 시간이 긴 병렬 처리에 최적화되어 있습니다. 요청은 일반적으로 데이터 import 또는 내보내기 함수 (예: Export.*
및 ee.batch.*
)를 가져옵니다. 각 일괄 태스크의 최대 전체 기간은 10일입니다. 각 프로젝트는 최대 3, 000개의 대기 중인 작업을 지원하지만 각 개별 사용자는 소수의 동시에 실행되는 작업으로 제한됩니다.
작업 수명 주기
작업은 큐에 제출되며 우선순위(가장 높은 순으로) 및 제출 시간 (가장 빠른 순으로)에 따라 정렬됩니다. 태스크가 일괄 처리기에 할당되면 태스크 상태가 SUBMITTED
(대기함)에서 RUNNING
로 변경됩니다. 각 프로세서는 계산을 실행하고 작업의 결과를 생성하기 위해 다양한 수의 일괄 작업자를 조정합니다.
태스크의 작업자는 EE 서비스의 작업 병렬 처리 기능에 따라 결정되며 사용자가 구성할 수 없습니다.
Cloud 프로젝트를 사용하는 경우 작업 목록을 표시할 수 있는 프로젝트 수준 권한이 있는 모든 사용자에게 작업이 표시됩니다. 프로젝트가 유료 Earth Engine 액세스를 위해 등록된 경우 태스크가 프로젝트 전반의 대기열에 정리됩니다. 프로젝트가 무료 (연구) 액세스를 위해 등록된 경우 태스크는 사용자별로 독립적으로 예약되지만 프로젝트의 모든 사용자에게 표시됩니다.
태스크는 필요한 아티팩트 (Earth Engine 애셋, Google Cloud Storage의 파일 등)를 만들면 성공적으로 완료됩니다.
작업 관리
다음 인터페이스를 사용하여 태스크를 보고 취소할 수 있습니다.
- Cloud 콘솔의 Tasks 페이지
- Cloud 프로젝트 수준에서 할 일 관리를 사용 설정합니다. 앞으로 이 페이지가 작업을 관리하는 기본 사용자 인터페이스가 됩니다.
- 작업 관리자 페이지
- 이 인터페이스는 사용자 및 프로젝트 수준의 할 일을 표시하고 할 일 이름별로 필터링을 지원합니다.
- 코드 편집기 작업 탭
- Code 편집기 스크립트와 함께 작업을 모니터링할 수 있습니다.
ListOperations
엔드포인트 및task
명령어- 프로그래매틱 방식으로 작업을 보고 관리하는 데 가장 적합합니다.
태스크 실패
재시도로 해결되지 않는 이유 (예: 데이터가 유효하지 않음)로 태스크가 실패하면 태스크가 FAILED
로 표시되고 다시 실행되지 않습니다.
태스크가 간헐적으로 발생할 수 있는 이유로 실패하면 (예: 계산 실행 시 시간 초과) Earth Engine에서 자동으로 재시도하고 retries
필드를 채웁니다. 태스크는 최대 5번 실패할 수 있으며, 최종 실패하면 전체 태스크가 FAILED
로 표시됩니다.
태스크 ID
각 태스크에는 3DNU363IM57LNU4SDTMB6I33
형식의 영숫자 ID가 있습니다. 작업 관리 인터페이스를 통해 확인하거나 가져올 수 있습니다. 프로그래매틱 방식으로 태스크를 시작하는 경우 ee.data.newTaskId
에서 태스크 ID를 가져옵니다. 내보내기 또는 처리 작업을 디버그하는 데 도움을 요청할 때는 이 작업 ID를 스크린샷이 아닌 복사 가능한 문자열로 제공하세요.
작업 상태 목록
태스크의 state
값은 다음과 같습니다.
UNSUBMITTED
, 클라이언트에서 아직 대기 중READY
, 서버에 대기함RUNNING
, 현재 실행 중COMPLETED
, 완료됨FAILED
, 완료 실패CANCEL_REQUESTED
: 여전히 실행 중이지만 취소가 요청되었습니다(작업이 취소된다고 보장되지는 않음).CANCELLED
: 소유자가 취소함
할 일 우선순위
작업 우선순위는 대기열의 작업 순서를 제어하는 메커니즘입니다. 우선순위가 높은 작업은 제출 시간과 관계없이 우선순위가 낮은 다른 대기 중인 작업보다 먼저 예약됩니다. 기본 작업 우선순위는 100입니다.
내보내기 작업에 다른 우선순위 (높음 또는 낮음)를 설정하는 기능은 유료 Earth Engine 액세스를 위해 등록된 프로젝트의 사용자만 사용할 수 있습니다. 내보내기 작업의 우선순위를 변경해도 가져오기 작업과 관련하여 예약되는 방식에는 영향을 미치지 않습니다. 두 유형의 작업이 별도로 예약되기 때문입니다.
예: 작업 우선순위 사용
다음 작업 목록을 살펴보세요. 여기서 작업 1~5는 기본 우선순위로 자연스러운 순서로 제출됩니다. 우선순위가 모두 동일하므로 제출된 순서대로 실행되며, 이 프로젝트에는 2개의 일괄 처리 슬롯을 사용할 수 있으므로 두 개가 동시에 실행됩니다 (제출된 첫 번째와 두 번째).
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