big data apache spark

Apache Spark คืออะไร เครื่องมือ Big Data ที่ไม่รู้จักไม่ได้

Share on facebook
Share on twitter
Share on linkedin
Share on email

ถ้าพูดถึง Apache Spark หลายคนก็คงจะถามว่า มันคืออะไร ในบทความนี้เราก็เลยจะมาเฉลยให้ฟังกันค่ะ (ความจริงมีเพียงหนึ่งเดึยวเท่านั้น~)

ทุกคนรู้กันใช่ไหมคะว่าการที่เราจะประมวลผลข้อมูลขนาดใหญ่มากๆได้นั้น เราไม่สามารถใช้เครื่องมือธรรมดาทั่วไปได้ อย่างที่คุยกันไว้ในบทความก่อนหน้า Big Data คืออะไร ดังนั้นหนึ่งในเครื่องมือสุดฮอทและมีความสามารถในการจัดการ Big Data ได้นั้น ก็คือ Apache Spark นั่นเอง 

Apache Spark คืออะไร

Apache Spark logo
โลโก้ 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 เรียกได้ว่าครบวงจรเลยก็ว่าได้

Unified Stack of Apache Spark

มาลองดูส่วนประกอบไปพร้อมๆกันเลย

  • 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 รวมถึงการประเมินโมเดล การนำข้อมูลเข้ามาใช้วิเคราะห์
vertex and edge
vertex and edge
  • 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 ได้ที่

บทความอื่น ๆ ที่เกี่ยวข้อง

ผู้เขียน

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

คุณอยากเป็น Data Engineer มั้ย?

พบกับ คอร์สแรกในไทย ที่สอนความรู้ครบ
เรียนการสร้าง Data Pipeline บน Cloud จากต้นน้ำ - ปลายน้ำ พร้อม Workshop & Live สด

 

ไม่ต้องมีพื้นฐานมาก่อนก็เรียนได้

datath school logo