Big Data คืออะไร ? + วิธีใช้ Hadoop/Spark บน Cloud Dataproc

Suranart Niamcome
SiamHTML
Published in
5 min readNov 7, 2015

ช่วงนี้ไปไหนมาไหนก็มีแต่คนพูดถึง Big Data จนหลายๆ คนก็คงจะพอรู้กันแล้วว่ามันก็คือการนำข้อมูลปริมาณมหาศาลมาใช้ให้เกิดประโยชน์นั่นเองฮะ ส่วนจะใช้ tool ตัวไหน มีวิธีการทำอย่างไรนั้น ผมจะขอใช้บทความนี้เล่าให้เพื่อนๆ ฟังคร่าวๆ แล้วกันนะครับ

โลกทุกวันนี้ ไม่แน่จริง อยู่ไม่ได้ !

อย่างที่เรารู้กันดีนะครับว่า ธุรกิจสมัยนี้มีการแข่งขันกันสูงเอามากๆ เลย ถ้าเราหยุดอยู่กับที่ คนอื่นๆ ก็พร้อมที่จะแซงเราได้ตลอดเวลาฮะ ดังนั้นธุรกิจต่างๆ จึงต้องคอยพัฒนาสินค้าและบริการของตนเองอยู่อย่างต่อเนื่อง แล้วไอ้การพัฒนาที่ว่านี้มันจะง่ายขึ้นเยอะเลยล่ะครับ ถ้าเราสามารถ “รู้อนาคต” ได้ก่อนคนอื่น

รู้ก่อน มีชัยไปกว่าครึ่ง

ถามว่าเราจะสามารถรู้ล่วงหน้าได้ยังไงว่าอะไรจะเกิดขึ้น ? คำตอบคือเราจะต้องใช้ความรู้ทางด้านคณิตศาสตร์เข้ามาช่วยครับ หากเรามีข้อมูลที่เกิดขึ้นในอดีตและปัจจุบัน เราก็พอจะมองออกว่าข้อมูลที่กำลังจะเกิดขึ้นในอนาคตมันจะมีหน้าตาเป็นอย่างไร ซึ่งเราสามารถนำข้อมูลตรงนี้ไปปรับปรุงสินค้าหรือบริการของเราให้ตรงกับความต้องการของลูกค้ามากขึ้นได้ แต่ขั้นตอนที่ว่านี้มันจะไม่ค่อยแม่นยำเท่าไรเลยนะฮะ ถ้าข้อมูลที่นำมาวิเคราะห์นั้นมีปริมาณไม่มากนัก

เราอยู่ในยุคที่เต็มไปด้วยข้อมูล

แต่ในปัจจุบัน เราไม่ต้องกังวลเรื่องปริมาณของข้อมูลเท่าไรแล้วนะครับ เพราะจากการสำรวจล่าสุดพบว่าในแต่ละวัน ผู้บริโภคนั้นผลิตข้อมูลออกมามากขึ้นเรื่อยๆ ไม่ว่าจะเป็นการเข้าเว็บเพื่ออ่านข่าว การค้นหาข้อมูล การซื้อขายของออนไลน์ การเล่น Social Network พฤติกรรมเหล่านี้ล้วนก่อให้เกิดข้อมูลใหม่ๆ ที่สามารถนำมาวิเคราะห์ได้ฮะ อยู่ที่เจ้าของธุรกิจแล้วล่ะครับว่า จะสามารถนำข้อมูลปริมาณมหาศาลหรือที่นิยมเรียกกันว่า “Big Data” เหล่านี้ มาใช้ให้เกิดประโยชน์อะไรได้บ้าง ?

Big Data คืออะไร ?

คำถามที่ตามมาก็คือ แล้วข้อมูลมันต้องมากแค่ไหนเราถึงจะเรียกมันว่า Big Data ? เค้าว่ากันว่าจะเรียก Big Data ได้ ข้อมูลจะต้องมีลักษณะตามนี้ฮะ

  • Volumn อย่างแรกเลยคือข้อมูลจะต้องเยอะครับ เช่น 1000TB ขึ้นไป
  • Velocity นอกจากเยอะแล้ว ข้อมูลจะต้องโตเร็วด้วยนะครับ อาจจะมีขนาดใหญ่ขึ้น 1TB ต่อวัน เลยทีเดียว
  • Variety อีกเรื่องคือข้อมูลนั้นจะต้องมีความหลากหลายครับ คืออาจจะมีหลาย format แล้วแต่ละ format ต้องใช้วิธีวิเคราะห์ที่แตกต่างกันด้วย อะไรทำนองนี้ฮะ

