จากที่ทราบกันไปแล้วว่า 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



Comments
เป็นบทความที่น่าอ่านครับ
asdfghjkl;'
อ่านแล้วก็ตื่นเต้นเล็ก ๆ เหมือนกันแฮะ แบบว่าเราใช้งานกันเนียน ๆ ทั้งบนคอมพ์ บน Smart Phone บนแอพ 3rd party ทั้งหลาย ก็ไม่ได้รู้สึกว่าช่วงไหนมันมีปัญหา เออ .. แล้วมันทำตอนไหน และทำไมมันลื่นขนาดนี้
เข้าใจคนทำงานเลย คงหายใจไม่ทั่วท้อง คงหวิว ๆ คงอะไรหลาย ๆ อย่าง ผมเองก็ทำอะไรที่ต้องเป๊ะขนาดนี้อยู่บ้าง คิดว่าน่าจะอารมณ์คล้ายกัน แต่ความเสียหายของมหาศาลต่างกัน ...
pex.im | pex.in.th | @pexfresh
โอ้ว ย้ายข้อมูลที่คนทั่วโลกใช้อยู่ โดยไม่ปิด server นี่มันคือการย้ายข้อมูลระดับไหนเนี่ย 20PB >_<
20 petabyte = 20,000 terabyte = 20,000,000 gigabyte
โมบายกระดิ่ง ♥ • ♫ • ♪•
แก้เรียบร้อยครับ
ข้อความอธิบายเกี่ยวกับเฟรมเวิร์ค Hadoop ยกไปขึ้ยย่อหน้าใหม่ หรือไม่ก็ไว้ในหัวข้อ "ข้อมูลพื้นฐานที่น่าสนใจ" ก็ได้ครับ
ระบบนิเวศ (ไม่มี น์), อาทิ หรือ เช่น เลือกใช้แค่คำเดียวพอครับ
แก้เรียบร้อยครับ
すごいい
もういい
( My blog 077023.com )
เนื้อหาน่าอ่านดีครับ น่าศึกษาๆ
ที่นี่เอาไว้ดูเกรียน และดราม่า...
ขอเพิ่มเติมเผื่อใครอ่านแล้วงงศัพท์นะครับ -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ครับ เผื่อใครสนใจ
technologyเค้าไปไกล คนไทยอย่างเราอย่ารอช้า โอกาสใหม่ๆ สำหรับIT businessใหม่ๆ
อ่านแล้วระทึกไปด้วยเลยครับ
The Phantom Thief
เขียนบทดีๆ สร้างเป็นหนัง(อีกเรื่อง)ได้เลยนะเนี่ย
เห็นด้วยครับ แต่คงได้แค่ตื่นเต้น เพราะพวกเขาทำงานได้ไม่มีปัญหาเนี่ยสิ ถ้ามีปัญหาเกิดขึ้นหน่อยก็กลายเป็นหนังได้ ถ้าไม่มีผมว่าคงเป็นสารคดีแทน
ลองคิดเล่นๆ แบบ 24 แบบว่ามีตัวร้ายโผล่มาขัดขวางการย้ายข้อมูลครั้งนี้ เพื่อให้คนทั้งโลกใช้ Facebook ไม่ได้ ทาง Facebook มีเวลา 24 ชม. ในการเตรียมการและย้ายให้เสร็จ มีทีม Engineering ที่เปรียบเป็นแจ๊ค ทำงานแข่งกับตัวร้าย ถ่ายแบบช็อตต่อช็อต คงน่าดูไม่น้อยครับ
ไม่มีอะไรในกอไผ่นอกจาก...หน่อไม้ | @kezuke | Facebook
ใครจะเป็นแจ๊ค บาวเออร์?
ชอบเล่นเรื่องเป็นหนัง จะได้เรียนรู้เร็ว
ตื่นเต้นมาก อึ้งครับ ย้ายเซิร์ฟเวอร์แบบไม่มีการปิดเว็บประกาศ maintenance เลย
[ JIRAYU.IN.TH ]
+1 เจ๋งมากๆ ตรงที่ย้ายข้อมูลมหึมาโดยที่ไม่ปิด maintenance และคนใช้ไม่รู้ตัว แถมไม่มีใครออกมาบ่นว่าเกิดปัญหาอะไรอีกต่างหาก สมแล้วที่ FB เต็มไปด้วยวิศวกรระดับหัวกะทิของโลก
+1 เหมือนกันครับ
คิดภาพตามไปด้วย รู้สึกขนลุกเลยหล่ะ
+1 เจ๋งจริงๆ ข้อมูลมหาศาลขนาดนนั้น
WoW
ต้องกด Like ไม่ใช่หรอครับ
การเปลี่ยนแปลง *~
สุดยอดมากๆ ย้าย server แบบไม่ต้องปิดประกาศ maintenance แม้แต่วินาทีเดียว
OXYGEN2's Blog
เป็นบทความที่น่าสนใจมากครับ
T, B
ให้ตาย
เหมือนได้ดูหนังแอคชั่น เรื่องนึงเลยเนี่ย
เว็บ portal อันดับหนึ่งของไทย ตอนที่ย้ายข้อมูลเค้าก็ไม่ปิดระบบนะครับ แค่ข้อมูลอาจจะเยอะไม่เท่าเฉยๆ
ว้า ตอน blognone ย้าย server ปิดระบบไปตั้งนาน เกือบขาดใจแน่ะ >_<
The Phantom Thief
อ่านแล้วตื่นเต้นเหมือนกำลังดูหนังลุ้นตอนที่โลกกำลังเผชิญวิกฤติเข้าสูหายนะถึงขั้นโลกแตก
v___v
บางเว็บนี่ไม่ต้องย้ายข้อมูลก็ต้องปิดอาทิตย์เว้นอาทิตย์
ผู้ใช้อ่านข่าวแล้วก็ถามกันเองว่า ย้ายตอนไหน ?
Blognone = 138.1 news/w เยอะมากๆ
รูปช้างมันน่ารักเกินกว่าจะเรียกว่าช้างยักษ์นะครับเนี่ย น่าจะเรียกว่าช้างน้อย :) 555
ก็ย้ายกันตอนที่บางคนกำลังบ่นใน Twitter ในเข้า facebook ไม่ได้ไง ฮ่าๆๆๆ
ถึงว่า ตั้งแต่ G+ ออกมามันก็มีปัญหาเรื่อยๆ ...
ว่าแต่เขาย้ายกันช่วงนั้นเปล่าหว่า
Blog
เอ่อ จากลิงค์ที่มาอะครับ ในรูป war room คนที่อยู่มุมบนซ้ายของรูปเหมือนศาสดาเลยอะ 5555
ถ้าเป็นวันเมษาโกหก ผมจะเชื่อทันทีว่าเป็นมุขของ FB เอง
ในที่สุดวันนี้ก็มาถึง...
เมพ เมพ เมพพพ ชาบูววว์ จริงๆ
ไม่ค่อยรู้เรื่องพวกนี้เท่าไหร่ แต่อ่านแล้วก็สนุก+ได้ความรู้ดีครับ
@ Virusfowl
sometime something with someone