प्रोसेसिंग एनवायरमेंट

Earth Engine में डेटा प्रोसेस करने के लिए अलग-अलग एनवायरमेंट हैं: इंटरैक्टिव और बैच. ये दोनों एनवायरमेंट (या "रीलम") अलग-अलग तरह की क्वेरी मैनेज करते हैं और उनकी परफ़ॉर्मेंस की विशेषताएं बहुत अलग होती हैं. इसलिए, यह समझना ज़रूरी है कि इनमें से किसी एक का इस्तेमाल कब और कैसे करना है.

इंटरैक्टिव एनवायरमेंट

इसे "सिंक्रोनस" या "ऑनलाइन" स्टैक भी कहा जाता है. यह एनवायरमेंट, छोटे अनुरोधों के जवाब देने के लिए ऑप्टिमाइज़ किया गया है, जो तुरंत पूरे हो जाते हैं. जवाबों में ज़्यादा से ज़्यादा 10 मेगाबाइट डेटा हो सकता है और उन्हें पांच मिनट में प्रोसेस कर लेना चाहिए. कोटा की सीमाओं तक, एक साथ कई अनुरोध किए जा सकते हैं.

एंडपॉइंट

इंटरैक्टिव एनवायरमेंट में अलग-अलग एपीआई एंडपॉइंट होते हैं: स्टैंडर्ड और ज़्यादा वॉल्यूम.

स्टैंडर्ड एंडपॉइंट

स्टैंडर्ड एंडपॉइंट, ज़्यादातर लोगों के इस्तेमाल के लिए सही होता है. साथ ही, यह Code Editor और Earth Engine ऐप्लिकेशन को बेहतर बनाता है. खास तौर पर, यह एंडपॉइंट, रिस्पॉन्स में लगने वाले समय के हिसाब से काम करने वाले उन ऐप्लिकेशन के लिए सबसे सही है जिनमें एक साथ कम संख्या में, प्रोग्राम के हिसाब से नहीं किए गए अनुरोध शामिल होते हैं.

ज़्यादा ट्रैफ़िक वाला एंडपॉइंट

ज़्यादा अनुरोधों वाले एंडपॉइंट को स्टैंडर्ड एंडपॉइंट के मुकाबले, एक साथ ज़्यादा अनुरोधों को हैंडल करने के लिए डिज़ाइन किया गया है. इनमें मुख्य अंतर ये हैं:

  • ज़्यादा इंतज़ार: ज़्यादा अनुरोध वाले एंडपॉइंट में, हर अनुरोध के लिए औसत इंतज़ार का समय ज़्यादा होता है.
  • कम कैश मेमोरी: इसमें बीच के नतीजों को कम कैश मेमोरी में सेव किया जाता है. इसलिए, जटिल क्वेरी के लिए, कैलकुलेट करने में ज़्यादा समय लग सकता है.
  • अपने-आप जनरेट होने वाली छोटी क्वेरी के लिए सबसे अच्छा: ज़्यादा वॉल्यूम वाला एंडपॉइंट, प्रोग्राम के हिसाब से किए जाने वाले कई अनुरोधों को मैनेज करने में बेहतर होता है. हालांकि, यह उन आसान क्वेरी के लिए सबसे सही होता है जिनके लिए एग्रीगेशन की ज़रूरत नहीं होती. जैसे, पहले से बनी इमेज से टाइल फ़ेच करना.

बेहतर तरीके से कैश मेमोरी में सेव करने की ज़रूरत वाले जटिल विश्लेषण के लिए, स्टैंडर्ड एपीआई एंडपॉइंट का इस्तेमाल करना बेहतर हो सकता है. ज़्यादा वॉल्यूम वाला एंडपॉइंट, ज़्यादा थ्रूपुट और कम कंप्यूटेशन वाले टास्क के लिए ऑप्टिमाइज़ किया गया है. आम तौर पर, ज़्यादा वॉल्यूम वाले एंडपॉइंट का इस्तेमाल करने पर, जटिल क्वेरी के लिए ईईसीयू-टाइम ज़्यादा लगता है.

ज़्यादा वॉल्यूम वाले एंडपॉइंट का इस्तेमाल करना

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.googleapis.com के बजाय https://earthengine-highvolume.googleapis.com पर भेजें. उदाहरण के लिए, REST API के लिए क्विकस्टार्ट में दिखाया गया है.