ผมเคยสงสัยว่า แล้วทำไมเราต้องมาแยกแยะด้วยว่าข้อมูลของเราเป็น Big Data แล้วหรือยัง ? คำตอบคือ เพราะ tool สำหรับ Big Data นั้น มันไม่เหมาะกับข้อมูลน้อยๆ อะครับ หากข้อมูลของเรายังไม่ถึงขั้นเรียกว่า Big Data แล้ว ผมแนะนำให้ใช้ tool ทั่วไปจะเหมาะสมกว่าฮะ พูดง่ายๆ ก็คือ Big Data มันคือข้อมูลที่มีปริมาณมากและมีความซับซ้อนสูงจนไม่เหมาะที่จะนำมาวิเคราะห์ด้วย tool ทั่วไปนั่นเองครับ

ความลำบากในการวิเคราะห์ Big Data

เรามาดูกันครับว่า จากลักษณะของ Big Data ทั้ง 3 ข้อ ข้างต้น ถ้าจะใช้วิธีวิเคราะห์ข้อมูลแบบเดิมๆ เราจะต้องเจอกับปัญหาอะไรบ้าง ?

  • ที่เก็บข้อมูล ลองคิดดูเล่นๆ นะครับว่าถ้าเราจะต้องหาที่มาเก็บข้อมูลที่มันมาวันละ 1TB เราจะต้องเตรียม HDD เอาไว้เยอะแค่ไหน ?
  • ประสิทธิภาพ แล้วต่อให้เราไปซื้อ HDD มาเพิ่ม เพื่อที่จะเก็บข้อมูลให้ได้ทั้งหมด เราก็จะเจอปัญหาเกี่ยวกับ access time ของ HDD ที่ค่อนข้างสูง ทำให้การประมวลผลใช้เวลานานมากเลยกว่าจะได้ผลลัพธ์ออกมา แล้วบางทีเราก็อยากวิเคราะห์ข้อมูลแบบ real-time ซะด้วยสิ
  • เครื่องคอมพิวเตอร์ สมมติว่าเรามีเงินมากพอที่จะใช้ SSD แทน HDD แล้วเตรียมความจุไว้มากพอที่จะเก็บข้อมูล Big Data ได้ ปัญหาต่อมาที่จะต้องเจอก็คือเราจะต้องเตรียมเครื่องคอมพิวเตอร์ที่จะเอาไว้ใช้ในการวิเคราะห์ข้อมูลเหล่านั้นครับ หากใช้แค่เครื่องเดียวมาคำนวณข้อมูลปริมาณมหาศาล กว่าจะเสร็จก็คงเป็นวันๆ ฮะ แล้วผลลัพธ์ที่เราได้มาก็จะกลายเป็นข้อมูลในอดีตไปซะแล้ว ดังนั้นเราจะต้องเตรียมเครื่องคอมพิวเตอร์เอาไว้เยอะพอสมควร เพื่อที่จะทำให้เราได้ผลลัพธ์เร็วเท่าที่เราต้องการครับ
  • ต้นทุน สุดท้ายแล้ว เราก็จะเห็นว่าเม็ดเงินที่จะต้องลงไปกับ Big Data นั้นไม่ใช่น้อยๆ เลยล่ะครับ

