סביבות עיבוד

ל-Earth Engine יש סביבות שונות לעיבוד נתונים: אינטראקטיביות ובאצ'ט. שתי הסביבות האלה (או 'תחומים') מטפלות בסוגים שונים של שאילתות, ויש להן מאפייני ביצועים שונים מאוד, לכן חשוב להבין מתי ואיך משתמשים בכל אחת מהן.

סביבה אינטראקטיבית

הסביבה הזו נקראת גם 'סטאק סינכרוני' או 'סטאק אונליין', והיא מותאמת למענה לבקשות קטנות שמסתיימים במהירות (התשובות מוגבלות לעשרות מגה-בייט של נתונים, והעיבוד חייב להסתיים תוך חמש דקות). אפשר לשלוח הרבה בקשות במקביל, עד מגבלות המכסה.

נקודות קצה

הסביבה האינטראקטיבית מורכבת מנקודות קצה שונות של API: רגילות ובעומס גבוה.

נקודת קצה רגילה

נקודת הקצה הרגילה מתאימה לרוב השימושים שבהם מעורבים בני אדם, והיא זו שמפעילה את Code Editor ואת האפליקציות של 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

כשמאתחלים את הספרייה earthengine באמצעות ee.initialize(), מעבירים את הערך https://earthengine-highvolume.googleapis.com לפרמטר הראשון.

API ל-REST

יש להפנות את הבקשות ל-REST אל https://earthengine-highvolume.googleapis.com (במקום אל https://earthengine.googleapis.com, למשל, כפי שמופיע במדריך למתחילים בנושא API ל-REST).

סביבת Batch

הסביבה הזו, שנקראת גם 'סטאק אסינכרוני' או 'סטאק אופליין', מותאמת לעיבוד מקבילי של כמויות גדולות של נתונים עם זמן אחזור ארוך. הבקשות נשלחות כמשימות לנקודות קצה לעיבוד באצווה, בדרך כלל באמצעות קריאה לפונקציות import או ייצוא נתונים (למשל, Export.* ו-ee.batch.*) מספריות הלקוח של Earth Engine. משך החיים המקסימלי של כל משימה באצווה הוא 10 ימים. בכל פרויקט אפשר להפעיל עד 3,000 משימות בהמתנה, אבל כל משתמש מוגבל למספר קטן של משימות שפועלות בו-זמנית.

מחזור החיים של המשימות

המשימות נשלחות לתור וממוינות לפי העדיפות שלהן (העדיפות הגבוהה ביותר קודם) וזמני השליחה שלהן (הזמן המוקדם ביותר קודם). המשימות עוברות מהמצב SUBMITTED (בתור) למצב RUNNING כשהן מוקצות למעבד קבוצות. כל מעבד אחראי לתזמור של מספר משתנה של משימות באצווה כדי להריץ את החישוב וליצור את התוצאות של המשימה. מספר העובדים במשימה נקבע על סמך היכולת של שירות ה-EE לבצע את המשימה במקביל, והוא לא ניתן להגדרה על ידי המשתמש.

כשמשתמשים בפרויקט ב-Cloud, המשימות גלויות לכל מי שיש לו הרשאה ברמת הפרויקט להציג את המשימות. אם הפרויקט רשום לגישה בתשלום ל-Earth Engine, המשימות מאורגנות בתור ברמת הפרויקט. אם הפרויקט רשום לגישה ללא תשלום (לצורכי מחקר), המשימות מתוזמנות בנפרד לכל משתמש, אבל הן עדיין גלויות לכל המשתמשים בפרויקט.

משימות מסתיימות בהצלחה כשהן יוצרות את הארטיפקטים הנדרשים (נכסי Earth Engine, קבצים ב-Google Cloud Storage וכו').

ניהול משימות

אפשר להציג ולבטל משימות באמצעות הממשקים הבאים:

כשלים במשימות

אם משימה נכשלת מסיבה שלא ניתן לפתור על ידי ניסיון חוזר (למשל, הנתונים לא תקינים), המשימה תסומן כ-FAILED ולא תופעל שוב.

אם משימה נכשלת מסיבה שעשויה להיות זמנית (למשל, פג התוקף של הזמן הקצוב לחישוב), מערכת Earth Engine תנסה לבצע אותה שוב באופן אוטומטי וליישב את השדה retries. משימות יכולות להיכשל עד חמש פעמים, והכישלון הסופי יגרום לסימון של כל המשימה בתור FAILED.

מזהה המשימה

לכל משימה יש מזהה אלפאנומרי בפורמט 3DNU363IM57LNU4SDTMB6I33. אפשר להציג או לקבל אותם דרך ממשקי ניהול המשימות שלנו. אם אתם מפעילים משימות באופן פרוגרמטי, מזהה המשימה מקבלים מ-ee.data.newTaskId. כשמבקשים עזרה בניפוי באגים של משימה של ייצוא או הטמעה, צריך לספק את מזהה המשימה כמחרוזת שאפשר להעתיק (לא צילום מסך).

רשימת מצבי המשימות

הערכים הבאים יכולים להיות ב-state של המשימות:

  • UNSUBMITTED, עדיין בהמתנה אצל הלקוח
  • READY, בתור בשרת
  • RUNNING, פועל כרגע
  • COMPLETED, הושלמה בהצלחה
  • FAILED, completed unsuccessfully
  • 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