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 ฯลฯ)
การจัดการงาน
คุณสามารถดูและยกเลิกงานได้โดยใช้อินเทอร์เฟซต่อไปนี้
- หน้างานใน Cloud Console
- ช่วยให้จัดการงานได้ในระดับโปรเจ็กต์ Cloud ในอนาคต อินเทอร์เฟซนี้จะเป็นอินเทอร์เฟซผู้ใช้หลักสำหรับการจัดการงาน
- หน้าตัวจัดการงาน
- อินเทอร์เฟซนี้แสดงงานในระดับผู้ใช้และโปรเจ็กต์ และรองรับการกรองตามชื่องาน
- แท็บงานของ Code Editor
- ช่วยให้คุณตรวจสอบงานควบคู่ไปกับสคริปต์ Code Editor ได้
ListOperationsอุปกรณ์ปลายทาง และtaskคำสั่ง- เหมาะที่สุดสำหรับการดูและจัดการงานแบบเป็นโปรแกรม
งานล้มเหลว
หากงานล้มเหลวด้วยเหตุผลที่การลองอีกครั้งไม่สามารถแก้ไขได้ (เช่น ข้อมูลไม่ถูกต้อง) ระบบจะทำเครื่องหมายงานเป็น 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