เบื้องหลังการย้ายช้างยักษ์ (Hadoop) ของ Facebook

by lch
3 August 2011 - 04:06

จากที่ทราบกันไปแล้วว่า Facebook สร้างศูนย์ข้อมูลขนาดยักษ์ของตัวเองขึ้นมาเมื่อปีที่แล้ว และสร้างเสร็จแล้วในช่วงไตรมาสแรกของปีนี้

ในช่วงเดือนที่ผ่านมา (มิ.ย. 2554) Facebook ก็ได้ฤกษ์ถ่ายโอนข้อมูลขนาดมหึมาของตนเองบนเฟรมเวิร์ค Hadoop จากระบบเดิมสู่ระบบใหม่ และเปิดใช้งานระบบจากศูนย์ข้อมูลใหม่อย่างเป็นทางการ

หมายเหตุ: เฟรมเวิร์ค Hadoop เป็นระบบการจัดการข้อมูลขนาดใหญ่แบบกระจายระบบหนึ่งที่ Facebook เลือกใช้ ซึ่งมีระบบนิเวศต่าง ๆ ให้พร้อมสรรพ เช่น ระบบโครงสร้างไฟล์ HDFS, ระบบฐานข้อมูล Hbase, ระบบวิเคราะห์และประมวลผลข้อมูล Hive, และโครงสร้างภาษาโปรแกรม Hadoop MapReduce เป็นต้น

งานนี้ก็เช่นเคยครับ Facebook ก็เขียนมาแบ่งปันเบื้องหลังการทำงานทาง Facebook Engineering ซึ่งผมก็ขอสรุปสิ่งที่คิดว่าน่าสนใจมาดังนี้ครับ

ข้อมูลพื้นฐานที่น่าสนใจ

  • ในช่วงสองปีที่ผ่านมา การเพิ่มขึ้นของข้อมูลของ Facebook เป็นไปแบบก้าวกระโดด
  • ในปี 2553 Facebook มีคลัสเตอร์ Hadoop ที่ใหญ่ที่สุดในโลก โดยมีข้อมูลกว่า 20 PB และ ณ เดือนมีนาคม 2554 ขนาดของคลัสเตอร์ Hadoop ของ Facebook ทยานขึ้นแตะ 30 PB ข้อมูลขนาดมหาศาลเช่นนี้ ทำให้ Facebook ต้องสร้างศูนย์ข้อมูลใหม่ที่ใหญ่ขึ้น
  • การสลับไปใช้ศูนย์ข้อมูลใหม่ในครั้งนี้ ความท้าทายหลักอยู่ที่การสำเนาข้อมูล และจังหวะวินาทีที่สลับศูนย์ข้อมูลจากเก่าไปใหม่ การสำเนาข้อมูลนั้นยากเพราะข้อมูลมีขนาดใหญ่ที่สุดที่ Facebook เคยทำมา มีไฟล์ ไดเร็คทอรี และ Hive object มากมายเป็นล้านชิ้น ทีมงาน Facebook ต้องเขียนระบบการสำเนาข้อมูลขึ้นมาใหม่ที่เป็น multi-threading เพื่อให้อัตราการสำเนาข้อมูลสูงขึ้นให้ทันกับกำหนดเวลาที่ตั้งไว้
  • สำหรับการสลับศูนย์ข้อมูลนั้น ปัญหาอยู่ที่ระบบย่อยต่าง ๆ จำนวนมากที่ทำงานร่วมกับ MapReduce cluster โดยเมื่อถึงเวลาสลับศูนย์ข้อมูลจริง ๆ ระบบย่อยทุกระบบจะต้องถูกปิดลงทั้งหมด เปลี่ยน DNS ให้ชี้ไปที่เครื่องใหม่ และรีสตาร์ทระบบย่อยทั้งหมดกลับขึ้นมาใหม่ ก็ลองนึกภาพดูครับว่าถ้ารีสตาร์ทแล้วมันกลับมาไม่เหมือนเดิม จะโกลาหลกันขนาดไหนครับ

ทางเลือกในการย้ายข้อมูล

Facebook คิดทางเลือกในการย้ายข้อมูลจากศูนย์ข้อมูลเก่าไปศูนย์ใหม่อยู่สองทางได้แก่

  • ยกเครื่องคอมพิวเตอร์จากศูนย์ข้อมูลเดิมไปยังศูนย์ใหม่ วิธีนี้ต้องใช้เวลาในการย้ายเครื่องและอุปกรณ์ทั้งหมดประมาณ 2-3 วัน ซึ่ง Facebook ประเมินแล้วว่า "นานเกินไป"
  • สำเนาข้อมูลจากเครื่องเดิมทั้งหมดไปยังเครื่องใหม่ สำหรับวิธีนี้ ความยากคือจะต้องสำเนาข้อมูลบนเครื่องใหม่ให้อัพเดตที่สุด เพราะข้อมูลบนเครื่องเก่าจะอัพเดตเรื่อย ๆ จากผู้ใช้ทั่วโลก เมื่อถึงวินาทีที่สลับระบบทั้งหมดจากเก่าไปใหม่ ทุก ๆ อย่างจะต้องราบรื่นและกระทบกับผู้ใช้น้อยที่สุด เนื่องจากวิธีนี้ใช้จังหวะเวลาในการสลับศูนย์ข้อมูลน้อยมาก Facebook จึงเลือกวิธีนี้

