Hadoop คืออะไร เครื่องมือ Big Data ที่ทั่วโลกใช้ มีส่วนประกอบอะไรบ้าง

hadoop hdfs mapreduce yarn

เล่าย้อนไปยังยุคที่อินเตอร์เน็ตยังไม่เฟื่องฟูขนาดนี้ ข้อมูลสมัยก่อนจะมีการจัดเก็บแบบง่ายๆ เป็นตารางๆ และการเก็บข้อมูลนั้นก็สามารถใช้แค่ที่หน่วยเก็บข้อมูล (storage) และหน่วยประมวลผล (processor) อันเดียวได้ ขณะเดียวกันเมื่ออินเตอร์เน็ตบูมขึ้น ทุกคนสามารถส่งข้อความ รูปภาพ และวิดีโอ ได้อย่างอิสระ ข้อมูลหลายรูปแบบได้เกิดขึ้น การจัดเก็บและการประมวลผลข้อมูลก็ได้เปลี่ยนไปตลอดกาล

ในวันนี้ แอดเหมียวจะพาทุกคนมารู้จักกับ Hadoop ระบบจัดเก็บและประมวลผล Big Data ที่เก่าแก่ และถูกใช้ในบริษัทต่าง ๆ มากมายจนถึงยุคปัจจุบัน มารู้จัก Hadoop และผองเพื่อนกันค่ะ

Hadoop คืออะไร

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

ดังนั้นจึงมีคนคิดคอนเซ็ปในการนำเครื่องคอมพิวเตอร์ทั่วไปหลายเครื่อง ซึ่งประกอบด้วยหน่วยเก็บข้อมูลและหน่วยประมวลผลหลายอันมารวมพลังช่วยกันทำงาน เพื่อแก้ไขปัญหาการจัดการข้อมูลขนาดใหญ่ เราเรียกคอนเซ็ปนี้ว่า Hadoop ซึ่งประกอบไปด้วย 3 ส่วนหลัก (components) คือ HDFS, MapReduce และ YARN ตามรูปด้านล่าง

ส่วนประกอบ HADOOP
ส่วนประกอบ HADOOP

เราลองมาดูกันต่อว่าทั้ง 3 ส่วน แตกต่างกันอย่างไร

1. Hadoop Distributed File System (HDFS) คืออะไร

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

สมมติว่าเรามีข้อมูล 600 MB บนระบบปฏิบัติการ HDFS จะแบ่งข้อมูลออกเป็นก้อนๆ เรียก บล็อก (Block) ขนาด 128 MB เท่าๆกัน 4 บล็อก แล้วเก็บ 88 MB ที่เหลือไว้ในบล็อกที่ 5 ตามรูปด้านล่าง

HDFS
วิธีการทำงานของ HDFS

สาเหตุที่แบ่งข้อมูลออกเป็น 128 MB นั่นก็เพราะว่า เป็นขนาดที่กำหนดไว้ของระบบปฏิบัติการ HDFS แต่เราก็สามารถเข้าไปเปลี่ยน ขนาดได้ถ้าต้องการ 

HDFS นั้นยังประกอบไปด้วย 2 ส่วนย่อย 

  • NameNode (Master Node) คือ เป็นส่วนเก็บ Metadata หรือข้อมูลที่อธิบายรายละเอียดเกี่ยวกับข้อมูล อย่างเช่น จำนวนของบล็อก เครื่องที่จัดเก็บ ข้อมูลอันไหนถูกเก็บไว้ที่ไหน เป็นต้น 
  • DataNode (Slave Node) คือ เป็นส่วนที่เก็บข้อมูลจริงๆของ HDFS  ทำหน้าที่อ่านและเขียนตามคำสั่ง นอกจากนี้ยังทำหน้าที่ทำสำเนาข้อมูล (Replica) ของแต่ละบล็อกเก็บไว้ในอีก DataNode เพื่อป้องกันการสูญหายของข้อมูลอีกด้วย ทำให้เมื่อเกิดเหตูฉุกเฉินขึ้นมา ข้อมูลก็ยังอยู่กับเราครบ เรียกสถานการณ์แบบนี้ว่า มี fault-tolerant

เมื่อเรามีข้อมูลที่เก็บไว้ในหน่วยเก็บข้อมูล หรือ HDFS แล้ว ก็ถึงเวลาประมวลผลข้อมูลในส่วนถัดไป

