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

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

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

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

एंडपॉइंट

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

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

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

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

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

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

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

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

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

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

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

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