ל-Earth Engine יש סביבות שונות לעיבוד נתונים: אינטראקטיבית ואצווה. שני הסביבות האלה (או 'תחומים') מטפלות בסוגים שונים של שאילתות, ויש להן מאפייני ביצועים שונים מאוד. לכן חשוב להבין מתי ואיך להשתמש בכל אחת מהן.
סביבה אינטראקטיבית
הסביבה הזו נקראת גם מחסנית 'סינכרונית' או 'אונליין', והיא מותאמת למענה לבקשות קטנות שמושלמות במהירות (התשובות מוגבלות לעשרות מגה-בייט של נתונים, והעיבוד שלהן צריך להסתיים תוך חמש דקות). אפשר לשלוח הרבה בקשות במקביל, עד מגבלות המכסה.
נקודות קצה
הסביבה האינטראקטיבית מורכבת מנקודות קצה שונות של API: רגילה ולנפח גבוה.
נקודת קצה רגילה
נקודת הקצה הרגילה מתאימה לרוב השימושים שמבוססים על פעולות של בני אדם, והיא הבסיס ל-Code Editor ול-Earth Engine Apps. באופן ספציפי, נקודת הקצה הזו מתאימה ביותר לאפליקציות שרגישות לזמן האחזור, שכוללות נפח נמוך של בקשות בו-זמניות ולא תוכנתיות.
נקודת קצה עם נפח גבוה
נקודת הקצה לטיפול בנפח גבוה של בקשות מיועדת לטפל בנפח גבוה יותר של בקשות במקביל בהשוואה לנקודת הקצה הרגילה. בין ההבדלים העיקריים:
- זמן אחזור גבוה יותר: לנקודת הקצה עם נפח התנועה הגבוה יש זמן אחזור ממוצע גבוה יותר לכל בקשה.
- פחות שמירה במטמון: הוא מספק פחות שמירה במטמון של תוצאות ביניים, ולכן יכול להיות שיידרש יותר זמן חישוב לשאילתות מורכבות.
- הכי מתאים לשאילתות אוטומטיות קטנות: נקודת הקצה של נפח גדול מצטיינת בטיפול בהרבה בקשות פרוגרמטיות, אבל היא הכי מתאימה לשאילתות פשוטות שלא דורשות צבירה (כמו אחזור משבצות מתמונות מוכנות מראש).
לניתוחים מורכבים שדורשים אחסון יעיל במטמון, יכול להיות שעדיף להשתמש בנקודת הקצה הרגילה של ה-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
הסביבה הזו נקראת גם מחסנית "אסינכרונית" או "אופליין", והיא מותאמת לעיבוד מקביל של כמויות גדולות של נתונים עם השהיה גבוהה. הבקשות נשלחות כמשימות לנקודות קצה לעיבוד באצווה, בדרך כלל על ידי קריאה לפונקציות ייבוא או ייצוא של נתונים (למשל, Export.* ו-ee.batch.*) מספריות הלקוח של Earth Engine. לכל משימה באצווה יש משך חיים מקסימלי של עשרה ימים. כל פרויקט תומך בעד 3,000 משימות בהמתנה, אבל כל משתמש מוגבל למספר קטן של משימות שפועלות בו-זמנית.
מחזור החיים של משימה
המשימות נשלחות לתור ומסודרות לפי העדיפות שלהן (הגבוהה ביותר ראשונה) ולפי זמן השליחה (המוקדם ביותר ראשון). משימות משתנות מהמצב SUBMITTED (בהמתנה) למצב RUNNING כשהן מוקצות למעבד אצווה. כל מעבד אחראי לניהול מספר משתנה של עובדי אצווה כדי להריץ את החישוב ולהפיק את התוצאות של המשימה.
מספר העובדים במשימה נקבע לפי היכולת של שירות ה-EE לבצע את העבודה במקביל, ואי אפשר להגדיר אותו.
כשמשתמשים בפרויקט ב-Cloud, כל מי שיש לו הרשאה ברמת הפרויקט לראות את רשימת המשימות יכול לראות את המשימות. אם הפרויקט רשום לגישה בתשלום ל-Earth Engine, המשימות מאורגנות בתור ברמת הפרויקט. אם הפרויקט רשום לגישה ללא תשלום (למטרות מחקר), המשימות מתוזמנות באופן עצמאי לכל משתמש, אבל הן עדיין גלויות לכל המשתמשים בפרויקט.
המשימות מסתיימות בהצלחה כשהן יוצרות את הארטיפקטים הנדרשים (נכסי Earth Engine, קבצים ב-Google Cloud Storage וכו').
ניהול משימות
אפשר לראות ולבטל משימות באמצעות הממשקים הבאים:
- הדף Tasks ב-Cloud Console
- ההגדרה מאפשרת ניהול משימות ברמת הפרויקט בענן. מעכשיו, זהו ממשק המשתמש העיקרי לניהול משימות.
- הדף 'מנהל המשימות'
- בממשק הזה מוצגות משימות ברמת המשתמש וברמת הפרויקט, ויש בו אפשרות לסנן לפי שם המשימה.
- הכרטיסייה 'משימות' ב-Code Editor
- מאפשר לעקוב אחרי משימות לצד סקריפט של עורך קוד.
- נקודת הקצה
ListOperationsוהפקודהtask- האפשרות הטובה ביותר לצפייה במשימות ולניהול שלהן באופן פרוגרמטי.
כשלים במשימות
אם משימה נכשלת מסיבה שלא תיפתר על ידי ניסיון חוזר (למשל, אם הנתונים לא תקינים), המשימה תסומן כFAILED ולא תופעל שוב.
אם משימה נכשלת מסיבה שיכולה להיות זמנית (למשל, פסק זמן במהלך הפעלת חישוב), Earth Engine ינסה לבצע אותה מחדש באופן אוטומטי וימלא את השדה retries. המשימות יכולות להיכשל עד חמש פעמים, והכישלון האחרון יגרום לסימון המשימה כולה כFAILED.
מזהה המשימה
לכל משימה יש מזהה אלפאנומרי מהצורה 3DNU363IM57LNU4SDTMB6I33. אפשר לראות את המשימות האלה או לקבל אותן דרך ממשקי ניהול המשימות שלנו. אם אתם מתחילים משימות באופן פרוגרמטי, אתם מקבלים את מזהה המשימה מ-ee.data.newTaskId. כשמבקשים עזרה בניפוי באגים של משימת ייצוא או הטמעה, צריך לספק את מזהה המשימה הזה כמחרוזת שאפשר להעתיק (לא צילום מסך).
רשימה של סטטוסים של משימות
המשימות יכולות לקבל את הערכים הבאים של 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