2. MapReduce คืออะไร

ส่วนประกอบที่สอง เป็นส่วนที่ใช้ในการสั่งการประมวลผลข้อมูลขนาดใหญ่ ซึ่งทำได้หลากหลายโครงสร้าง ทั้งข้อมูลที่มีโครงสร้างชัดเจน (Structured Data) ไปจนถึง ข้อมูลที่ไม่มีโครงสร้าง (Unstructured Data) MapReduce ทำการประมวลผลแบบขนานไปพร้อมๆกันทำให้สามารถประมวลผล วิเคราะห์ข้อมูลขนาดใหญ่โดยใช้คอมพิวเตอร์ที่อยู่ในระบบ (Cluster) เดียวกันได้ และยังมีความเร็ว (Speed) ความน่าเชื่อถือ (Reliability) ที่เพิ่มขึ้น

 MapReduce แบ่งการทำงานเป็น 3 ส่วนหลัก นั่นก็คือ

  • Mapping คือเป็นส่วนแรกในกระบวนการ โดยจะทำการ แบ่ง (splitting) และ ทำการกำหนดข้อมูล (mapping) โดยเริ่มจากการที่เรามีข้อมูลชุดใหญ่ชุดหนึ่ง แล้วนำมาแบ่งเป็นหลายส่วน เรียกว่า splitting จากนั้นการแตกข้อมูลให้อยู่ในรูปแบบ key-value เรียกการ mapping
  • Shuffling คือส่วนหลังจากทำการ Mapping ให้ข้อมูลออกมาในรูปแบบ key-value แล้ว โดยส่วนนี้จะทำการจัดเรียง (sorting) และรวบรวม (merging) ข้อมูล จากการเรียงและรวมข้อมูลที่มี key เหมือนกันให้อยู่ด้วยกัน ผลลัพธ์จากขั้นนี้ก็ยังอยู่ในรูปแบบ key-value เหมือนเดิม
  • Reducing คือส่วนที่รวมผลลัพธ์ของข้อมูลที่ออกมาจากการ Map และ Shuffle เป็นการสรุปผลแต่ละกลุ่ม key-value ให้เหลือค่าเดียว

เราลองมาดูในรูปข้างล่างเพื่อทำความเข้าใจเป็นขั้นเป็นตอนกันอีกที

MapReduce
MapReduce [ขอขอบคุณรูปภาพจาก section.io]

จากรูปจะเห็นได้ว่าเราใช้ MapReduce ในการนับจำนวนคำทั้งหมดของคำศัพท์แต่ละคำในข้อมูล

  • เริ่มจากการแบ่งข้อมูลออกให้อยู่ในรูปแบบ key-value อย่าง (Deer, 1)
  • ทำการจัดเรียง (shuffle) โดยอาศัย key ที่เหมือนๆกัน เช่น ในแต่ละกลุ่ม Deer (1, 1)
  • ทำการรวมผลลัพธ์ในช่วง reduce โดยได้จำนวนคำออกมาเป็น Deer, 2

3. YARN  คืออะไร

ส่วนที่สาม YARN (Yet Another Resource Negotiator) เป็นส่วนสำคัญมากที่สุดส่วนหนึ่งใน ระบบ Hadoop เพราะทำหน้าที่จัดตารางเวลาให้งาน (Task) และบริหารจัดการทรัพยากร (Resource) ต่างๆ เช่น หน่วยเก็บข้อมูล และหน่วยประมวลผลบนระบบ ให้ทำงานได้ลื่นไหล เป็นเหมือนผู้คุมงานที่คอยจัดสรรงาน และคนงาน

YARN มีส่วนประกอบหลักๆตามด้านล่างนี้

  • Client: คนที่ส่งงานที่ต้องทำออกไป
  • Resource Manager: ทำการจัดการทรัพยากรที่มี และจำนวน Node ที่ยังสามารถทำงานได้
  • Node Manager: คอยติดตามควบคุมงานของ Container รวมถึงแบ่งทรัพยากรในการคำนวณ ใน Container
  • Container: เป็น package ที่มีทรัพยากรในการคำนวณอย่าง RAM, CPU และ Network
  • Application Manager: ทำหน้าที่รันงานที่สั่งมา และคุยกับ Resource Manager เรื่องทรัพยากรในการรันงาน

