ในยุคที่ข้อมูลกลายเป็นทรัพยากรสำคัญขององค์กรต่างๆ ดังนั้นการประมวลผลข้อมูลจึงไม่ได้จำกัดอยู่เพียงการจัดเก็บและเรียกดูข้อมูลจากฐานข้อมูลเพียงอย่างเดียวอีกต่อไป จึงจำเป็นต้องปรับระบบให้เข้ากับระบบสมัยใหม่ที่ต้องสามารถรับข้อมูลจำนวนมหาศาลจากหลายๆ แหล่ง ระบบต้องมีนำข้อมูลเหล่านั้นมาประมวลผลอย่างเป็นกระบวนการและเป็นระบบ เพื่อนำข้อมูลไปวิเคราะห์ ปรับเปลี่ยนข้อมูลให้กลายเป็นสารสนเทศที่พร้อมใช้งานตลอดเวลาได้อย่างรวดเร็ว แนวคิดดังกล่าวนี้ ทำให้เกิดเทคโนโลยีสำหรับการประมวลผลข้อมูบแบบกระจาย Distributed Data Processing กล่าวคือ มีหลายเครื่องมาช่วยในการประมวลผลข้อมูลเหล่านี้ ดังนั้น ระบบประมวลผลแบบกระจายจึงเข้ามามีบทบาทสำคัญ ในยุคปัจจุบัน และหนึ่งในเทคโนโลยีที่ได้รับการใช้งานอย่างแพร่หลายคือ Apache Spark ที่ช่วยแก้ปัญหาระบบประมวลแบบกระจาย มีรายละเอียดังนี้
Apache Spark เป็นระบบประมวลผลข้อมูลแบบกระจายที่ออกแบบมาเพื่อทำงานกับข้อมูลขนาดใหญ่ โดยสามารถกระจายการประมวลผลไปยังคอมพิวเตอร์หลายเครื่องใน Cluster และสามารถทำงานได้ทั้ง Batch Processing, SQL, Streaming และ Machine Learning ในช่วงหลายปีที่ผ่านมา Spark ได้พัฒนาจากระบบที่มีจุดเด่นด้าน In-Memory Processing และ RDD ไปสู่แพลตฟอร์มการประมวลผลข้อมูลที่มีสถาปัตยกรรมหลายชั้น และสามารถทำงานร่วมกับ Data Lake, Lakehouse, Cloud Infrastructure และระบบ AI ได้
ในปี 2026 การทำความเข้าใจ Apache Spark จึงไม่ควรจำกัดอยู่เพียงการรู้จักคำสั่ง filter(), groupBy() หรือ join() แต่ควรเข้าใจว่าเมื่อผู้ใช้เขียนคำสั่งเหล่านี้แล้ว Spark ทำอะไรอยู่เบื้องหลัง คำสั่งถูกเปลี่ยนเป็นแผนการประมวลผลอย่างไร งานถูกแบ่งออกเป็นส่วนย่อยอย่างไร และข้อมูลถูกกระจายไปยังเครื่องต่าง ๆ อย่างไร
Apache Spark เป็น Distributed Data Processing Engine สำหรับประมวลผลข้อมูลขนาดใหญ่แบบกระจายบนหลายเครื่อง โดยออกแบบให้สามารถประมวลผลทั้ง Batch Processing, Streaming, SQL, Machine Learning และ Graph Processing ได้บน Execution Engine เดียวกัน
จุดสำคัญของ Spark ไม่ได้อยู่เพียงแค่การประมวลผลข้อมูลแบบกระจาย แต่คือ สถาปัตยกรรมภายในที่เปลี่ยนคำสั่งระดับสูงให้กลายเป็นงานย่อยที่สามารถกระจายไปยัง Worker หลายเครื่องได้อย่างมีประสิทธิภาพ จะกล่าวต่อไปในบทความนี้
กล่าวถึง Apache Spark ในฐานะเป็น Distributed Compute Engine
หัวใจหลักการทำงานของ Apache Spark คือการทำหน้าที่เป็น Distributed Compute Engine หรือเครื่องมือสำหรับประมวลผลข้อมูลแบบกระจาย กล่าวคือ Spark ไม่จำเป็นต้องนำข้อมูลทั้งหมดมาไว้ในเครื่องเดียวแล้วประมวลผล แต่สามารถแบ่งข้อมูลออกเป็นส่วนย่อยและส่งไปประมวลผลบนเครื่องหลายเครื่องพร้อมกันลองจินตนาการว่าองค์กรมีข้อมูลการขายระดับขนาดหลาย TB Terabytes หากประมวลผลบนเครื่องเพียงเครื่องเดียวอาจใช้เวลานาน Hight Time และต้องใช้ทรัพยากรจำนวนมาก Maximam Resource แต่เทคโนโลยีของ Apache Spark ทำงานให้สามารถแบ่งข้อมูลออกเป็นหลาย Partition แล้วส่งเพื่อกระจาย Partition เหล่านั้นไปยัง Worker หลายๆ Worker ที่อยู่หลายเครื่องต่างกัน แต่ละเครื่องสามารถประมวลผลข้อมูลของตนเองพร้อมกันได้ในเวลาเดียวกัน หลักการกระจายงานไปยังที่อื่นๆ หรือเครื่องอื่นๆ ที่พร้อมประมวลผล แล้วส่งกลับงานที่สำเร็จมาเครื่องหลัก
ภาพจาก (https://www.codecademy.com/article/apache-spark)
โครงสร้างหลักของ Apache Spark
สถาปัตยกรรมของ Spark สามารถมองได้เป็นระบบที่ประกอบด้วย Application, Driver, Cluster Manager, Worker Node และ Executor โดยแต่ละส่วนมีหน้าที่แตกต่างกัน
เมื่อผู้ใช้สร้าง Spark Application โปรแกรมจะเริ่มทำงานผ่าน Driver ซึ่งทำหน้าที่เป็นศูนย์ควบคุมของ Application จากนั้น Driver จะติดต่อกับ Cluster Manager เพื่อขอทรัพยากรและสร้าง Executor บน Worker Node เมื่อ Executor พร้อมทำงาน Driver จะส่ง Task ไปให้ Executor ประมวลผล

ความคิดเห็น
แสดงความคิดเห็น