การประมวลผล Big Data ควรใช้เทคโนโลยีไหนดี?

12687806_599383603542317_5600153161347254731_n

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

  • Interactive analysis
  • Batch analysis
  • Real time analysis
  • Machine Learning

โดยควรจะมีเทคโนโลยีสองกลุ่มคือ การประมวลผลโดยใช้เทคโนโลยี Hadoop จากข้อมูลใน HDFS และการประมวลผลโดยใช้เทคโนโลยี Spark โดยอาจมีข้อมูลจากแหล่งต่างๆ

การประมวลผลโดยใช้ Hadoop

โดยปกติ Hadoop จะใช้เทคโนโลยีอย่าง MapReduce ในการประมวลผลข้อมูลใน HDFS แต่ทั้งนี้เนื่องจาก MapReduce เป็นเทคโนโลยีที่ทำงานแบบ Batch และต้องพัฒนาโปรแกรมด้วยภาษาต่างๆ อาทิเช่น  Java ในการประมวลผล จึงทำให้ MapReduce ได้รับความนิยมน้อยลงและมีแนวโน้มว่าจะถูกแทนที่ด้วยเทคโนโลยี Spark  วันนี้เราอาจไม่ต้องเน้นการประมวลผลผ่านบริการ MapReduce มากนักแต่ควรให้บริการเทคโนโลยีประมวลสำหรับ Hadoop ที่เป็นภาษาคล้าย SQL  โดยแนะนำให้บริการเทคโนโลยีต่างๆ คือ Hive  เป็นเทคโนโลยีที่ใช้ภาษา Hive QL ลักษณะ SQL โดย Hive จะทำหน้าที่ในการแปล SQL like ให้มาเป็น MapReduce แล้วก็ทำการรันแบบ Batch

  • Impala เป็นเครื่องมือที่คล้ายกับ Hive แต่เขียนด้วยภาษา C++ และติดต่อกับข้อมูล HDFS ตรงโดยไม่ต้องผ่าน MapReduce ซึ่งจะทำงานแบบ Interactive
  • Pig เป็นเครื่องมือคล้ายๆ กับ Hive ที่ช่วยให้ประมวลผลข้อมูลโดยไม่ต้องเขียนโปรแกรม Map/Reduce ซึ่ง Pig จะใช้โปรแกรมภาษา script ง่ายๆที่เรียกว่า Pig Latin แทน ทั้งนี้จะทำงานแบบ Batch

การประมวลผลโดยใช้ Spark

Spark  เป็นเทคโนโลยีในการประมวลข้อมูลขนาดใหญ่ โดยสามารถจะประมวลผลข้อมูลทั้งที่อยู่ใน HDFS หรือแหล่งอื่นๆ อาทิเช่น Cloud Storage, NoSQL, RDBMS ดังแสดงในรูปที่ 1 ทั้งนี้ Spark สามารถทำงานแบบ  Standalone หรือจะทำงานบน Hadoop Cluster  ผ่าน YARN ก็ได้ โดยจะทำงานแบบ Interactive โดยมีการระบุว่า Spark สามารถประมวลผลบน  Hadoop ได้เร็วกว่า MapReduce อย่างน้อย 10 เท่า ซึ่ง Spark มีบริการประมวลผลแบบต่างๆ ดังนี้

Screenshot 2016-02-11 08.30.57

รูปที่ 1 ระบบประมวลผลของ Apache Spark

  • Spark core ก็คือระบบประมวลผลโดยผ่าน API ซึ่งให้ผู้ใช้บริการสามารถเลือกใช้ภาษา Java, Scala, Python หรือ R
  • Spark streaming สำหรับการประมวลผลแบบ Realtime  Streaming
  • Spark SQL สำหรับการประมวลผลที่ใช้ภาษาคล้ายกับ SQL
  • MLlib  สำหรับการประมวลที่เป็นแบบ Machine Learning

ทั้งนี้เราสามารถที่จะสรุปเปรียบเทียบเทคโนโลยีการประมวลผลข้อมูลต่างๆ ได้ดังนี้

Screenshot 2016-02-11 08.31.06

ธนชาติ นุ่มนนท์

IMC Institute

Advertisements

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s