สภาพแวดล้อมการประมวลผล

Earth Engine มีสภาพแวดล้อมที่แตกต่างกันสำหรับการประมวลผลข้อมูล ได้แก่ แบบอินเทอร์แอกทีฟและแบบเป็นกลุ่ม สภาพแวดล้อม 2 แบบนี้ (หรือ "อาณาจักร") จัดการการค้นหาประเภทต่างๆ และมีลักษณะประสิทธิภาพที่แตกต่างกันมาก คุณจึงควรเข้าใจว่าควรใช้แต่ละแบบเมื่อใดและอย่างไร

สภาพแวดล้อมแบบอินเทอร์แอกทีฟ

สภาพแวดล้อมนี้เรียกอีกอย่างว่าสแต็ก "แบบซิงค์" หรือ "ออนไลน์" ซึ่งได้รับการเพิ่มประสิทธิภาพเพื่อตอบคําขอขนาดเล็กที่เสร็จสิ้นอย่างรวดเร็ว (การตอบกลับจํากัดอยู่ที่ข้อมูลขนาด 2-30 เมกะไบต์ และต้องประมวลผลเสร็จภายใน 5 นาที) คุณส่งคำขอหลายรายการพร้อมกันได้สูงสุดตามขีดจำกัดโควต้า

ปลายทาง

สภาพแวดล้อมแบบอินเทอร์แอกทีฟประกอบด้วยปลายทาง API แบบมาตรฐานและปริมาณมาก

ปลายทางมาตรฐาน

ปลายทางมาตรฐานเหมาะสำหรับการใช้งานส่วนใหญ่ที่ดำเนินการโดยมนุษย์ และเป็นปลายทางที่ขับเคลื่อนเครื่องมือแก้ไขโค้ดและแอป Earth Engine กล่าวโดยละเอียดคือ ปลายทางนี้เหมาะสําหรับแอปพลิเคชันที่ไวต่อเวลาในการตอบสนองซึ่งเกี่ยวข้องกับคําขอแบบไม่ใช้โปรแกรมที่เกิดขึ้นพร้อมกันในปริมาณไม่มาก

อุปกรณ์ปลายทางที่มีปริมาณมาก

ปลายทางที่มีปริมาณมากออกแบบมาเพื่อรองรับคำขอจำนวนมากขึ้นพร้อมกันกว่าปลายทางมาตรฐาน ความแตกต่างที่สำคัญมีดังนี้

  • เวลาในการตอบสนองนานขึ้น: ปลายทางที่มีปริมาณสูงมีเวลาในการตอบสนองโดยเฉลี่ยต่อคำขอนานขึ้น
  • การแคชน้อยลง: มีการแคชผลลัพธ์ขั้นกลางน้อยลง ดังนั้นการค้นหาที่ซับซ้อนอาจใช้เวลาในการประมวลผลนานขึ้น
  • เหมาะสําหรับการค้นหาอัตโนมัติขนาดเล็ก: ปลายทางที่มีปริมาณมากจะจัดการคําขอแบบเป็นโปรแกรมจํานวนมากได้ดี แต่เหมาะสําหรับการค้นหาแบบง่ายที่ไม่จําเป็นต้องมีการรวบรวมข้อมูล (เช่น การดึงข้อมูลไทล์จากรูปภาพที่สร้างขึ้นล่วงหน้า)

สําหรับการวิเคราะห์ที่ซับซ้อนซึ่งต้องใช้การแคชที่มีประสิทธิภาพ คุณอาจต้องใช้ปลายทาง 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 ให้กับพารามิเตอร์แรก

REST API

ส่งคําขอ REST ไปยัง https://earthengine-highvolume.googleapis.com (แทน https://earthengine.googleapis.com ดังที่แสดงในคู่มือเริ่มต้นใช้งาน REST API เป็นต้น)

สภาพแวดล้อมการทดสอบเป็นกลุ่ม

สภาพแวดล้อมนี้เรียกอีกอย่างว่าสแต็ก "แบบไม่พร้อมกัน" หรือ "แบบออฟไลน์" ซึ่งได้รับการเพิ่มประสิทธิภาพสำหรับการประมวลผลข้อมูลจํานวนมากแบบขนานที่มีเวลาในการตอบสนองสูง ระบบจะส่งคําขอเป็นงานไปยังปลายทางการประมวลผลแบบเป็นกลุ่ม โดยปกติแล้วโดยการเรียกใช้ฟังก์ชันimportหรือส่งออกข้อมูล (เช่น Export.* และ ee.batch.*) จากไลบรารีของไคลเอ็นต์ Earth Engine งานกลุ่มแต่ละรายการมีอายุสูงสุด 10 วัน แต่ละโปรเจ็กต์รองรับงานรอดําเนินการได้สูงสุด 3, 000 งาน แต่ผู้ใช้แต่ละรายมีงานที่กำลังทํางานพร้อมกันได้เพียงจํานวนน้อย

วงจรชีวิตของงาน

ระบบจะส่งงานไปยังคิวและจัดเรียงตามลําดับความสําคัญ (สูงสุดก่อน) และเวลาส่ง (เร็วที่สุดก่อน) งานจะเปลี่ยนจากสถานะ SUBMITTED (รอดำเนินการ) เป็นสถานะ RUNNING เมื่อมีการมอบหมายให้กับโปรแกรมประมวลผลกลุ่ม โดยแต่ละตัวประมวลผลมีหน้าที่รับผิดชอบในการจัดระเบียบผู้ทำงานแบบเป็นกลุ่มจํานวนต่างๆ เพื่อเรียกใช้การคํานวณและสร้างผลลัพธ์ของงาน จำนวนผู้ทํางานสําหรับงานหนึ่งๆ จะกําหนดโดยความสามารถของบริการ EE ในการทํางานแบบขนาน และผู้ใช้ไม่สามารถกําหนดค่าได้

