The Big ‘Big Data’ Question: Hadoop or Spark?

The Big ‘Big Data’ Question: Hadoop or Spark?

Screen Shot 2015-12-13 at 8.27.10 AM

มีคำถามหนึ่งที่มักได้รับการถามมากมายจากลูกค้า ว่าควรเลือกใช้ framework อะไร ระหว่าง Hadoop และ Spark โดยที่ Spark เป็น Open source ที่ใช้ในงาน Big data มากพอๆกับ Hadoop ในตอนนี้ และยังไม่มีข้อเปรียบเทียบที่ชัดเจนระหว่างทั้งคู่

ในการหาความแตกต่างระหว่าง Hadoop และ Spark นั้น ตัวผู้เขียนได้ทำการสัมภาษณ์และสอบถามทั้งจากผู้ที่เคยและไม่เคยเรียนสาขา Computer Science มาก่อน จนพอสรุปได้ใจความสำคัญดังนี้

Hadoop และ Spark ต่างเป็น Big data framework ที่มี Tool ต่างๆเกี่ยวกับการจัดการข้อมูลขนาดใหญ่หรือ Big data ให้เลือกใช้มากมาย โดยหลายๆปีมานี้ Hadoop เป็นผู้นำทางด้าน Big Data Framework มาตลอด อย่างไรก็ตาม งานเกี่ยวกับ big data ต่างๆที่ทั้ง Spark และ Hadoop ทำ มันไม่ได้เหมือนกันเสียทีเดียวและในความจริง ทั้ง Spark และ Hadoop สามารถทำงานร่วมกันได้เป็นอย่างดี ถึงแม้ว่า Spark จะได้รับการกล่าวขานว่าสามารถทำงานได้เร็วกว่า Hadoop ถึง 100 เท่าในสถานการณ์การทำงานปกติ แต่ Spark ก็ไม่มีระบบการจัดเก็บแบบกระจาย (distributed storage system) อย่างที่ Hadoop มี

Distributed Storage หรือ การจัดเก็บแบบกระจาย เป็นพื้นฐานของการเรื่อง Big data ที่ช่วยให้สามารถเก็บข้อมูลในระดับ petabyte ได้ โดยแบ่งกันเก็บลงบนคอมพิวเตอร์หลายๆเครื่อง ซึ่งแน่นอนว่ามันมีประสิทธิภาพมากกว่าการเก็บลงบนคอมพิวเตอร์เพียงเครื่องเดียว อีกทั้งระบบนี้ค่อนข้างที่จะ scalable ซึ่งหมายความว่าระบบนี้สามารถเพิ่มพื้นที่การจัดเก็บได้ตามต้องการ

จากที่ได้กล่าวไปแล้วว่า Spark ไม่ได้มีระบบการจัดเก็บในตัวของมันเอง มันจึงต้องการระบบการจัดเก็บจากภายนอกเข้ามาเสริม ทำให้คนส่วนใหญ่ที่จะต้องทำงานกับ Big data มักจะติดตั้ง Spark อยู่บน Hadoop อีกทีหนึ่ง และให้ทั้งสองทำงานร่วมกันโดย Spark จะทำงานเกี่ยวกับการวิเคราะห์ข้อมูลตั้งแต่ระดับเบื้องต้นได้จนถึงระดับสูงและมี Hadoop Distributed File System (HDFS) ที่อยู่ภายใน Hadoop เป็นที่สำหรับจัดเก็บไฟล์

สิ่งที่ Spark เหนือกว่า Hadoop คือ ความเร็วในการประมวลผล เพราะ Spark มีการประมวลผลแบบ in- memory ซึ่งจะช่วยลดเวลาในการอ่านและเขียนข้อมูล ในขณะที่กิจกรรมอันเชื่องช้านี้ ยังคงมีอยู่ใน Map Reduce ที่อยู่ภายใน Hadoop อีกที

Map Reduce จะเขียนข้อมูลทั้งหมดลงบน Physical storage ภายหลังจากทำงานแต่ละ operation เสร็จสิ้น ซึ่งถ้าเกิดข้อผิดพลาดใดๆระหว่างการทำงาน ก็จะต้อง recover ข้อมูลใหม่ทั้งหมด ความเสี่ยงในการสูญหายของข้อมูลมีสูง ต่างจาก Spark ที่มีการเก็บข้อมูลต่างๆเป็น Resilient Distributed Datasets ซึ่งสามารถแก้ปัญหาตรงจุดนี้ได้

