ถ้าพูดถึง Apache Spark หลายคนก็คงจะถามว่า มันคืออะไร ในบทความนี้เราก็เลยจะมาเฉลยให้ฟังกันค่ะ (ความจริงมีเพียงหนึ่งเดึยวเท่านั้น~)
ทุกคนรู้กันใช่ไหมคะว่าการที่เราจะประมวลผลข้อมูลขนาดใหญ่มากๆได้นั้น เราไม่สามารถใช้เครื่องมือธรรมดาทั่วไปได้ อย่างที่คุยกันไว้ในบทความก่อนหน้า Big Data คืออะไร ดังนั้นหนึ่งในเครื่องมือสุดฮอทและมีความสามารถในการจัดการ Big Data ได้นั้น ก็คือ Apache Spark นั่นเอง
ติดตามฟัง Apache Spark คืออะไร แบบ 5 นาทีสั้นๆทางช่อง Youtube หรือเชิญอ่านต่อได้เลยค่ะ
Apache Spark คืออะไร
Apache Spark เป็นเครื่องมือหนึ่งที่ถูกดีไซน์มาให้เราใช้งานแบบทำงานกลุ่มได้ โดยที่เชื่อมต่อระบบการทำงานของคอมพิวเตอร์เข้าด้วยกัน หรือเรียกว่า Cluster computing platform ซึ่งสามารถกระจายงานที่ต้องทำไปยังเครื่องอื่นๆภายในระบบ ทำให้เราสามารถประมวลผลข้อมูลขนาดใหญ่แบบเต็มประสิทธิภาพ หรือแบบ real-time ไปพร้อมๆกันได้
จุดเด่นของ Apache Spark คือ fast และ general-purpose
ถ้าจะมองให้เห็นภาพง่ายๆ ก็สมมติว่า เรามีงานทั้งหมด 8 อย่าง แล้วถ้าทำอยู่คนเดียวเนี่ย ก็จะใช้เวลานานมากถึงมากที่สุด แต่ถ้าเราแยกร่างได้เป็นคนแปดคน แล้วทำงานแต่ละงานพร้อมกันได้ละก็ เราก็จะลดเวลาทำงานไปได้ถึงแปดเท่าเลย
Apache Spark vs Hadoop
หลายคนอาจจะคุ้นเคยกับ Hadoop ซึ่งเป็นหนึ่งในเครื่องมือที่จัดการกับ Big Data เช่นกัน
ข้อดีหลัก ๆ ที่ถูกใจใครหลายๆคนของ Apache Spark เพราะเหนือกว่า Hadoop ตรงที่ความเร็วของ Spark ที่สามารถรันบนหน่วยความจำได้เร็วกว่าถึง 100 เท่า และเร็วกว่า 10 เท่าบนดิสก์ ในขณะที่ Hadoop รันได้แต่บนดิสก์เท่านั้น
นอกจากนี้ Hadoop ยังต่างกับ Spark ตรงที่ไม่สามารถวิเคราะห์ดาต้าแบบ real time ได้
และ Spark ยังมีส่วนประกอบเด็ดอื่นๆ อีกมากมายที่ทำให้การทำงานกับ Data เป็นเรื่องง่าย มาดูกันเลยว่ามีอะไรบ้าง
Unified Stack โครงสร้าง
อย่างที่บอกไปว่าจุดเด่นของ Spark คือ ความเร็วและสามารถใช้งานทั่วไปได้ ทำให้โครงสร้าง Spark ประกอบไปด้วยหลายส่วนด้วยกัน คล้ายๆกับการใช้ libraries ในซอร์ฟแวร์อื่นๆ เพื่อรองรับกับงานที่หลากหลายได้ ตั้งแต่ SQL จนถึง Machine Learning เรียกได้ว่าครบวงจรเลยก็ว่าได้
มาลองดูส่วนประกอบไปพร้อมๆกันเลย
- Spark Core: มีฟังชั่นเบื่องต้นสำหรับ กำหนดงาน จัดการหน่วยความจำ fault recovery การจัดการ storage system และอื่นๆอีก เช่นการเรียก API เฉพาะตัวที่เรียกว่า RDDs (resilient distributed datasets) ซึ่งเป็นสิ่งที่ช่วยในการรันโปรแกรมในหลายๆเครื่อง พร้อมๆกันแบบคู่ขนาน
- Spark SQL: เป็นส่วนที่สามารถใช้ SQL, HQL จัดการกับข้อมูลที่มีโครงสร้างในรูปแบบต่างๆ เช่น Hive table, Parquet และ JSON ได้ นอกจากนี้ยังมีความพิเศษตรงที่เราสามารถใช้ SQL queries กับภาษาอื่นๆเช่น Python Java Scala ผ่าน RDDs ได้ในที่เดียว
- Spark Streaming: เป็นส่วนที่ทำให้เราทำงานกับ ดาต้าแบบ live streams ได้ ซึ่งมีการใช้ API ในการจัดการที่คล้ายกับ RDDs ทำให้มันง่ายกับโปรแกรมเมอร์ในการสลับไปมาระหว่าง ดาต้าใน หน่วยความจำ ดิสก์ หรือดาต้าที่มาถึงแบบ real time
- MLlib: มีฟังชั่นในการทำ Machine Learning ตั้งแต่เบื่องต้นจนถึงแอดวานซ์ ยกตัวอย่างเช่น classification, regression, clustering และ collaborative filtering รวมถึงการประเมินโมเดล การนำข้อมูลเข้ามาใช้วิเคราะห์
- GraphX: เป็นส่วนที่ใช้จัดการกราฟ เช่น กราฟที่เชื่อมความสัมพันธ์ระหว่างเรากับเพื่อนใน social media สามารถใช้ RDDs ในการควบคุมแต่ละ vertex และ edge ของกราฟได้โดยตรง อีกทั้งยังมี operation และ libraries ต่างๆเข้ามาเสริมด้วย
- Cluster Managers: อย่างที่รู้ๆกันว่า Spark ทำให้เราทำงานพร้อมกันในหลายๆเครื่อง (nodes) ได้ เพื่อให้ง่ายต่อการทำงานในการแบ่งคลัสเตอร์จึงมี เครื่องมือในการจัดการคลัสเตอร์ในตัวเอง เรียกว่า Standalone Scheduler แต่สำหรับใครที่มีเครื่องมืออื่นอยู่แล้ว เช่น Hadoop YARN, Apchae Mesos ก็สามารถใช้งานด้วยกันได้
สรุปประโยชน์ของ Spark
- ส่วนประกอบใน Unified Stack เพิ่มประสิทธิภาพให้กันและกัน จาก lower-level ไป higher-level
- ค่าใช้จ่ายในการรันโปรแกรมตั้งแต่การ deployment, maintenance, testing หรือ support น้อยลงเพราะเราสามารถใช้แค่ซอร์แวร์ตัวเดียว จาก 5 ถึง 10 ตัวโดยปกติ
- เป็นเครื่องมือที่สามารถทำงานได้ตั้งแต่ต้นจนจบในตัวเดียว เช่น ใช้ Machine Learning ในการจำแนกดาต้า จากดาต้าที่เข้ามาแบบ real-time ในขณะเดียวกัน data analyst ก็เรียกผลโดยใช้ SQL ใน real-time เช่นกัน นอกจากนั้น data scientist และ data engineer ก็สามารถเข้าถึงข้อมูลผ่าน Python shell หรือ ผ่าน Standalone batch ในขณะที่ IT สามารถดูแลแค่ระบบ ระบบเดียวได้
สำหรับใครที่ตื่นเต้น อยากเรียนรู้แล้ว ลองเข้าไปดูที่ วิดีโอสอนการใช้ Spark พร้อมสไลด์ภาษาไทย หรือ บทความแนะนำระบบออนไลน์ฟรี ในการเขียน Spark แบบคอมไม่ต้องแรง ไปพลางๆก่อนได้เลยค่า แล้วบทความหน้าจะมาคุยกันต่อเรื่อง RDDs ใน Apache Spark
สุดท้ายนี้ถ้าใครมีคำถามหรือข้อสงสัย แนะนำให้ลองอ่านบทความอื่นๆในเว็บ DataTH ของเราเพิ่มเติม หรือเข้ามาคุยกันในเพจ Facebook เพจ DataTH ได้เลยค่า เรามีบทความอัพเดทให้เสมอๆ แล้วเจอกันนะคะ
(รูปประกอบบทความ จาก Netflix: Tidying Up with Marie Kondo ใครยังไม่ได้ดู แนะนำว่าให้ลองดูครับ ได้ข้อคิดในการจัดบ้านเยอะอยู่)
เรียนรู้วิธีการใช้ Apache Spark โดยเขียน Pyspark ได้ที่