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

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

สภาพแวดล้อมแบบโต้ตอบ

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

ปลายทาง

สภาพแวดล้อมแบบโต้ตอบประกอบด้วยปลายทาง API ที่แตกต่างกัน ได้แก่ มาตรฐานและ ปริมาณมาก

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

ปลายทางมาตรฐานเหมาะสำหรับการใช้งานส่วนใหญ่ที่ผู้ใช้เป็นผู้ดำเนินการ และเป็นสิ่งที่ขับเคลื่อน Code Editor และแอป 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เช่น)

สภาพแวดล้อมแบบกลุ่ม

สภาพแวดล้อมนี้เรียกอีกอย่างว่าสแต็ก "แบบอะซิงโครนัส" หรือ "ออฟไลน์" ซึ่งได้รับการเพิ่มประสิทธิภาพสำหรับการประมวลผลแบบขนานที่มีเวลาในการตอบสนองนานของข้อมูลจำนวนมาก ระบบจะส่งคำขอเป็นงานไปยังปลายทางการประมวลผลแบบกลุ่ม โดยปกติแล้วจะส่งโดยการเรียกใช้ฟังก์ชันการนำเข้าหรือส่งออกข้อมูล (เช่น 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 งานจึงทำงานพร้อมกัน (งานที่ส่งเป็นงานแรกและงานที่ส่งเป็นงานที่สอง )

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