เมื่อใช้โปรเจ็กต์ที่อยู่ในระบบคลาวด์ ทุกคนที่มีสิทธิ์ระดับโปรเจ็กต์ในการแสดงรายการงานจะเห็นงาน หากโปรเจ็กต์ลงทะเบียนเพื่อรับสิทธิ์เข้าถึง Earth Engine แบบชำระเงิน ระบบจะจัดระเบียบงานไว้ในคิวสำหรับทั้งโปรเจ็กต์ หากโปรเจ็กต์ลงทะเบียนเพื่อรับสิทธิ์เข้าถึงแบบไม่ชำระเงิน (การวิจัย) ระบบจะกำหนดเวลางานให้แต่ละบุคคลแยกกัน แต่ผู้ใช้ทุกคนในโปรเจ็กต์จะยังคงเห็นงานดังกล่าว

งานที่เสร็จสมบูรณ์คือการสร้างอาร์ติแฟกต์ที่จำเป็น (ชิ้นงาน Earth Engine, ไฟล์ใน Google Cloud Storage ฯลฯ)

การจัดการงาน

คุณสามารถดูและยกเลิกงานได้โดยใช้อินเทอร์เฟซต่อไปนี้

งานที่ไม่สำเร็จ

หากงานดำเนินการไม่สำเร็จเนื่องจากเหตุผลที่แก้ไขไม่ได้ด้วยการลองอีกครั้ง (เช่น ข้อมูลไม่ถูกต้อง) ระบบจะทำเครื่องหมายงานเป็น FAILED และจะไม่เรียกใช้งานนั้นอีก

หากงานไม่สำเร็จเนื่องจากเหตุผลที่อาจเกิดขึ้นเป็นครั้งคราว (เช่น หมดเวลาขณะดำเนินการคํานวณ) Earth Engine จะพยายามลองอีกครั้งโดยอัตโนมัติและป้อนข้อมูลในช่อง retries งานจะดำเนินการไม่สำเร็จได้สูงสุด 5 ครั้ง และการดําเนินการไม่สําเร็จครั้งสุดท้ายจะทำให้ระบบทําเครื่องหมายทั้งงานเป็น FAILED

รหัสงาน

งานแต่ละรายการมีรหัสที่เป็นตัวอักษรและตัวเลขคละกันในรูปแบบ 3DNU363IM57LNU4SDTMB6I33 ข้อมูลเหล่านี้จะดูหรือรับผ่านอินเทอร์เฟซการจัดการงานได้ หากเริ่มงานแบบเป็นโปรแกรม คุณจะได้รับรหัสงานจาก ee.data.newTaskId เมื่อขอความช่วยเหลือในการแก้ไขข้อบกพร่องของงานการส่งออกหรือการนำเข้า ให้ระบุรหัสงานนี้เป็นสตริงที่คัดลอกได้ (ไม่ใช่ภาพหน้าจอ)

รายการสถานะงาน

งานอาจมีค่า state ดังต่อไปนี้

  • UNSUBMITTED ยังคงรอดำเนินการในไคลเอ็นต์
  • READY อยู่ในคิวบนเซิร์ฟเวอร์
  • RUNNING ทำงานอยู่
  • COMPLETED เสร็จสมบูรณ์แล้ว
  • FAILED ไม่สำเร็จ
  • CANCEL_REQUESTED ยังทํางานอยู่แต่มีการขอยกเลิกแล้ว (ไม่ได้หมายความว่าระบบจะยกเลิกงาน)
  • CANCELLED ยกเลิกโดยเจ้าของ

ลำดับความสำคัญของงาน

ลำดับความสำคัญของงานเป็นกลไกในการควบคุมลำดับงานในคิว ระบบจะกำหนดเวลางานที่มีลำดับความสำคัญสูงกว่าก่อนงานรอดำเนินการอื่นๆ ที่มีลำดับความสำคัญต่ำกว่า โดยไม่คำนึงถึงเวลาที่ส่ง ลำดับความสำคัญของงานเริ่มต้นคือ 100

ความสามารถในการตั้งค่าลำดับความสำคัญอื่นๆ (สูงกว่าหรือต่ำกว่า) ในงานการส่งออกมีให้บริการแก่ผู้ใช้โปรเจ็กต์ที่ลงทะเบียนเพื่อเข้าถึง Earth Engine แบบชำระเงินเท่านั้น การเปลี่ยนลําดับความสําคัญของงานส่งออกจะไม่ส่งผลต่อกําหนดเวลาของงานนั้นเมื่อเทียบกับงานนําเข้า เนื่องจากระบบกําหนดเวลางาน 2 ประเภทนี้แยกกัน

ตัวอย่าง: การใช้ลำดับความสำคัญของงาน

พิจารณารายการงานต่อไปนี้ ซึ่งส่งงาน 1-5 ตามลําดับตามปกติโดยให้ความสําคัญเป็นค่าเริ่มต้น รายการจะทำงานตามลำดับที่ส่ง เนื่องจากมีลำดับความสำคัญเหมือนกันทั้งหมด และเนื่องจากมีช่องการประมวลผลแบบเป็นกลุ่ม 2 ช่องสำหรับโปรเจ็กต์นี้ รายการจึงทำงานพร้อมกันได้ 2 รายการ (รายการที่ส่งเป็นรายการแรกและรายการที่ส่งเป็นรายการที่ 2)

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