Big data และประวัติความเป็นมาของ Hadoop

เมื่อเช้าวันเสาร์ผมเห็นเมล์พี่ที่ทำงานแชร์เรื่องนี้แต่น่าจะยังไม่พอผมก็เลยมาเขียนโพสต์เพิ่มเติม

อะไรคือ Big Data? เท่าไหร่ถึงเรียก Big?


Big Data คือข้อมูลที่มีขนาดใหญ่ แต่ว่าต้องใหญ่เท่าไหร่ถึงเรียก Big Data? ยังไม่มีใครกำหนดนิยามที่แน่นอนว่าข้อมูลขนาดเท่าไหร่ถึงเรียก Big Data ได้ แต่ผมชอบคำนิยามโดยคุณ Mike Loukides มาก เขาบอกว่า

“big data” is when the size of the data itself becomes part of the problem.

และของคุณ Edd Dumbill

“Big data” is data that becomes large enough that it cannot be processed using conventional methods.

ความเป็นมาของ Hadoop


ในปี 2002 คุณ Doug Cutting ซึ่งเป็น Search director (ในขณะนั้น) ของ Internet Archive ต้องการ search engine ที่เป็น open source ดีๆ ซักตัวก็เลยสร้างระบบขึ้นมาระบบหนึ่งโดยร่วมมือกับคุณ Mike Cafarella ที่ตอนนั้นเป็นนักศึกษาปริญญาโทที่มหาวิทยาลัย Washington และตั้งชื่อโครงการนี้ว่า Nutch (คุณ Doug Cutting สร้าง Lucene ที่เป็น text indexing และ search library ในปี 1997 พอตั้งโปรเจค Nutch ก็เอามาใช้ด้วย) ซึ่งเป็นโปรแกรมสำหรับทำการท่องไปยังเว็บไซต์ต่างๆ และเก็บข้อมูลไว้ (Web crawler) ในตอนนั้นได้ทำการเก็บข้อมูล (Index) ไว้กว่า 100 ล้านเว็บ แต่ว่าการทำงานของ Nutch ก็ไม่ได้ง่ายเท่าไหร่ เพราะมันทำงานบนหลายเครื่องและต้องมีคนมาคอยเฝ้าดูตลอดเวลาว่ามันไม่ได้ล่ม จนมาถึงตอนที่ Google ได้ปล่อย Paper Google File System ในเดือนตุลาคมปี 2003 และ Paper MapReduce ในเดือนธันวาคมปี 2004

ก่อนที่จะไปไกลกว่านี้ขออธิบายเรื่อง Distributed File System (DFS) ก่อนนะครับ หลักๆ คือการกระจายข้อมูลที่เราต้องการจัดเก็บลงไฟล์แล้วเอาไปไว้บนคอมหลายๆ ตัว แต่ละตัวเรียกว่า node ซึ่งวิธีการเก็บก็คือไฟล์หนึ่งไฟล์จะถูกแบ่งออกเป็นหลายๆ ส่วนและมีขนาดเท่ากันจากนั้นนำไปเก็บไว้ตาม node ต่างๆ ซึ่งหากมองกลุ่ม node เหล่านี้เหมือนฮาร์ดดิสเราก็จะได้ harddisk ที่มีขนาดใหญ่มาก เพิ่มได้ไม่จำกัดแล้วไม่กระทบกับข้อมูลเดิมที่มีอยู่ และหากมี node เจ๊งระบบก็ยังสามารถทำงานได้ และ Google File System (GFS) ก็คือ Distributed File System ใน version ของ Google ครับ

ที่มา: http://en.wikipedia.org/wiki/Google_File_System
ที่มา: http://en.wikipedia.org/wiki/Google_File_System

และก็มีถึงพระเอกของเรา MapReduce แบ่งการทำงานเป็นสองส่วนตามชื่อเลยครับ Map เป็นการกำหนดให้แต่ละ node ทำการประมวลผลข้อมูลที่ตัวเองถืออยู่ และ Reduce คือการนำผลลัพธ์ที่ได้จากการประมวลผลตอน Map มาทำการรวมกันจนได้ชุดข้อมูลที่ต้องการ หากลองค้นหาตัวอย่างตามเน็ตก็จะเห็นตัวอย่างที่ชัดเจนที่สุดคือการนับคำที่เป็น keyword ว่ามีอยู่ในชุดข้อมูลกี่ตัว

  • Map – แต่ละ node นับคำในชุดข้อมูลที่ตัวเองถืออยู่
  • Reduce – รวมผลลัพธ์จากทุก node ว่าพบ keyword กี่คำ
ตัวอย่างการใช้ MapReduce ในการนับจำนวนคำที่ปรากฏในข้อความ

ตัดกลับเข้าเนื้อเรื่องเดิม พอทั้งสองคนได้เห็น Paper นี้ก็ได้ทำการสร้างระบบไฟล์ DFS และ Framework การประมวลผลในรูปแบบของตัวเองด้วยภาษา Java (MapReduce ของ Google เขียนด้วย C++) จนกลายมาเป็น Hadoop จากนั้นก็ทำการ port โปรเจค Nutch มาอยู่ข้างบน

ในปี 2006 คุณ Cutting ได้เข้ามาทำงานกับบริษัท Yahoo! ซึ่งที่นี่ก็มีคนที่ประทับใจกับ Paper GFS และ MapReduce เหมือนกัน แล้วต้องการที่จะนำมาสร้างในรูปแบบ open source (GFS และ MapReduce เป็บแบบมีลิขสิทธิโดย Google) คุณ Cutting ก็เลยดึงระบบจัดเก็บไฟล์และการประมวลผลมาจากโปรเจค Nutch ออกมาแล้วตั้งชื่อว่า Hadoop ตามชื่อช้างที่เป็นของเล่นของลูกชายเขา แล้วทำการ open source เป็นโปรเจคหนึ่งใน Apache Software Foundation ส่วนโปรเจค Nutch ก็ยังอยู่เหมือนเดิม แล้วต่อมาในปี 2007 ก็มีข่าว Yahoo! ก็เริ่มใช้ Hadoop สำหรับ Search Engine ของตัวเอง

แต่ทว่าคนฝั่ง open source ก็ดูไม่ค่อยปลื้มกับ Hadoop ซักเท่าไหร่นัก เนื่องจากเป็นการทำเลียนแบบของ Google ซึ่งมีลิขสิทธิ และไม่ได้ขออนุญาตด้วย จนมาถึงปี 2013 ก็มีข่าวว่า กูเกิลประกาศ “ไม่ฟ้องใครก่อน” ด้วยสิทธิบัตร MapReduce 10 ฉบับ ที่ Google ถืออยู่ ซึ่งก็ถือว่าเป็นเรื่องที่น่ายินดี

อ้างอิง


Leave a Reply

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 / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s