APACHE SPARK

Pongsit-Y
CSCMU Undergrad Seminar
3 min readMar 25, 2020

Apache Spark เป็นซอฟต์แวร์ที่ประมวลผลข้อมูลขนาดใหญ่ (Big data) ที่สร้างบน HDFS แบบคลัสเตอร์ที่รวดเร็วและใช้งานง่าย ซึ่งลักษณะการทำงานเป็นแบบเดียวกับ MapReduce ของ Hadoop โดยมีจุดเด่นอยู่ที่ความเร็วในการประมวลผล ซึ่งเร็วกว่า MapReduce ของ Hadoop ได้ถึง 10–100 เท่า ให้บริการ High-level APIs ใน Java, Scala, Python และ R

ที่มาของ Spark หรือว่า Apache Spark นั่นก็คือ Spark ถูกสร้างใน Lab ที่ UC Berkeley ซึ่งนำทีมโดย Matei Zaharia จาก RAD Lab (ปัจจุบันเปลี่ยนเป็น AMPLab) ในปี ค.ศ. 2009 ต่อมาได้เป็น Open Source ในปี ค.ศ. 2010 โดยใช้สัญญาอนุญาตแบบ BSD แล้วในปี ค.ศ. 2013 ก็บริจาคให้กับ Apache Foundation ไป (เลยได้ชื่อ Apache Spark มา)

Library ของ Spark

  • Spark SQL เป็น module สำหรับการทำงานกับข้อมูลที่มี Structure ใช้สำหรับแปลง dataset ให้อยู่ในรูปแบบของ DataFrame ทำให้สามารถใช้ SQL command ในการประมวลผลข้อมูลได้ ทำให้สามารถเชื่อมต่อกับแหล่งข้อมูลอื่น ๆ ได้ด้วยวิธีเดียวกัน รองรับ HiveQL syntax (Hive คือเครื่องมือที่สร้างขึ้นเพื่อดึงข้อมูลจาก HDFS ด้วย Hive Query Language Statement ที่มีลักษณะเหมือนกับ SQL statement) นอกจากนี้ ยังสามารถเชื่อมต่อผ่าน JDBC หรือ ODBC Connectivity สำหรับ Business Intelligence Tools (BI Tools)ได้อีกด้วย
ภาพแสดงความสามารถในการรองรับ Syntax จากแหล่งต่าง ๆ ของ Spark SQL
การเชื่อมต่อ BI Tools กับ Spark SQL ด้วย JDBC หรือ ODBC
  • Spark Streaming ใช้สำหรับการประมวลผลแบบ Real-Time รองรับ Fault tolerance สามารถ recovery ได้ทั้ง lost work และ operator state
ความสามารถในการ Recovery ได้อย่างรวดเร็วของ Spark Streaming
  • MLlib ใช้สำหรับการประมวลผล Machine Learning มีความเร็วในการทำงานมากกว่า Hadoop MapReduce พอสมควร โดยทดสอบจากอัลกอริทึม Logistic Regression สามารถรันได้บน Hadoop, Apache Mesos, Kubernetes, standalone หรือบน cloud และเข้าถึงข้อมูลใน HDFS , Apache Cassandra, Apache HBase, Apache Hive และ data source อื่น ๆ อีกมากมาย
กราฟเปรียบเทียบความเร็วในการประมวลผลอัลกอริทึ่ม Logistic Regression ของ Hadoop กับ Spark
  • GraphX เป็น API ที่ใช้สำหรับการประมวลผล Graph เป็น Graph system ที่มีประสิทธิภาพมากที่สุด มีความเร็วในการประมวลผลที่สุด ในกลุ่มของ specialized graph processing system
เปรียบเทียบความเร็วในการประมวลผลกราฟ ระหว่าง GraphLab, GraphX และ Giraph

ข้อดีของ Spark เมื่อเทียบกับ Hadoop

  • มีความเร็วในการประมวลผลกว่า Hadoop ในบางแง่มุมของการใช้งาน 10 เท่า (บนฮาร์ดดิสก์) ถึง 100 เท่า (บนหน่วยความจำ RAM) ทดสอบเปรียบเทียโดยใช้อัลกอริทึม Logistic regression
  • การประมวลผลแบบ Real-time โดย Spark Streaming สามารถใช้ในการประมวลผลข้อมูลแบบ Real-time ได้ในขณะที่ Hadoop ไม่มีกลไกนี้เพราะเน้นหนักไปที่การประมวลผลงานแบบ Batch ที่ทำเป็นรอบ ๆ ตามเวลา
  • Spark ทำการแคชข้อมูลได้ดีกว่าเนื่องจากมีการเก็บข้อมูลไว้ในหน่วยความจำแต่ Hadoop เก็บลงในดิสก์ แต่ทั้ง Hadoop และ Spark ก็สามารถมี Data Locality เพื่อกำหนดว่าข้อมูลอยู่ ณ ตำแหน่งไหน ยิ่งใกล้ๆ ตัวยิ่งดึงได้ดี แต่ Spark ก็ยังถือว่าได้เปรียบเพราะมี Data Locality ในระบบ Process ของ JVM
  • Spark มี API ให้ใช้งานที่หลากหลาย ทั้ง Scala, Java, Python, R และ Spark SQL
  • ทั้ง Spark และ Hadoop มีขั้นตอนการ Recovery และ Fault tolerance ในหลายระดับ และสามารถแคชข้อมูลเก็บเอาไว้ได้ แต่ Spark จะมีความเร็วในการดึงข้อมูลมากกว่า เนื่องจากมีการจัดเก็บใน RAM แต่ Hadoop จะจัดเก็บบน Harddisk ซึ่ง Spark ในบางระดับสามารถเก็บ Deserialize (กระบวนการย้อนกลับ Byte stream ที่ได้จากการ Serialization ไปเป็น Data Object รูปแบบดั้งเดิม) ไว้ในหน่วยความจำ
  • Spark เป็น opensource ที่มี community และ active contributors จำนวนมาก

ข้อเสีย

สืบเนื่องมาจาก Spark ต้องทำงานบน Hadoop ซึ่งถ้าหากต้องการติดตั้งแบบ Standalone จะมีความยุ่งยากอย่างมาก ต้องทำการติดตั้งโปรแกรมต่าง ๆ ที่ใช้ในระบบของ Hadoop หลายขั้นตอนนั่นเอง

ขอขอบพระคุณแหล่งข้อมูลจาก

เกริ่นก่อน Apache Spark คืออะไร? — Bhuridech Sudsee — Medium

--

--