बैच एनवायरमेंट

इसे "असाइनोक्रोनस" या "ऑफ़लाइन" स्टैक भी कहा जाता है. यह एनवायरमेंट, बड़ी मात्रा में डेटा की प्रोसेसिंग के लिए ऑप्टिमाइज़ किया गया है. अनुरोधों को बैच प्रोसेसिंग एंडपॉइंट पर टास्क के तौर पर सबमिट किया जाता है.आम तौर पर, डेटा import या एक्सपोर्ट फ़ंक्शन को कॉल करके ऐसा किया जाता है. उदाहरण के लिए, Export.* और ee.batch.*) को Earth Engine की क्लाइंट लाइब्रेरी से इंपोर्ट किया जा सकता है. हर बैच टास्क की समयसीमा ज़्यादा से ज़्यादा 10 दिन होती है. हर प्रोजेक्ट में ज़्यादा से ज़्यादा 3,000 टास्क पूरे किए जा सकते हैं. हालांकि, हर उपयोगकर्ता के लिए एक साथ चलने वाले टास्क की संख्या सीमित होती है.

टास्क का लाइफ़साइकल

टास्क, सूची में सबमिट किए जाते हैं और उनकी प्राथमिकता (सबसे ज़्यादा प्राथमिकता वाले टास्क पहले) और सबमिशन के समय (सबसे पहले सबमिट किए गए टास्क पहले) के हिसाब से क्रम में लगाए जाते हैं. टास्क को बैच प्रोसेसर को असाइन करने पर, उनका स्टेटस SUBMITTED (सूची में है) से RUNNING में बदल जाता है. हर प्रोसेसर, अलग-अलग संख्या में बैच वर्कर्स को मैनेज करता है, ताकि कैलकुलेशन की प्रोसेस पूरी की जा सके और टास्क के नतीजे मिल सकें. किसी टास्क के लिए वर्कर्स की संख्या, EE सेवा की जॉब को पैरलल करने की क्षमता से तय होती है. इसे उपयोगकर्ता कॉन्फ़िगर नहीं कर सकता.

Cloud प्रोजेक्ट का इस्तेमाल करते समय, टास्क उन सभी लोगों को दिखते हैं जिनके पास प्रोजेक्ट-लेवल पर, टास्क की सूची बनाने की अनुमति होती है. अगर प्रोजेक्ट को पैसे चुकाकर Earth Engine का ऐक्सेस पाने के लिए रजिस्टर किया गया है, तो टास्क को प्रोजेक्ट की पूरी सूची में व्यवस्थित किया जाता है. अगर प्रोजेक्ट को बिना पैसे चुकाए (रिसर्च के लिए) ऐक्सेस पाने के लिए रजिस्टर किया गया है, तो टास्क को हर व्यक्ति के लिए अलग से शेड्यूल किया जाता है. हालांकि, ये टास्क प्रोजेक्ट के सभी उपयोगकर्ताओं को दिखते हैं.

टास्क तब पूरे होते हैं, जब वे ज़रूरी आर्टफ़ैक्ट (Earth Engine एसेट, Google Cloud Storage में मौजूद फ़ाइलें वगैरह) बनाते हैं.

टास्क मैनेजमेंट

टास्क देखने और रद्द करने के लिए, इन इंटरफ़ेस का इस्तेमाल किया जा सकता है:

  • Cloud Console में Tasks पेज
    • Cloud प्रोजेक्ट लेवल पर टास्क मैनेजमेंट की सुविधा चालू करता है. आने वाले समय में, टास्क मैनेज करने के लिए, यह मुख्य यूज़र इंटरफ़ेस होगा.
  • टास्क मैनेजर पेज
    • यह इंटरफ़ेस, उपयोगकर्ता और प्रोजेक्ट के लेवल पर टास्क दिखाता है. साथ ही, टास्क के नाम के हिसाब से फ़िल्टर करने की सुविधा भी देता है.
  • कोड एडिटर का टास्क टैब
    • इससे, कोड एडिटर स्क्रिप्ट के साथ-साथ टास्क को मॉनिटर करने की सुविधा मिलती है.
  • 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