ל-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 וכו').
ניהול משימות
אפשר להציג ולבטל משימות באמצעות הממשקים הבאים:
- דף Tasks במסוף Cloud
- מאפשרת לנהל משימות ברמת הפרויקט ב-Cloud. מעכשיו, זהו ממשק המשתמש הראשי לניהול משימות.
- הדף של מנהל המשימות
- בממשק הזה מוצגות משימות ברמת המשתמש וברמת הפרויקט, ואפשר לסנן לפי שם המשימה.
- כרטיסיית המשימות של עורך הקוד
- מאפשרת לעקוב אחרי משימות לצד סקריפט של עורך הקוד.
- נקודת הקצה
ListOperations
והפקודהtask
- האפשרות הטובה ביותר להצגה ולניהול של משימות באופן פרוגרמטי.
כשלים במשימות
אם משימה נכשלת מסיבה שלא ניתן לפתור על ידי ניסיון חוזר (למשל, הנתונים לא תקינים), המשימה תסומן כ-FAILED
ולא תופעל שוב.
אם משימה נכשלת מסיבה שעשויה להיות זמנית (למשל, פג התוקף של הזמן הקצוב לחישוב), מערכת Earth Engine תנסה לבצע אותה שוב באופן אוטומטי וליישב את השדה retries
. משימות יכולות להיכשל עד חמש פעמים, והכישלון הסופי יגרום לסימון של כל המשימה בתור FAILED
.
מזהה המשימה
לכל משימה יש מזהה אלפאנומרי בפורמט 3DNU363IM57LNU4SDTMB6I33
. אפשר להציג או לקבל אותם דרך ממשקי ניהול המשימות שלנו. אם אתם מפעילים משימות באופן פרוגרמטי, מזהה המשימה מקבלים מ-ee.data.newTaskId
. כשמבקשים עזרה בניפוי באגים של משימה של ייצוא או הטמעה, צריך לספק את מזהה המשימה כמחרוזת שאפשר להעתיק (לא צילום מסך).
רשימת מצבי המשימות
הערכים הבאים יכולים להיות ב-state
של המשימות:
UNSUBMITTED
, עדיין בהמתנה אצל הלקוחREADY
, בתור בשרתRUNNING
, פועל כרגעCOMPLETED
, הושלמה בהצלחהFAILED
, completed unsuccessfullyCANCEL_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