ปัญหาที่ว่ามานี้ รับรองว่าเราจะต้องเจอแน่ๆ ครับ ให้เราเตรียมพื้นที่จัดเก็บข้อมูลและเครื่องคอมพิวเตอร์มาให้พร้อมก่อนเลย เมื่อทุกอย่างพร้อมแล้ว เวลาใช้งานจริง ปัญหาที่จะตามมาทีหลังก็คือ

  • ความปลอดภัยของข้อมูล อย่าลืมนะครับว่าเราจะต้องคิดเผื่อเหตุการณ์ที่ข้อมูลใน SSD มันเสียด้วย การเก็บข้อมูลเอาไว้ที่เดียวนั้น ถือว่ามีความเสี่ยงสูงครับ ดังนั้นเราจะต้องมีระบบสำรองข้อมูลอัตโนมัติ แล้วการประเมินพื้นที่จัดเก็บข้อมูลนั้นก็จะต้องคิดเผื่อพื้นที่ที่จะต้องใช้ในการสำรองข้อมูลเอาไว้ด้วยนะครับ T__T
  • ประสิทธิภาพ ถึงแม้ว่าเราจะมีพื้นที่จัดเก็บข้อมูลที่ใหญ่และเร็ว และมีเครื่องคอมพิวเตอร์แรงๆ แต่เชื่อเถอะครับว่ามันไม่พอที่จะใช้วิเคราะห์ข้อมูล Big Data หรอก ถ้าเรายังใช้วิธีวิเคราะห์แบบเดิมๆ ที่เราเคยทำกับ RDBMS อยู่ หรือต่อให้ทำได้ ก็คงจะต้องใช้ต้นทุนที่สูงมากๆ เลยล่ะครับ

ถึงแม้ว่าปัญหาที่ผมว่ามาอาจจะดูเยอะ แต่จริงๆ แล้วมันมีตัวช่วยอยู่ครับ ซึ่ง tool ที่เค้านิยมใช้กันมากที่สุดตัวหนึ่งก็คือ Hadoop เรามาดูกันครับว่า เจ้า Hadoop ที่ว่านี้ มันช่วยอะไรเราได้บ้าง ?

รู้จักกับ Apache Hadoop

Apache Hadoop เป็นซอฟต์แวร์ open-source ที่สร้างขึ้นมาเพื่อเป็น framework ในการทำ distributed processing สำหรับข้อมูลขนาดใหญ่ครับ จุดเด่นข้อนึงของ Hadoop ก็คือ เค้าออกแบบมาให้ใช้กับเครื่องคอมพิวเตอร์แบบไม่ต้องแรงมากได้ด้วย การจะขยาย scale ในอนาคต ก็สามารถเพิ่มเครื่องเข้าไปได้ง่ายๆ เลย แถมยังมีระบบสำรองข้อมูลให้โดยอัตโนมัติอีก เรียกว่าถ้าใครกำลังมองหาตัวช่วยในการจัดการกับ Big Data แล้วล่ะก็ Hadoop นี่ถือเป็นทางเลือกที่น่าสนใจเอามากๆ เลยล่ะครับ

[caption id=”attachment_9908" align=”aligncenter” width=”640"]

hadoop

Hadoop เป็น framework สำหรับการประมวลผลข้อมูลขนาดใหญ่[/caption]

องค์ประกอบของ Hadoop

ด้วยความซับซ้อนของ Big Data จึงทำให้ Hadoop แบ่งออกเป็นโมดูลย่อยๆ ครับ ในบทความนี้ ผมจะขอพูดถึงแต่โมดูลหลักๆ แล้วกันนะฮะ

  • Hadoop Distributed File System (HDFS) โมดูลนี้จะเอาไว้ใช้จัดเก็บข้อมูลที่จะนำมาวิเคราะห์ให้อยู่ในรูปที่สามารถเข้าถึงได้อย่างรวดเร็ว รวมไปถึงการสำรองข้อมูลดังกล่าวให้โดยอัตโนมัติครับ
  • MapReduce ส่วนโมดูลนี้จะเอาไว้ใช้เกี่ยวกับการประมวลผลข้อมูลปริมาณมหาศาลที่เราได้เก็บเอาไว้ครับ

พูดง่ายๆ ก็คือ Hadoop มันจะแบ่งออกเป็น 2 ส่วน นั่นก็คือ ส่วนที่เอาไว้เก็บกับส่วนที่เอาไว้คิดนั่นเองฮะ เพื่อให้เห็นภาพมากขึ้น ผมจะขอลงรายละเอียดเพิ่มเติมอีกนิดนึงแล้วกันนะครับ

เก็บข้อมูล Big Data ไว้ใน HDFS