เรามาเล่ากระบวนการให้ฟังสั้นๆกัน

YARN
YARN [ขอขอบคุณรูปภาพจาก COSO IT]

เมื่อ Client ต้องการทำงานอย่างหนึ่ง เช่น MapReduce ก็จะสั่งงานไปที่ Resource Manager หลังจาก Resource Manager เช็คความพร้อมแล้ว ก็จะติดต่อให้ Node Manager สร้าง Container และ รัน Application Manager ในนั้น Application Manager ทำการสั่งการรันงานโดยตรวจสอบ DataNode ใน HDFS แล้วแบ่งงานไปตาม Node จะมีการอัพเดทอยู่เรื่อยๆว่าทำงานสำเร็จหรือไม่ ถ้าล้มเหลว Application Manager ก็จะเปลี่ยน Container แล้วลองรันงานอีกครั้ง

Hadoop Ecosystem

นอกจาก 3 ส่วนประกอบหลักแล้ว Hadoop ยังมีส่วนประกอบอื่นๆอีกมากมายใน Ecosystem ทั้ง kafka (โปรแกรมในการจัดคิว), Apache Spark (ใช้งานได้ดีกับ Big Data), Cassandra (Database แบบ NoSQL), Hive (เครื่องมือในการดึงข้อมูลจาก Hadoop ผ่านทาง SQL) และ Pig (คล้ายๆกับ Hive ที่ทำให้ประมวลผลโดยไม่ต้องเขียน MapReduce แต่ใช้ภาษา Script) เป็นต้น

Hadoop Ecosystem
Hadoop Ecosystem

มาถึงตรงนี้เพื่อนๆน่าจะมองเห็นภาพของ Apache Hadoop กันบ้างแล้ว มาดูสรุปประโยชน์กันค่ะ

ประโยชน์ของ Hadoop MapReduce

  • ความเร็ว (Speed): สามารถประมวลผลข้อมูลทั้งแบบมีโครงสร้างและไม่มีโครงสร้างได้ภายในเวลาอันสั้น
  • ทนทานต่อความเสียหาย (Fault-tolerance): สามารถทำงานต่อได้แม้จะเกิดความขัดข้องขึ้น
  • ข้อมูลพร้อมใช้งานตลอดเวลา (Data Availability): มีข้อมูลที่ทำสำเนาและกระจายไปยัง Node อื่นๆ ทำให้มั่นใจได้ว่าข้อมูลจะไม่หายไปไหน
  • ประมวลผลแบบขนาน (Parallel Processing): ประมวลผลข้อมูลแบบขนานกับไปกับงานอื่นๆได้ในชุดเดียวกัน ทำให้ทำงานได้ไวขึ้น

สรุป Hadoop

ในบทความข้างต้นนี้เ เราได้เห็นภาพรวมว่า Hadoop เป็น framework หนึ่งที่เข้ามาช่วยเราจัดการเก็บและประมวลผลข้อมูล อย่าง Big Data ประกอบไปด้วย ส่วนหลักคือ HDFS, MapReduce และ YARN ซึ่งทำให้ที่เก็บ ประมวลผล และควบคุม นอกจากนี้ใน ยังมีส่วนอื่นๆอีกมากมายใน Ecosystem เช่น Apache Spark เทคโนโลยีการประมวลผลข้อมูลอีกตัวหนึ่ง

สำหรับใครที่อยากรู้เพิ่มเติมว่าข้อแตกต่างระหว่าง Hadoop และ เทคโนโลยีอย่าง Apache Spark คืออะไร สามารถอ่านเนื้อหาสั้นๆเกี่ยวกับ Apache Spark เพิ่มเติมได้ที่บทความ Apache Spark คืออะไร

ถ้าเพื่อนๆคิดว่าบทความนี้มีประโยชน์ อยากฝากให้ช่วยแชร์ให้เพื่อน ๆ หน่อยนะคะ และถ้าอยากติดตามบทความดี ๆ ด้าน Data กันบน Facebook หรืออยากมาพูดคุย ติชมกัน เชิญได้ที่ Facebook Page: DataTH – Data Science ชิลชิล เลยนะค้าา

แล้วพบกันใหม่บทความหน้าค่ะ

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

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

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save