محیط های پردازش، محیط های پردازش

موتور زمین محیط‌های مختلفی برای پردازش داده‌ها دارد: تعاملی و دسته‌ای . این دو محیط (یا "قلمرو") انواع مختلفی از پرس‌وجوها را مدیریت می‌کنند و ویژگی‌های عملکردی بسیار متفاوتی دارند، بنابراین درک زمان و نحوه استفاده از هر یک مهم است.

محیط تعاملی

این محیط که به آن پشته «همزمان» یا «آنلاین» نیز گفته می‌شود، برای پاسخ به درخواست‌های کوچکی که به سرعت به پایان می‌رسند، بهینه شده است (پاسخ‌ها به ده‌ها مگابایت داده محدود می‌شوند و باید پردازش آنها ظرف پنج دقیقه به پایان برسد). بسیاری از درخواست‌ها را می‌توان به صورت موازی تا سقف سهمیه انجام داد.

نقاط پایانی

محیط تعاملی از نقاط انتهایی 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 و غیره) ایجاد شوند.

مدیریت وظایف

وظایف را می‌توان با استفاده از رابط‌های زیر مشاهده و لغو کرد:

شکست‌های وظیفه‌ای

اگر یک وظیفه به دلیلی که با تلاش مجدد قابل اصلاح نیست (مثلاً داده‌ها نامعتبر باشند) با شکست مواجه شود، آن وظیفه به عنوان 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