สมมติว่าเรามี Cluster ที่ได้ติดตั้ง Hadoop เอาไว้จนพร้อมใช้งาน แล้วเราต้องการจะใช้ Hadoop ประมวลผลข้อมูลที่อยู่ในไฟล์ CSV ไฟล์นึง เราจะมีวิธีการอย่างไร?

ปล่อยให้ HDFS จัดการเรื่องไฟล์

วิธีการก็คือ ให้เราอัพโหลดไฟล์ CSV นี้ เข้าไปเก็บไว้ใน HDFS ก่อน แล้วปล่อยให้เจ้า HDFS ทำหน้าที่ของมัน 2 อย่างนี้ฮะ

  • แบ่งไฟล์ออกเป็น Block ย่อยๆ สมมติว่าไฟล์ CSV นั้น มีขนาด 1TB การประมวลผลไฟล์ใหญ่ขนาดนี้ รับรองว่าช้าแน่ๆ ฮะ HDFS เลยจะแบ่งไฟล์นี้ออกเป็นไฟล์ย่อยๆ ที่เรียกว่า “Block” แล้วนำไปเก็บกระจายตาม Node ต่างๆ ใน Cluster ของเรา เพียงเท่านี้ Node ต่างๆ ก็จะสามารถช่วยกันประมวลผลไฟล์ CSV นี้แบบขนานกันได้แล้วล่ะครับ
  • สำรอง Block เหล่านั้น เอาไว้ที่ Node อื่นๆ นอกจากนั้น HDFS ยังช่วย replicate แต่ละ Block เอาไว้ที่ Node อื่นๆ ด้วยนะครับ(default คือ replicate ไป 3 Node) คือสมมติ Block A ของ Node 1 พัง เรามั่นใจได้เลยว่า Block A จะยังมีสำรองอยู่ใน Node อื่นๆ อย่างแน่นอนฮะ

รู้จักกับ Node ใน Hadoop

Node นั้นหมายถึงเครื่องคอมพิวเตอร์ที่ประกอบไปด้วย CPU, RAM แล้วก็ Disk ครับ ซึ่ง Node ต่างๆ ใน Hadoop จะแบ่งออกเป็น 2 แบบด้วยกัน

  • Data Node เป็น Node ที่ทำหน้าที่เก็บ Block ของไฟล์เอาไว้ และรับผิดชอบในการประมวลผล Block นั้นๆ ครับ แต่ตัว Data Node เอง มันจะไม่รู้นะครับว่า Block ที่ตัวเองเก็บอยู่นั้น เป็นของไฟล์ไหน
  • Name Node เป็น Node ที่ทำหน้าที่รวบรวมผลของการประมวลผล Block ต่างๆ จาก Data Node ทั้งหลายครับ ซึ่งแน่นอนว่าเจ้า Name Node นี้ มันจะต้องรู้ทุกอย่างเกี่ยวกับไฟล์ต้นฉบับ ไม่ว่าจะเป็นชื่อไฟล์, ขนาด รวมไปถึงที่อยู่ของแต่ละ Block ที่ถูกกระจายออกไปตาม Data Node ต่างๆ หรือพูดง่ายๆ Name Node มันก็คือ Master ส่วน Data Node ก็คือ Slave นั่นเองครับ

และอย่างที่บอกไปนะครับว่า ค่า defalut ของการ replicate แต่ละ Block นั้นจะอยู่ที่ 3 Node นั่นหมายความว่า การจะใช้ Hadoop ได้อย่างมีประสิทธิภาพนั้น เราอาจจะมีอย่างน้อย 5 เครื่อง ครับ คือ Data Node 3 เครื่อง Name Node 1 เครื่อง แล้วก็ Name Node ตัว secondary อีก 1 เครื่อง ส่วน spec นั้น ให้อัด Disk ให้ Data Node เยอะๆ ครับ แล้วก็อัด RAM ให้ Name Node เยอะๆ เพราะข้อมูลที่ Name Node ดูแลนั้น ส่วนใหญ่จะเก็บอยู่ใน RAM เพื่อป้องกันไม่ให้เกิดปัญหา bottle neck นั่นเองฮะ