การสำเนาข้อมูล

เท่าที่อ่านดู Facebook แบ่งข้อมูลตนเองออกเป็นสองชนิดหลักคือ ข้อมูลที่เก่าและไม่ค่อยมีการอัพเดต กับข้อมูลใหม่ที่ยังมีความเคลื่อนไหวในการอัพเดตอยู่ โดยทีมงาน Facebook เขียนโปรแกรมสำหรับคัดลอกข้อมูลสองส่วนนี้คนละตัว แยกต่างหากกัน

ดังนั้น การสำเนาข้อมูลจึงถูกแบ่งเป็นขั้นตอนย่อยสองขั้นตอน

ขั้นตอนแรกเป็นการคัดลอกข้อมูลชนิดแรก ในขั้นตอนนี้ Facebook ใช้ DistCp ซึ่งเป็นโปรแกรมสำเนาข้อมูลแบบขนาน (เป็น MapRedure job) ที่ Hadoop มีมาให้ ทั้งนี้ทีมงานได้เปลี่ยนแปลง DistCp หลาย ๆ ส่วนให้รองรับและเหมาะสมกับชนิดข้อมูลเฉพาะบางอย่างที่ Facebook ได้ออกแบบไว้อีกด้วย

ขั้นตอนที่สองเป็นการสำเนาข้อมูลชนิดที่สองที่ยังมีความเคลื่อนไหวอยู่ ในขั้นตอนนี้ทีมงานสร้างโปรแกรมขึ้นมาเองอีกตัวที่เป็นปลั๊กอินเข้ากับ Hive ซึ่งจะบันทึกการเปลี่ยนแปลงต่าง ๆ ของไฟล์ลง log file จากนั้นระบบก็จะดึง log file เหล่านั้นขึ้นมาอ่านเป็นระยะ ๆ และคัดลอกข้อมูลเฉพาะที่เกิดการเปลี่ยนแปลงไปยังระบบใหม่ โดยข้อมูลในศูนย์ข้อมูลใหม่จะมีข้อมูลที่ล่าช้ากว่าศูนย์ข้อมูลเก่าอยู่เพียงไม่กี่ชั่วโมงเท่านั้น

วินาทีสลับศูนย์ข้อมูล

เมื่อระบบสำเนาข้อมูลทำงานได้เสถียร และระบบต่าง ๆ ของการสลับศูนย์ข้อมูลถูกสร้างเสร็จ ก็ถึงเวลาที่จะสลับศูนย์ข้อมูล ในการนี้ Facebook ตั้งวอร์รูมขึ้นมาโดยเฉพาะ

การสลับศูนย์ข้อมูลเริ่มจากการสั่งปิดการทำงานของ Job Tracker และระบบย่อยต่าง ๆ ทั้งหมด ซึ่งก็ทำให้ระบบหยุดสร้างไฟล์ใหม่ จากนั้นระบบก็สำเนาข้อมูลที่เหลือ และทำให้ข้อมูลในศูนย์ข้อมูลทั้งสองสำเนาเหมือนกัน จากนั้นทีมงานก็เปลี่ยนค่าใน DNS เป็นผลให้ Hadoop job ทั้งหลายชี้และพร้อมที่จะไปทำงานที่เครื่องใหม่

สิ่งสุดท้ายที่ทีมงานทำก็คือรีสตาร์ท Job Tracker และระบบย่อยต่าง ๆ ให้กลับคืนชีพมา ซึ่งเขาก็บอกว่าทุกอย่างก็ผ่านไปด้วยดี

ทิ้งท้าย

Facebook แสดงให้เห็นว่าการสำเนาข้อมูลขนาดมหาศาลด้วยความเร็วสูงบนเฟรมเวิร์ค Hadoop นั้นเป็นไปได้ (ทั้งที่ Hadoop ไม่ได้มีเครื่องมือทางด้านนี้ที่ดีพอมาให้) จากโปรแกรมต่าง ๆ ที่สร้างขึ้นเองทีหลัง และ Facebook จะพัฒนาระบบนี้ต่อเพื่อใช้ในการสำเนาข้อมูลระหว่างศูนย์ข้อมูลหลาย ๆ ศูนย์ของ Facebook เอง

บทความทิ้งท้ายว่า ใครสนใจงานทางด้านนี้ ก็ไปสมัครกับเค้าได้นะครับ :-)

ที่มา - Facebook Engineering

Blognone Jobs Premium