処理環境

Earth Engine には、インタラクティブバッチという 2 つのデータ処理環境があります。これら 2 つの環境(または「レルム」)は、異なるタイプのクエリを処理し、パフォーマンス特性が大きく異なるため、それぞれをいつ、どのように使用するかを理解することが重要です。

インタラクティブ環境

「同期」または「オンライン」スタックとも呼ばれるこの環境は、迅速に完了する小さなリクエストに応答するように最適化されています(レスポンスは数十メガバイトのデータに制限され、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'
)

JavaScript クライアント

ee.initialize() を使用して earthengine ライブラリを初期化する場合は、最初のパラメータに https://earthengine-highvolume.googleapis.com を渡します。

REST API

REST リクエストを https://earthengine-highvolume.googleapis.com に転送します(REST API クイックスタートに示されているように、https://earthengine.googleapis.com ではなく)。

バッチ環境

「非同期」または「オフライン」スタックとも呼ばれるこの環境は、大量のデータの高レイテンシ並列処理用に最適化されています。リクエストは、通常、Earth Engine クライアント ライブラリからデータインポートまたはエクスポート関数(Export.*ee.batch.* など)を呼び出すことで、バッチ処理エンドポイントにタスクとして送信されます。各バッチタスクの最大有効期間は 10 日です。各プロジェクトは最大 3, 000 個の保留中のタスクをサポートしますが、各ユーザーは同時実行タスクの数が制限されます。

タスクのライフサイクル

タスクはキューに送信され、優先度(高い順)と送信時間(早い順)で並べ替えられます。タスクは、バッチ プロセッサに割り当てられると、SUBMITTED(キューに登録済み)状態から RUNNING 状態に変わります。各プロセッサは、さまざまな数のバッチワーカーを調整して計算を実行し、タスクの結果を生成します。タスクのワーカー数は、EE サービスがジョブを並列化できるかどうかによって決まり、ユーザーが構成することはできません。

Cloud プロジェクトを使用する場合、タスクの一覧表示権限を持つユーザーは誰でもタスクを表示できます。プロジェクトが有料の Earth Engine アクセス用に登録されている場合、タスクはプロジェクト全体のキューに整理されます。プロジェクトが無料(研究)アクセス用に登録されている場合、タスクは個々のユーザーごとに個別にスケジュールされますが、プロジェクトのユーザー全体で引き続き表示されます。

タスクは、必要なアーティファクト(Earth Engine アセット、Google Cloud Storage のファイルなど)を作成すると正常に完了します。

タスク管理

タスクは、次のインターフェースを使用して表示およびキャンセルできます。

タスクの失敗

再試行しても解決しない理由(データが無効など)でタスクが失敗した場合、タスクは 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 アクセスに登録されているプロジェクトのユーザーのみです。エクスポート タスクの優先度を変更しても、インポート タスクとの相対的なスケジュールには影響しません。これは、2 種類のタスクが個別にスケジュールされるためです。

例: タスクの優先度を使用する

次のタスクリストを考えてみましょう。タスク 1 ~ 5 はデフォルトの優先度で自然な順序で送信されます。優先度がすべて同じであるため、送信された順序で実行されます。このプロジェクトでは 2 つのバッチ処理スロットが使用可能なため、2 つのジョブが同時に実行されます(最初に送信されたジョブと 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