ฟังก์ชั่นการทำงานของ Spark ที่สามารถรองรับงานที่ยากๆได้อย่างการประมวลผลแบบ real-time หรือการใช้ machine learning เข้ามาช่วยในการวิเคราะห์และประมวลผลก็เป็นสิ่งที่ทำได้ใน Hadoop เช่นเดียวกัน แต่อย่างที่กล่าวไปแล้วว่า Spark มีการทำงานที่เร็วกว่าด้วยการประมวลผลแบบ in-memory การทำงานแบบ real-time นี้ในปัจจุบันมีการใช้กันเยอะมากตามธุรกิจต่างๆ โดยส่วนใหญ่เป็นตั้งแต่การเก็บข้อมูล การประมวลผล จนถึงการแสดงผลบน dashboard แบบ real-time ด้วย พบมากในธุรกิจค้าปลีก หรือระบบการ monitor การทำงานในโรงงานต่างๆ

Machine learning เป็นการสร้าง Algorithm ซึ่งสามารถคิดหรือสร้างสรรค์สิ่งต่างๆได้ด้วยตัวของมันเอง พร้อมทั้งให้มันสามารถปรับปรุง เรียนรู้เกี่ยวกับกระบวนการทำงานสร้างโมเดลทางสถิติ และการ simulation เพื่อหา ‘ideal’ solution ที่สามารถแก้ปัญหาหรือโจทย์ที่ได้รับมาได้อย่างดีที่สุด ซึ่งการใช้ Spark มีความเหมาะสมมากกว่า เพราะมีความสามารถในการประมวลผล รวมถึงการทำงานที่รวดเร็วกว่า Hadoop นอกจากนี้ Spark มี Machine Learning Library เป็นของตัวเอง เรียกว่า MLib ในขณะที่ Hadoop ต้องมีการเชื่อมต่อกับ interface ภายนอกเพื่อเรียก Machine Learning Library ต่างๆมาใช้ ยกตัวอย่างเช่น การติดตั้ง Apache Mahout เพิ่มลงบน Hadoop

ในความเป็นจริง อาจดูเหมือนว่าทั้ง Spark และ Hadoop เป็นคู่แข่งทางการตลาดกัน เพราะมี Function หลายๆที่คล้ายคลึงกัน แต่มันก็ไม่ใช้แบบนั้นเสมอไป เพราะมันเป็นเรื่องทางการตลาดด้วย Vendor หลายๆแห่ง เช่น Cloudera นำเสนอการขายทั้ง Spark และ Hadoop ให้กับบริษัทต่างๆ เพื่อให้บริษัทสามารถเลือกสิ่งที่เหมาะสมที่สุดให้กับธุรกิจหรือแต่ละงานของตนเอง เช่น ถ้าองค์กรมีข้อมูลขนาดใหญ่อยู่จำนวนหนึ่ง ซึ่งเป็นรูปแบบของ structured data มากๆ แสดงว่า ระบบนี้ไม่ได้ต้องการการประมวลผลแบบ stream ในระดับสูง หรือการใช้ machine learning ที่ซับซ้อนอย่างที่มีใน Spark ดังนั้น ถ้า Vendor เลือกที่จะติดตั้ง Spark ให้กับลูกค้าเท่ากับเป็นการเสียเวลา และสิ้นเปลืองต้นทุนของลูกค้า และอาจเป็นการใช้งานที่ไม่เหมาะสม จนลูกค้าไม่พอใจ

การเพิ่มขึ้นทางกิจกรรมที่ใช้ Spark ตามองค์กรธุรกิจในปัจจุบันนั้นมีมากขึ้นทุกที ทำให้เรื่องการจัดหา storage เพิ่มเติมจากภายนอกเป็นสิ่งที่แต่ละธุรกิจต้องคอยหากันต่อไป ความจริงแล้วมันก็เป็นโอกาสที่ดีอย่างหนึ่งสำหรับ Vendor ที่จะสรรหาระบบ storage เพิ่มเติมภายนอกที่ดีและมีประสิทธิภาพมาขายคู่กับ Spark นี้ ซึ่งน่าจะสามารถสร้างความได้เปรียบทางการแข่งขันกับ Vendor รายอื่นๆได้เป็นอย่างดี

ข้าวทิพย์ ตันติวรวงศ์

ผู้เขียน

11 ธันวาคม 2558

Reference

https://www.dezyre.com/article/hadoop-mapreduce-vs-apache-spark-who-wins-the-battle/83

http://www.datasciencecentral.com/profiles/blogs/the-big-big-data-question-hadoop-or-spark

Leave Comment

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