موتور زمین محیطهای مختلفی برای پردازش دادهها دارد: تعاملی و دستهای . این دو محیط (یا "قلمرو") انواع مختلفی از پرسوجوها را مدیریت میکنند و ویژگیهای عملکردی بسیار متفاوتی دارند، بنابراین درک زمان و نحوه استفاده از هر یک مهم است.
محیط تعاملی
این محیط که به آن پشته «همزمان» یا «آنلاین» نیز گفته میشود، برای پاسخ به درخواستهای کوچکی که به سرعت به پایان میرسند، بهینه شده است (پاسخها به دهها مگابایت داده محدود میشوند و باید پردازش آنها ظرف پنج دقیقه به پایان برسد). بسیاری از درخواستها را میتوان به صورت موازی تا سقف سهمیه انجام داد.
نقاط پایانی
محیط تعاملی از نقاط انتهایی API مختلفی تشکیل شده است: استاندارد و حجم بالا .
نقطه پایانی استاندارد
نقطه پایانی استاندارد برای اکثر کاربردهای انسانی مناسب است و همان چیزی است که ویرایشگر کد و برنامههای Earth Engine را پشتیبانی میکند. به طور خاص، این نقطه پایانی برای برنامههای حساس به تأخیر که شامل حجم کمی از درخواستهای همزمان و غیربرنامهای هستند، مناسبترین گزینه است.
نقطه پایانی با حجم بالا
نقطه پایانی با حجم بالا برای مدیریت حجم بالاتری از درخواستها به صورت موازی نسبت به نقطه پایانی استاندارد طراحی شده است. تفاوتهای کلیدی عبارتند از:
- تأخیر بالاتر : نقطه پایانی با حجم بالا، میانگین تأخیر بالاتری در هر درخواست دارد.
- ذخیرهسازی کمتر : این روش، ذخیرهسازی کمتری از نتایج میانی ارائه میدهد، بنابراین پرسوجوهای پیچیده ممکن است به زمان محاسبه بیشتری نیاز داشته باشند.
- بهترین برای پرسوجوهای کوچک و خودکار : این نقطه پایانی با حجم بالا در مدیریت بسیاری از درخواستهای برنامهنویسی عالی عمل میکند، اما برای پرسوجوهای سادهای که نیازی به تجمیع ندارند (مانند دریافت کاشیها از تصاویر از پیش ساخته شده) مناسبتر است.
برای تحلیلهای پیچیدهای که نیاز به ذخیرهسازی کارآمد دارند، ممکن است نقطه پایانی استاندارد API ترجیح داده شود. نقطه پایانی با حجم بالا برای وظایف با توان عملیاتی بالا و محاسبات کم بهینه شده است. پرسوجوهای پیچیده معمولاً هنگام استفاده از نقطه پایانی با حجم بالا، نسبت به نقطه پایانی آنلاین معمولی، به زمان EECU بیشتری نیاز دارند.
استفاده از نقطه پایانی با حجم بالا
کلاینت پایتون
هنگام مقداردهی اولیه کتابخانه earthengine ، یک پارامتر opt_url ارسال کنید و آن را روی https://earthengine-highvolume.googleapis.com تنظیم کنید. مثل همیشه، حتماً اعتبارنامههای مناسب را نیز ارسال کنید و پروژه Cloud را مشخص کنید. برای مثال:
ee.Initialize(
credentials=credentials,
project='my-project',
opt_url='https://earthengine-highvolume.googleapis.com'
)
کلاینت جاوا اسکریپت
هنگام مقداردهی اولیه کتابخانه earthengine با استفاده از ee.initialize() ، برای پارامتر اول، آدرس https://earthengine-highvolume.googleapis.com را وارد کنید.
API رست
درخواستهای REST خود را به آدرس https://earthengine-highvolume.googleapis.com هدایت کنید (به جای https://earthengine.googleapis.com ، همانطور که برای مثال در REST API Quickstart نشان داده شده است).
محیط دستهای
این محیط که به آن پشته «ناهمزمان» یا «آفلاین» نیز گفته میشود، برای پردازش موازی با تأخیر بالا در حجم زیادی از دادهها بهینه شده است. درخواستها به عنوان وظایف به نقاط پایانی پردازش دستهای ارسال میشوند، معمولاً با فراخوانی توابع واردات یا صادرات دادهها (مثلاً Export.* و ee.batch.* ) از کتابخانههای کلاینت Earth Engine. هر وظیفه دستهای حداکثر ده روز طول عمر دارد. هر پروژه تا ۳۰۰۰ وظیفه در حال انتظار را پشتیبانی میکند، اما هر کاربر به تعداد کمی از وظایف همزمان در حال اجرا محدود است.
چرخه حیات وظیفه
وظایف به یک صف ارسال میشوند و بر اساس اولویت (بالاترین اولویت) و زمان ارسال (زودترین اولویت) مرتب میشوند. وظایف وقتی به یک پردازنده دستهای اختصاص داده میشوند، از حالت SUBMITTED (در صف) به حالت RUNNING تغییر میکنند. هر پردازنده مسئول هماهنگ کردن تعداد متغیری از کارگران دستهای برای اجرای محاسبات و تولید نتایج وظیفه است. تعداد کارگران برای یک وظیفه توسط توانایی سرویس EE در موازیسازی کار تعیین میشود و توسط کاربر قابل تنظیم نیست.
هنگام استفاده از یک پروژه ابری، وظایف برای هر کسی که مجوز سطح پروژه برای فهرست کردن وظایف را داشته باشد، قابل مشاهده است. اگر پروژه برای دسترسی پولی به Earth Engine ثبت شده باشد، وظایف در یک صف در کل پروژه سازماندهی میشوند؛ اگر پروژه برای دسترسی بدون پرداخت (تحقیق) ثبت شده باشد، وظایف برای هر فرد به طور مستقل برنامهریزی میشوند اما همچنان برای کاربران پروژه قابل مشاهده هستند.
وظایف زمانی با موفقیت انجام میشوند که مصنوعات لازم (داراییهای Earth Engine، فایلهای موجود در Google Cloud Storage و غیره) ایجاد شوند.
مدیریت وظایف
وظایف را میتوان با استفاده از رابطهای زیر مشاهده و لغو کرد:
- صفحه وظایف در کنسول ابری
- مدیریت وظایف را در سطح پروژه ابری فعال میکند. از این به بعد، این رابط کاربری اصلی برای مدیریت وظایف خواهد بود.
- صفحه مدیریت وظایف
- این رابط وظایف را در سطح کاربر و پروژه نشان میدهد و از فیلتر کردن بر اساس نام وظیفه پشتیبانی میکند.
- تب وظایف ویرایشگر کد
- امکان نظارت بر وظایف را در کنار یک اسکریپت ویرایشگر کد فراهم میکند.
- نقطه پایانی
ListOperationsو دستورtask- بهترین گزینه برای مشاهده و مدیریت وظایف از طریق برنامهنویسی.
شکستهای وظیفهای
اگر یک وظیفه به دلیلی که با تلاش مجدد قابل اصلاح نیست (مثلاً دادهها نامعتبر باشند) با شکست مواجه شود، آن وظیفه به عنوان FAILED علامتگذاری میشود و دیگر اجرا نخواهد شد.
اگر یک وظیفه به دلیلی که میتواند متناوب باشد (مثلاً هنگام اجرای یک محاسبه، زمان آن تمام شود) با شکست مواجه شود، Earth Engine به طور خودکار سعی میکند آن را دوباره امتحان کند و فیلد retries را پر میکند. وظایف میتوانند تا پنج بار با شکست مواجه شوند و شکست نهایی باعث میشود که کل وظیفه به عنوان FAILED علامتگذاری شود.
شناسه وظیفه
هر وظیفه یک شناسه الفبایی-عددی به شکل 3DNU363IM57LNU4SDTMB6I33 دارد. این شناسهها را میتوان از طریق رابطهای مدیریت وظیفه ما مشاهده یا دریافت کرد. اگر وظایف را به صورت برنامهنویسی شروع میکنید، شناسه وظیفه را از ee.data.newTaskId دریافت میکنید. هنگام درخواست کمک برای اشکالزدایی یک وظیفه export یا ingestion، این شناسه وظیفه را به عنوان یک رشته قابل کپی (نه یک تصویر از صفحه) ارائه دهید.
فهرست حالتهای وظیفه
وظایف میتوانند مقادیر state زیر را داشته باشند:
-
UNSUBMITTED، هنوز در انتظار مشتری است -
READY، در صف انتظار سرور -
RUNNING، در حال حاضر در حال اجرا -
COMPLETED، با موفقیت انجام شد -
FAILED، با شکست انجام شد -
CANCEL_REQUESTED، هنوز در حال اجرا است اما درخواست لغو آن داده شده است (یعنی تضمینی برای لغو شدن وظیفه وجود ندارد) -
CANCELLED، توسط مالک لغو شده است
اولویت وظیفه
اولویت وظیفه مکانیزمی برای کنترل ترتیب وظایف در صف است. وظایف با اولویت بالاتر، صرف نظر از زمان ارسال آنها، قبل از سایر وظایف در حال انتظار با اولویتهای پایینتر، زمانبندی میشوند. اولویت پیشفرض وظیفه ۱۰۰ است.
امکان تعیین اولویتهای دیگر (بالاتر یا پایینتر) برای وظایف خروجی فقط برای کاربران پروژههایی که برای دسترسی پولی Earth Engine ثبت شدهاند، در دسترس است. تغییر اولویت یک وظیفه خروجی تاثیری بر نحوه برنامهریزی آن نسبت به هر وظیفه ورودی ندارد، زیرا این دو نوع وظیفه به طور جداگانه برنامهریزی میشوند.
مثال: استفاده از اولویتهای وظایف
لیست وظایف زیر را در نظر بگیرید که در آن وظایف ۱ تا ۵ به ترتیب طبیعی خود و با اولویت پیشفرض ارسال شدهاند. آنها به ترتیبی که ارسال شدهاند اجرا میشوند، زیرا اولویتها همگی یکسان هستند و از آنجایی که دو بازه زمانی پردازش دستهای برای این پروژه در دسترس است، دو مورد به طور همزمان اجرا میشوند (اولین و دومین مورد ارسال شده).
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