ประมวลผลข้อมูลด้วย MapReduce

เมื่อเอาข้อมูลมาเก็บลงใน HDFS เรียบร้อยแล้ว ทีนี้เรามาดูวิธีการนำข้อมูลเหล่านั้นมาประมวลผลฮะ สมติว่าข้อมูลในไฟล์ CSV นั้น เป็นข้อมูลของคนไทยทุกคน แล้วเราจะหาว่าคนที่อายุเยอะที่สุดในไทย มีอายุเป็นเท่าไร เราจะออกแบบการคำนวณอย่างไรดี ? Hadoop เค้าแนะนำให้ทำเป็นขั้นเป็นตอนตามนี้ฮะ

  • Map เนื่องจาก record มันมีขนาดหลายล้าน อยู่ดีๆ เราไปหาเลยว่าคนไหนอายุเยอะสุดคงไม่ได้ฮะ วิธีที่ดีกว่าคือให้เราแบ่งข้อมูลออกเป็นโซนย่อยๆ ก่อน แล้วจึงหาคำตอบที่ต้องการภายในโซนนั้นๆ ไล่ไปเรื่อยๆ ทีละโซนๆ ฮะ อย่างในที่นี้ เราอาจจะหาก่อนว่าใครอายุเยอะที่สุดในแต่ละเขต/อำเภอก็ได้ครับ
  • Shuffle พอเรารู้แล้วว่าใครอายุเยอะสุดในแต่ละอำเภอ ก็ให้เรารวบรวมข้อมูลเหล่านั้นมา group by จังหวัด แล้วเรียงลำดับอายุจากมากไปน้อยฮะ ทีนี้เราก็พอจะรู้คร่าวๆ แล้วว่าจังหวัดไหนมีคนอายุเยอะๆ อยู่บ้าง
  • Combine หลังจากที่เราเรียงลำดับข้อมูลจากมากไปน้อยแล้ว ให้เราตัดข้อมูลที่ไม่เข้าข่ายออกให้หมดฮะ สมมติว่าข้อมูลของคนอายุสูงสุดของแต่ละเขตในกรุงเทพฯ เรียงลำดับจากมากไปน้อยเป็น 100, 95, 93, 87, … , 80 ให้เราเหลือไว้แต่คนที่อายุสูงสุดซึ่งก็คือ 100 ครับ หรือพูดง่ายๆ ก็คือ ให้เราหาผู้ชนะของแต่ละจังหวัดนั่นเองครับ
  • Reduce มาถึงตรงนี้ เราจะได้แชมป์ของแต่ละจังหวัดมาแล้ว ถูกมั้ยครับ ? ขั้นตอนสุดท้ายก็คือการหาว่าในบรรดาแชมป์เหล่านั้น ใครกันที่อายุเยอะที่สุด จะเห็นว่าขั้นตอนนี้ไม่ค่อยยากแล้ว เพราะเราได้ปรับแต่งข้อมูลให้อยู่ในรูปที่คำนวณง่ายเอามากๆ แล้วนั่นเองฮะ

ผมมั่นใจว่าคำถามในหัวของทุกคนในตอนนี้ก็คือ แล้วไอ้ 4 ขั้นตอนที่ว่ามานี้ เราจะต้องไปทำที่ไหน อย่างไร คำตอบคือเราจะต้องเขียนโปรแกรมขึ้นมาฮะ ^0^ ซึ่งภาษาที่เค้าใช้กันก็จะเป็นพวก Java, C++, Python หรือ Scala แต่ในบทความนี้ ผมจะขอยังไม่ลงรายละเอียดนะครับ ให้เราไปอ่านกันเอาเองที่เว็บหลักในหัวข้อ MapReduce Tutorial แต่ถ้าจะให้สรุปแบบสั้นๆ เลยก็คือ สมมติเราเลือกเขียน MapReduce ด้วย Java พอเขียนเสร็จ เราก็แค่อัพโหลดไฟล์ JAR ของเราขึ้น HDFS แล้วก็รันโปรแกรมที่เราเขียน โดยระบุ input ให้เป็นไฟล์ CSV ของเรา แล้วก็ระบุ output เป็นที่ๆ เราต้องการจะให้ Hadoop เก็บผลลัพธ์จากการรันเอาไว้ อะไรทำนองนี้ครับ

