סביבות עיבוד

ל-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 וכו').

ניהול משימות

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

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

אם משימה נכשלת מסיבה שלא תיפתר על ידי ניסיון חוזר (למשל, אם הנתונים לא תקינים), המשימה תסומן כ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