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