Apache Presto - สถาปัตยกรรม
สถาปัตยกรรมของ Presto เกือบจะคล้ายกับสถาปัตยกรรม DBMS แบบคลาสสิก MPP (การประมวลผลแบบขนานใหญ่) แผนภาพต่อไปนี้แสดงให้เห็นถึงสถาปัตยกรรมของ Presto
แผนภาพด้านบนประกอบด้วยส่วนประกอบต่างๆ ตารางต่อไปนี้อธิบายส่วนประกอบแต่ละส่วนโดยละเอียด
ส. เลขที่ | ส่วนประกอบและคำอธิบาย |
---|---|
1. | Client ไคลเอนต์ (Presto CLI) ส่งคำสั่ง SQL ไปยังผู้ประสานงานเพื่อรับผลลัพธ์ |
2. | Coordinator ผู้ประสานงานเป็นภูตต้นแบบ ในขั้นต้นผู้ประสานงานจะแยกวิเคราะห์การสืบค้น SQL จากนั้นวิเคราะห์และวางแผนสำหรับการดำเนินการสืบค้น ตัวกำหนดตารางเวลาดำเนินการไปป์ไลน์มอบหมายงานให้กับโหนดที่ใกล้ที่สุดและติดตามความคืบหน้า |
3. | Connector ปลั๊กอินหน่วยเก็บข้อมูลเรียกว่าเป็นตัวเชื่อมต่อ Hive, HBase, MySQL, Cassandra และอีกมากมายทำหน้าที่เป็นตัวเชื่อมต่อ มิฉะนั้นคุณสามารถใช้แบบกำหนดเองได้ ตัวเชื่อมต่อให้ข้อมูลเมตาและข้อมูลสำหรับการสืบค้น ผู้ประสานงานใช้เครื่องมือเชื่อมต่อเพื่อรับข้อมูลเมตาสำหรับสร้างแผนการสืบค้น |
4. | Worker ผู้ประสานงานมอบหมายงานให้กับโหนดของผู้ปฏิบัติงาน คนงานได้รับข้อมูลจริงจากตัวเชื่อมต่อ สุดท้ายโหนดของผู้ปฏิบัติงานจะส่งผลลัพธ์ไปยังไคลเอนต์ |
Presto - เวิร์กโฟลว์
Presto เป็นระบบแบบกระจายที่ทำงานบนคลัสเตอร์ของโหนด เครื่องมือสืบค้นแบบกระจายของ Presto ได้รับการปรับให้เหมาะสมสำหรับการวิเคราะห์เชิงโต้ตอบและสนับสนุน ANSI SQL มาตรฐานรวมถึงการสืบค้นที่ซับซ้อนการรวมการรวมและฟังก์ชันหน้าต่าง สถาปัตยกรรม Presto นั้นเรียบง่ายและขยายได้ ไคลเอ็นต์ Presto (CLI) ส่งคำสั่ง SQL ไปยังผู้ประสานงานหลัก daemon
ตัวกำหนดตารางเวลาเชื่อมต่อผ่านไปป์ไลน์การดำเนินการ ตัวกำหนดตารางเวลากำหนดงานให้กับโหนดที่ใกล้เคียงที่สุดกับข้อมูลและตรวจสอบความคืบหน้า ผู้ประสานงานมอบหมายงานให้กับโหนดผู้ปฏิบัติงานหลายโหนดและสุดท้ายโหนดผู้ปฏิบัติงานจะส่งผลลัพธ์กลับไปยังไคลเอ็นต์ ไคลเอ็นต์ดึงข้อมูลจากกระบวนการเอาต์พุต ความสามารถในการขยายคือการออกแบบที่สำคัญ ตัวเชื่อมต่อแบบเสียบได้เช่น Hive, HBase, MySQL เป็นต้นให้ข้อมูลเมตาและข้อมูลสำหรับการสืบค้น Presto ได้รับการออกแบบโดยใช้ "นามธรรมการจัดเก็บข้อมูลแบบง่าย" ซึ่งทำให้ง่ายต่อการให้ความสามารถในการสืบค้น SQL เทียบกับแหล่งข้อมูลประเภทต่างๆเหล่านี้
รูปแบบการดำเนินการ
Presto รองรับคิวรีแบบกำหนดเองและเอ็นจินการดำเนินการกับตัวดำเนินการที่ออกแบบมาเพื่อรองรับความหมายของ SQL นอกเหนือจากการตั้งเวลาที่ดีขึ้นแล้วการประมวลผลทั้งหมดยังอยู่ในหน่วยความจำและวางท่อข้ามเครือข่ายระหว่างขั้นตอนต่างๆ สิ่งนี้จะหลีกเลี่ยงค่าใช้จ่ายในการตอบสนอง I / O ที่ไม่จำเป็น