จากที่ทราบกันไปแล้วว่า Facebook สร้างศูนย์ข้อมูลขนาดยักษ์ของตัวเองขึ้นมาเมื่อปีที่แล้ว และสร้างเสร็จแล้วในช่วงไตรมาสแรกของปีนี้
ในช่วงเดือนที่ผ่านมา (มิ.ย. 2554) Facebook ก็ได้ฤกษ์ถ่ายโอนข้อมูลขนาดมหึมาของตนเองบนเฟรมเวิร์ค Hadoop จากระบบเดิมสู่ระบบใหม่ และเปิดใช้งานระบบจากศูนย์ข้อมูลใหม่อย่างเป็นทางการ
หมายเหตุ: เฟรมเวิร์ค Hadoop เป็นระบบการจัดการข้อมูลขนาดใหญ่แบบกระจายระบบหนึ่งที่ Facebook เลือกใช้ ซึ่งมีระบบนิเวศต่าง ๆ ให้พร้อมสรรพ เช่น ระบบโครงสร้างไฟล์ HDFS, ระบบฐานข้อมูล Hbase, ระบบวิเคราะห์และประมวลผลข้อมูล Hive, และโครงสร้างภาษาโปรแกรม Hadoop MapReduce เป็นต้น
งานนี้ก็เช่นเคยครับ Facebook ก็เขียนมาแบ่งปันเบื้องหลังการทำงานทาง Facebook Engineering ซึ่งผมก็ขอสรุปสิ่งที่คิดว่าน่าสนใจมาดังนี้ครับ
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