Tool อื่นๆ ที่ควรรู้จัก

ตอนนี้ผมว่าเราคงพอจะเห็นภาพกันคร่าวๆ แล้วล่ะครับว่า Hadoop มันช่วยอะไรเราได้บ้าง ทีนี้เรามาดู tool ตัวอื่นๆ ที่เค้านิยมใช้ร่วมกับ Hadoop กันครับว่ามันมีอะไรบ้าง

Apache Pig

หากเราไม่ถนัดทางด้านการเขียนโปรแกรมเท่าไร หรือบางทีเราแค่อยากจะวิเคราะห์อะไรง่ายๆ ไม่อยากมานั่งเสียเวลาเขียนโปรแกรม Apache Pig ช่วยเราได้ฮะ คือมันจะคล้ายๆ กับการทำ MapReduce เลย เพียงแต่ Pig มันจะมีฟีเจอร์ที่เรียกว่า Pig Latin ที่จะทำให้เราสามารถ query ข้อมูลด้วยคำสั่งง่ายๆ ได้ด้วย อย่างการวิเคราะห์หาคนอายุเยอะสุดก่อนหน้านี้ เราก็จะใช้คำสั่ง LOAD ข้อมูลจากไฟล์ CSV มาก่อน จากนั้นก็ GROUP คนที่อายุสูงสุดตามจังหวัด แล้วก็ FOREACH จังหวัดทั้งหมด เพื่อหาคำตอบว่าคนไหนที่อายุเยอะที่สุด สุดท้ายก็ STORE ผลลัพธ์ออกมาเก็บเป็นไฟล์ อะไรทำนองนี้ฮะ ลองดูตัวอย่างคำสั่งของ Pig ตามด้านล่างนี้

A = LOAD ‘myfile.txt’ USING PigStorage() AS (t, u, v);
B = GROUP A BY t;
C = FOREACH B GENERATE group, COUNT(A.t) as mycount;
D = ORDER C BY mycount;
STORE D INTO ‘mysortedcount’ USING PigStorage();

จะเห็นว่าโค้ด Pig Latin นี่มันอ่านรู้เรื่องเลยนะครับ ส่วนวิธีรันก็ง่ายๆ ฮะ ให้เราเซฟคำสั่งเหล่านี้เป็นไฟล์ .pig แล้วอัพโหลดขึ้น HDFS จากนั้นก็รันผ่าน command-line ได้เลย

Apache Hive

ส่วน Apache Hive นี่ก็จะคล้ายๆ กันเลยฮะ เพียงแต่เราจะเปลี่ยนจากการเขียน Pig Latin มาเป็นการใช้ HiveQL ซึ่งมี syntax ใกล้เคียงกับ SQL ที่เราถนัดแทน ลองดูตัวอย่าง HiveQL ด้านล่างนี้ฮะ

SELECT age FROM people
WHERE province = 'bangkok'
GROUP BY city
ORDER BY age DESC

รู้สึกว่าชีวิตสบายขึ้นเยอะเลยใช่มั้ยล่ะครับ ผมว่ามันเหมาะมากเลย หากเราอยากจะลอง query อะไรง่ายๆ ไว้เราไปเจอเคสที่การคำนวณมันซับซ้อนเอามากๆ เราค่อยเขียน MapReduce เอาก็ได้ครับ

Apache Spark

Apache Spark เป็น tool สำหรับทำ data processing ที่สร้างบน Hadoop อีกทีครับ จุดขายของ Spark นั้นจะอยู่ที่ความเร็วในการประมวลผล ซึ่งเค้าเคลมว่าสามารถเร็วกว่า MapReduce ของ Hadoop ได้ถึง 10–100 เท่าเลยทีเดียว แถมยังมาพร้อมกับ Spark SQL ที่จะช่วยให้เราสามารถเขียน query ได้ง่ายๆ เหมือนกับการใช้ HiveQL อีกด้วยฮะ

[caption id=”attachment_9911" align=”aligncenter” width=”640"]

apache spark

Spark เคลมว่าเร็วกว่า MapReduce 10–100 เท่า[/caption]

