YTsaurus เป็นแพลตฟอร์มจัดเก็บและประมวลผลแบบกระจายสำหรับข้อมูลขนาดใหญ่พร้อมรองรับโมเดล MapReduce
เมื่อไม่กี่วันที่ผ่านมาYandex ได้ประกาศเปิดซอร์สโค้ดของแพลตฟอร์ม YTsauruซึ่งใช้สำหรับการจัดเก็บและประมวลผลข้อมูลจำนวนมากแบบกระจาย โดยรองรับการจัดการข้อมูลโดยใช้กระบวนทัศน์ MapReduce, เอ็นจิ้นการสืบค้น SQL, ระบบไฟล์แบบกระจาย และที่เก็บข้อมูล NoSQL ในรูปแบบคีย์-ค่า
YTsaurus ถูกนำมาใช้ในโครงสร้างพื้นฐานของ Yandex เพื่อใช้ประโยชน์จากพลังการประมวลผลของซูเปอร์คอมพิวเตอร์ของบริษัทอย่างมีประสิทธิภาพ แพลตฟอร์มนี้สามารถขยายขนาดได้ถึงคลัสเตอร์ที่มีโหนดมากกว่า 10,000 โหนด ครอบคลุมโปรเซสเซอร์ได้มากถึงหนึ่งล้านตัวและ GPU หลายพันตัว (สำหรับงานด้านการเรียนรู้ของเครื่อง)
คอนเทนเนอร์แบบแยกที่ทำงานบนเซิร์ฟเวอร์จริงสามารถใช้เป็นหน่วยคลัสเตอร์ได้ ที่เก็บข้อมูลสามารถบรรจุข้อมูลที่อยู่บนสื่อต่างๆ เช่น ฮาร์ดไดรฟ์, SSD, NVME และ RAM
คลัสเตอร์รองรับการเพิ่มและการลบโหนดแบบไดนามิก ความซ้ำซ้อน (ไม่มีจุดล้มเหลวแม้แต่จุดเดียว) การจำลองแบบอัตโนมัติ การอัปเกรดซอฟต์แวร์คลัสเตอร์ที่ใช้งานอยู่ และการกู้คืนความซ้ำซ้อนอัตโนมัติในกรณีที่โหนดล้มเหลว
ระบบรองรับคลัสเตอร์สามประเภท ได้แก่คลัสเตอร์ประมวลผล (สำหรับการประมวลผลแบบขนานขนาดใหญ่ของข้อมูลขนาดใหญ่โดยใช้การดำเนินการ MapReduce) คลัสเตอร์สำหรับตาราง Pivot และการจัดเก็บข้อมูลแบบ Key-Value และคลัสเตอร์ที่กระจายอยู่ตามภูมิศาสตร์
บริการบนแพลตฟอร์มสามารถให้วิธีในการจัดเก็บและประมวลผลข้อมูลสำหรับผู้ใช้หลายหมื่นคน แอปพลิเคชัน YTsaurus ทั่วไปในยานเดกซ์ประกอบด้วยการจัดเก็บข้อมูลเกี่ยวกับผู้ใช้เครือข่ายโฆษณา การฝึกอบรมโมเดลแมชชีนเลิร์นนิง การสร้างดัชนีการค้นหา และสร้างคลังข้อมูลสำหรับบริการต่างๆ เช่น ยานเดกซ์แท็กซี่ อาหาร Lavka และการจัดส่ง
จากกรณีการใช้งานพื้นฐานที่มีการกล่าวถึง:
- การประมวลผลเป็นชุด: MapReduce และ SPYT (Apache Spark เป็นเครื่องมือประมวลผลข้อมูลใน YTsaurus) สำหรับการประมวลผลข้อมูลที่มีโครงสร้างและกึ่งโครงสร้าง: บันทึกหรือธุรกรรมทางการเงิน
- การวิเคราะห์เฉพาะกิจ: สืบค้นอย่างรวดเร็วผ่าน CHYT (กลุ่มเซิร์ฟเวอร์ ClickHouse บนโหนดประมวลผล YTsaurus) โดยไม่ต้องคัดลอกข้อมูลไปยังระบบวิเคราะห์แยกต่างหาก ODBC และ JDBC พร้อมความสามารถในการเชื่อมต่อ BI เพื่อการแสดงภาพ
- งาน OLTP: การทำธุรกรรมตามเวลาจริงพร้อมการจัดเก็บคีย์-ค่า: ตัวอย่างเช่น การจัดเก็บโปรไฟล์ผู้ใช้ การแสดงโฆษณา หรือการประมวลผลสตรีม
- การเรียนรู้ของเครื่อง: จัดการคลัสเตอร์ GPU เพื่อฝึกโมเดลด้วยพารามิเตอร์หลายพันล้านตัว
- การจัดเก็บข้อมูลเมตา: การจัดเก็บธุรกรรมของ metaformation และบริการที่เชื่อถือได้ของล็อคแบบกระจาย
- การสร้างคลังข้อมูลและ ETL สำหรับการประมวลผลข้อมูลหลายชั้นโดยใช้เครื่องมือทั่วไป: Apache Spark, SQL, MapReduce
ในส่วนขององค์ประกอบหลักทางสถาปัตยกรรมได้กล่าวถึงดังนี้
- ระบบไฟล์แบบกระจายและพื้นที่เก็บข้อมูลเมตาตามต้นไม้ที่ทนทานต่อความผิดพลาดของ Cypress
- ตัวกำหนดตารางเวลาสำหรับการคำนวณแบบกระจายพร้อมการรองรับโมเดล MapReduce รวมถึงการดำเนินการขั้นพื้นฐานขั้นสูง
- ความสามารถในการปรับขนาดในแนวนอนของการดำเนินงานด้านไอที
- การแยกทรัพยากรการประมวลผลและความเป็นไปได้ในการจัดสรรทรัพยากรการประมวลผลบางอย่าง (CPU, GPU, RAM) ในสัดส่วนที่แตกต่างกัน
- PivotTable สำหรับสร้างที่เก็บข้อมูล OLTP รองรับที่เก็บข้อมูลที่ใช้ MVCC ธุรกรรม ความสามารถในการลบข้อมูลหลังจากหมดอายุ และคิวข้อความสำหรับการสตรีมการประมวลผลข้อมูลผ่าน PivotTable
- API และไลบรารีสำหรับการเขียนโปรแกรมภาษา C++, Python, Java, Go
- เว็บอินเตอร์เฟสสำหรับผู้ใช้และผู้ดูแลระบบที่รองรับการนำทางผ่านที่เก็บข้อมูลแบบต้นไม้
สุดท้ายนี้หากคุณสนใจเรียนรู้เพิ่มเติมคุณควรทราบว่าโค้ดของโปรเจ็กต์นี้เขียนด้วยภาษา C/C++ และเป็นโอเพนซอร์สภายใต้ใบอนุญาต Apache 2.0 คุณสามารถดูรายละเอียดเพิ่มเติมได้ที่ลิงก์ต่อไปนี้
ที่เก็บโค้ดบน GitHub ประกอบด้วยโค้ดเซิร์ฟเวอร์สำหรับ YTsaurus โครงสร้างพื้นฐานการใช้งานที่ใช้ k8s อินเทอร์เฟซเว็บสำหรับระบบ และ SDK ไคลเอ็นต์สำหรับภาษาโปรแกรมยอดนิยม เช่น C++, Java, Go และ Python