จากที่ทราบกันไปแล้วว่า 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
เป็นบทความที่น่าอ่านครับ
newstar Wed, 08/03/2011 - 13:40
เป็นบทความที่น่าอ่านครับ
อ่านแล้วก็ตื่นเต้นเล็ก ๆ
pexza Wed, 08/03/2011 - 14:00
อ่านแล้วก็ตื่นเต้นเล็ก ๆ เหมือนกันแฮะ แบบว่าเราใช้งานกันเนียน ๆ ทั้งบนคอมพ์ บน Smart Phone บนแอพ 3rd party ทั้งหลาย ก็ไม่ได้รู้สึกว่าช่วงไหนมันมีปัญหา เออ .. แล้วมันทำตอนไหน และทำไมมันลื่นขนาดนี้
เข้าใจคนทำงานเลย คงหายใจไม่ทั่วท้อง คงหวิว ๆ คงอะไรหลาย ๆ อย่าง ผมเองก็ทำอะไรที่ต้องเป๊ะขนาดนี้อยู่บ้าง คิดว่าน่าจะอารมณ์คล้ายกัน แต่ความเสียหายของมหาศาลต่างกัน ...
โอ้ว
iammeng Thu, 08/04/2011 - 11:50
โอ้ว ย้ายข้อมูลที่คนทั่วโลกใช้อยู่ โดยไม่ปิด server นี่มันคือการย้ายข้อมูลระดับไหนเนี่ย 20PB >_<
20 petabyte = 20,000 terabyte = 20,000,000 gigabyte
FacebookEngineering ->
nuntawat Wed, 08/03/2011 - 16:34
แก้เรียบร้อยครับ
lch Wed, 08/03/2011 - 17:39
In reply to FacebookEngineering -> by nuntawat
แก้เรียบร้อยครับ
ข้อความอธิบายเกี่ยวกับเฟรมเวิ
nuntawat Wed, 08/03/2011 - 22:02
In reply to แก้เรียบร้อยครับ by lch
ข้อความอธิบายเกี่ยวกับเฟรมเวิร์ค Hadoop ยกไปขึ้ยย่อหน้าใหม่ หรือไม่ก็ไว้ในหัวข้อ "ข้อมูลพื้นฐานที่น่าสนใจ" ก็ได้ครับ
ซึ่งมีระบบนิเวศน์ต่าง ๆ
korrawit Wed, 08/03/2011 - 20:29
In reply to FacebookEngineering -> by nuntawat
ระบบนิเวศ (ไม่มี น์), อาทิ หรือ เช่น เลือกใช้แค่คำเดียวพอครับ
แก้เรียบร้อยครับ
lch Wed, 08/03/2011 - 21:00
In reply to ซึ่งมีระบบนิเวศน์ต่าง ๆ by korrawit
แก้เรียบร้อยครับ
すごいい
077023 Wed, 08/03/2011 - 21:29
すごいい
เนื้อหาน่าอ่านดีครับ
nook735 Thu, 08/04/2011 - 01:07
เนื้อหาน่าอ่านดีครับ น่าศึกษาๆ
ขอเพิ่มเติมเผื่อใครอ่านแล้วงง
winladen Thu, 08/04/2011 - 01:18
ขอเพิ่มเติมเผื่อใครอ่านแล้วงงศัพท์นะครับ
-HBase เป็น opensource nosql database ประเภทหนึ่ง ได้modelมาจาก Google Bigtable
-Hadoopเป็น MapReduce Engine เครือเดียวกัน(เป็นalgorithmเพื่อrun batch processingโดยเหมาะกับการรันเป็นparallel และขยายกำลังประมวลผลได้สะดวก)
-HDFS เป็นfile systemที่รองรับtechด้านบน ทั้งสามตัวมักถูกนำมาใช้งานร่วมกันเช่นเก็บfileไว้บน HDFS โดยใช้HBaseเก็บข้อมูลต่างๆ และนำข้อมูลมาประมวลผลข้างหลังด้วยHadoop เป็นตัน
ถ้าชอบบทความเกี่ยวกับ data store และ NOSQL technology แนวนี้มี ชมรม(non-profit) nosql ประเทศไทย ไปsearchดูได้ ในfacebookครับ
เผื่อใครสนใจ
อ่านแล้วระทึกไปด้วยเลยครับ
hisoft Thu, 08/04/2011 - 01:24
อ่านแล้วระทึกไปด้วยเลยครับ
เขียนบทดีๆ
razhluk Thu, 08/04/2011 - 02:39
เขียนบทดีๆ สร้างเป็นหนัง(อีกเรื่อง)ได้เลยนะเนี่ย
เห็นด้วยครับ
EThaiZone Thu, 08/04/2011 - 09:29
In reply to เขียนบทดีๆ by razhluk
เห็นด้วยครับ แต่คงได้แค่ตื่นเต้น เพราะพวกเขาทำงานได้ไม่มีปัญหาเนี่ยสิ
ถ้ามีปัญหาเกิดขึ้นหน่อยก็กลายเป็นหนังได้ ถ้าไม่มีผมว่าคงเป็นสารคดีแทน
ลองคิดเล่นๆ แบบ 24
kezuke Thu, 08/04/2011 - 10:43
In reply to เขียนบทดีๆ by razhluk
ลองคิดเล่นๆ แบบ 24
แบบว่ามีตัวร้ายโผล่มาขัดขวางการย้ายข้อมูลครั้งนี้ เพื่อให้คนทั้งโลกใช้ Facebook ไม่ได้
ทาง Facebook มีเวลา 24 ชม. ในการเตรียมการและย้ายให้เสร็จ
มีทีม Engineering ที่เปรียบเป็นแจ๊ค ทำงานแข่งกับตัวร้าย
ถ่ายแบบช็อตต่อช็อต คงน่าดูไม่น้อยครับ
ใครจะเป็นแจ๊ค บาวเออร์?
neizod Thu, 08/04/2011 - 16:57
In reply to ลองคิดเล่นๆ แบบ 24 by kezuke
ใครจะเป็นแจ๊ค บาวเออร์?
ชอบเล่นเรื่องเป็นหนัง
cavaji Thu, 08/04/2011 - 17:52
In reply to เขียนบทดีๆ by razhluk
ชอบเล่นเรื่องเป็นหนัง จะได้เรียนรู้เร็ว
ตื่นเต้นมาก อึ้งครับ
jirayu Thu, 08/04/2011 - 03:21
ตื่นเต้นมาก อึ้งครับ ย้ายเซิร์ฟเวอร์แบบไม่มีการปิดเว็บประกาศ maintenance เลย
+1 เจ๋งมากๆ
illusion Thu, 08/04/2011 - 04:06
In reply to ตื่นเต้นมาก อึ้งครับ by jirayu
+1 เจ๋งมากๆ ตรงที่ย้ายข้อมูลมหึมาโดยที่ไม่ปิด maintenance และคนใช้ไม่รู้ตัว แถมไม่มีใครออกมาบ่นว่าเกิดปัญหาอะไรอีกต่างหาก สมแล้วที่ FB เต็มไปด้วยวิศวกรระดับหัวกะทิของโลก
+1
Fawkes Thu, 08/04/2011 - 10:18
In reply to ตื่นเต้นมาก อึ้งครับ by jirayu
+1 เหมือนกันครับ
คิดภาพตามไปด้วย รู้สึกขนลุกเลยหล่ะ
+1 เจ๋งจริงๆ
superballsj2 Thu, 08/04/2011 - 12:32
In reply to ตื่นเต้นมาก อึ้งครับ by jirayu
+1 เจ๋งจริงๆ ข้อมูลมหาศาลขนาดนนั้น
ต้องกด Like ไม่ใช่หรอครับ
golfiti Thu, 08/04/2011 - 17:30
In reply to ตื่นเต้นมาก อึ้งครับ by jirayu
ต้องกด Like ไม่ใช่หรอครับ
สุดยอดมากๆ ย้าย server
OXYGEN2 Thu, 08/04/2011 - 03:59
สุดยอดมากๆ ย้าย server แบบไม่ต้องปิดประกาศ maintenance แม้แต่วินาทีเดียว
เป็นบทความที่น่าสนใจมากครับ
iPomz Thu, 08/04/2011 - 09:54
เป็นบทความที่น่าสนใจมากครับ
ให้ตาย เหมือนได้ดูหนังแอคชั่น
toooooooon Thu, 08/04/2011 - 11:04
ให้ตาย
เหมือนได้ดูหนังแอคชั่น เรื่องนึงเลยเนี่ย
เว็บ portal อันดับหนึ่งของไทย
way_cs16 Thu, 08/04/2011 - 11:29
เว็บ portal อันดับหนึ่งของไทย ตอนที่ย้ายข้อมูลเค้าก็ไม่ปิดระบบนะครับ แค่ข้อมูลอาจจะเยอะไม่เท่าเฉยๆ
ว้า ตอน blognone ย้าย server
hisoft Thu, 08/04/2011 - 16:49
In reply to เว็บ portal อันดับหนึ่งของไทย by way_cs16
ว้า ตอน blognone ย้าย server ปิดระบบไปตั้งนาน เกือบขาดใจแน่ะ >_<
อ่านแล้วตื่นเต้นเหมือนกำลังดู
joomla Thu, 08/04/2011 - 12:54
อ่านแล้วตื่นเต้นเหมือนกำลังดูหนังลุ้นตอนที่โลกกำลังเผชิญวิกฤติเข้าสูหายนะถึงขั้นโลกแตก
บางเว็บนี่ไม่ต้องย้ายข้อมูลก็
atheist Thu, 08/04/2011 - 14:56
บางเว็บนี่ไม่ต้องย้ายข้อมูลก็ต้องปิดอาทิตย์เว้นอาทิตย์
ผู้ใช้อ่านข่าวแล้วก็ถามกันเอง
LuvStry Thu, 08/04/2011 - 15:44
ผู้ใช้อ่านข่าวแล้วก็ถามกันเองว่า ย้ายตอนไหน ?
รูปช้างมันน่ารักเกินกว่าจะเรี
Zerothman Thu, 08/04/2011 - 16:15
รูปช้างมันน่ารักเกินกว่าจะเรียกว่าช้างยักษ์นะครับเนี่ย น่าจะเรียกว่าช้างน้อย :) 555
ก็ย้ายกันตอนที่บางคนกำลังบ่นใ
tana Thu, 08/04/2011 - 19:01
ก็ย้ายกันตอนที่บางคนกำลังบ่นใน Twitter ในเข้า facebook ไม่ได้ไง ฮ่าๆๆๆ
ถึงว่า ตั้งแต่ G+
Blltz Thu, 08/04/2011 - 20:17
ถึงว่า ตั้งแต่ G+ ออกมามันก็มีปัญหาเรื่อยๆ ...
ว่าแต่เขาย้ายกันช่วงนั้นเปล่าหว่า
เอ่อ จากลิงค์ที่มาอะครับ
BlackMiracle Thu, 08/04/2011 - 21:09
เอ่อ จากลิงค์ที่มาอะครับ ในรูป war room คนที่อยู่มุมบนซ้ายของรูปเหมือนศาสดาเลยอะ 5555
ถ้าเป็นวันเมษาโกหก
adente Thu, 08/04/2011 - 22:14
ถ้าเป็นวันเมษาโกหก ผมจะเชื่อทันทีว่าเป็นมุขของ FB เอง
เมพ เมพ เมพพพ ชาบูววว์
Virusfowl Wed, 08/10/2011 - 00:52
เมพ เมพ เมพพพ ชาบูววว์ จริงๆ
ไม่ค่อยรู้เรื่องพวกนี้เท่าไหร่ แต่อ่านแล้วก็สนุก+ได้ความรู้ดีครับ