ลองใช้งานจริงด้วย Cloud Dataproc

มาถึงตรงนี้ เราจะเห็นว่า Big Data มันไม่ได้เข้าใจยากอย่างที่คิดเลยใช่มั้ยละครับ แต่ถ้าจะให้เห็นภาพมากขึ้น ผมว่าเราจะต้องลองเล่นของจริงดูเลยฮะ แล้วในปัจจุบัน การหา Hadoop มาเล่นก็ไม่ได้ลำบากเหมือนแต่ก่อนแล้ว เพราะเมื่อไม่นานมานี้ Google เค้าได้เปิดตัว Cloud Dataproc ซึ่งเป็นบริการที่นำ Hadoop และ Spark มาติดตั้งบนระบบ Cloud ของ Google แถมยังปรับแต่งระบบมาให้เราใช้งานได้ง่ายๆ แล้วค่าบริการก็ถือว่าไม่แพงเท่าไรด้วยครับ

หากข้อมูลที่ต้องการจะวิเคราะห์อยู่บนระบบ Cloud ของ Google อยู่แล้ว การใช้ Cloud Dataproc ก็ยิ่งสะดวกเข้าไปใหญ่ครับ ให้เราเข้า Google Cloud Platform แล้วไปที่ Big Data แล้วเลือก Cloud Dataproc เราก็จะเจอเมนูย่อย 2 อัน สำหรับสร้าง Cluster และ Job ที่เราอยากจะให้รันบน Cluster ของเราครับ ให้เราเลือก Clusters แล้ว Create a cluster ได้เลย

[caption id=”attachment_9898" align=”aligncenter” width=”640"]

cloud dataproc - create cluster

สร้าง Cluster ที่จะใช้กับ Cloud Dataproc[/caption]

[caption id=”attachment_9900" align=”aligncenter” width=”638"]

setup a cluster

ตั้งชื่อ Cluster พร้อมระบุโซน และจำนวน Node ที่ต้องการจะใช้[/caption]

เมื่อได้ Cluster มาแล้ว เราก็จะมาสร้าง Job กันต่อฮะ ข่าวดีก็คือ Cloud Dataproc รองรับทั้ง Pig, Hive และ Spark SQL เลย หรือใครอยากจะเขียนโปรแกรมเองก็สามารถระบุไฟล์ที่ต้องการจะรันได้เช่นกันครับ

[caption id=”attachment_9903" align=”aligncenter” width=”426"]

cloud dataproc job type

Cloud Dataproc รองรับทั้ง MapReduce ของ Hadoop เอง รวมไปถึง Pig, Hive และ Spark SQL[/caption]

[caption id=”attachment_9904" align=”aligncenter” width=”424"]

hive query

สมมติเราเลือกใช้ Hive เราก็สามารถใส่ Query ที่ต้องการจะรันลงไปได้ทันที[/caption]

หนทางยังอีกยาวไกล…

ขอย้ำอีกทีนะครับว่า บทความนี้มันเป็นแค่การพูดถึงภาพรวมเท่านั้น เพราะผมตั้งใจจะให้เพื่อนๆ เข้าใจ Big Data ได้ง่ายๆ และใช้เวลาน้อยที่สุดครับ จริงๆ แล้ว หลายๆ หัวข้อของบทความนี้ สามารถแยกออกมาเป็นอีกบทความ หรืออาจเขียนเป็นหนังสือเลยก็ยังได้ฮะ เพราะเนื้อหามันยาวเอามากๆ แต่ผมก็ไม่รู้ว่าจะไปอ่านหนังสือเหล่านั้น แล้วเอามาแปลลงบทความนี้ไปทำไม สู้ให้เพื่อนๆ ตัดสินใจเอาเองดีกว่า ว่าสนใจเรื่องอะไร จะได้ไปตามอ่านจากเว็บหลักเอาเองได้ถูกครับ ผมก็หวังว่าบทความนี้จะมีประโยชน์กับเพื่อนๆ ที่กำลังจะเริ่มศึกษาเรื่อง Big Data ไม่มากก็น้อยนะฮะ แล้วพบกันใหม่บทความหน้าครับ ^__^

--

--