จากที่ทราบกันไปแล้วว่า 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
Comments
เป็นบทความที่น่าอ่านครับ
อ่านแล้วก็ตื่นเต้นเล็ก ๆ เหมือนกันแฮะ แบบว่าเราใช้งานกันเนียน ๆ ทั้งบนคอมพ์ บน Smart Phone บนแอพ 3rd party ทั้งหลาย ก็ไม่ได้รู้สึกว่าช่วงไหนมันมีปัญหา เออ .. แล้วมันทำตอนไหน และทำไมมันลื่นขนาดนี้
เข้าใจคนทำงานเลย คงหายใจไม่ทั่วท้อง คงหวิว ๆ คงอะไรหลาย ๆ อย่าง ผมเองก็ทำอะไรที่ต้องเป๊ะขนาดนี้อยู่บ้าง คิดว่าน่าจะอารมณ์คล้ายกัน แต่ความเสียหายของมหาศาลต่างกัน ...
โอ้ว ย้ายข้อมูลที่คนทั่วโลกใช้อยู่ โดยไม่ปิด server นี่มันคือการย้ายข้อมูลระดับไหนเนี่ย 20PB >_<
20 petabyte = 20,000 terabyte = 20,000,000 gigabyte
แก้เรียบร้อยครับ
ข้อความอธิบายเกี่ยวกับเฟรมเวิร์ค Hadoop ยกไปขึ้ยย่อหน้าใหม่ หรือไม่ก็ไว้ในหัวข้อ "ข้อมูลพื้นฐานที่น่าสนใจ" ก็ได้ครับ
ระบบนิเวศ (ไม่มี น์), อาทิ หรือ เช่น เลือกใช้แค่คำเดียวพอครับ
แก้เรียบร้อยครับ
すごいい
もういい
เนื้อหาน่าอ่านดีครับ น่าศึกษาๆ
ขอเพิ่มเติมเผื่อใครอ่านแล้วงงศัพท์นะครับ
-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ครับ
เผื่อใครสนใจ
อ่านแล้วระทึกไปด้วยเลยครับ
เขียนบทดีๆ สร้างเป็นหนัง(อีกเรื่อง)ได้เลยนะเนี่ย
เห็นด้วยครับ แต่คงได้แค่ตื่นเต้น เพราะพวกเขาทำงานได้ไม่มีปัญหาเนี่ยสิ
ถ้ามีปัญหาเกิดขึ้นหน่อยก็กลายเป็นหนังได้ ถ้าไม่มีผมว่าคงเป็นสารคดีแทน
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
ลองคิดเล่นๆ แบบ 24
แบบว่ามีตัวร้ายโผล่มาขัดขวางการย้ายข้อมูลครั้งนี้ เพื่อให้คนทั้งโลกใช้ Facebook ไม่ได้
ทาง Facebook มีเวลา 24 ชม. ในการเตรียมการและย้ายให้เสร็จ
มีทีม Engineering ที่เปรียบเป็นแจ๊ค ทำงานแข่งกับตัวร้าย
ถ่ายแบบช็อตต่อช็อต คงน่าดูไม่น้อยครับ
ใครจะเป็นแจ๊ค บาวเออร์?
ชอบเล่นเรื่องเป็นหนัง จะได้เรียนรู้เร็ว
ตื่นเต้นมาก อึ้งครับ ย้ายเซิร์ฟเวอร์แบบไม่มีการปิดเว็บประกาศ maintenance เลย
+1 เจ๋งมากๆ ตรงที่ย้ายข้อมูลมหึมาโดยที่ไม่ปิด maintenance และคนใช้ไม่รู้ตัว แถมไม่มีใครออกมาบ่นว่าเกิดปัญหาอะไรอีกต่างหาก สมแล้วที่ FB เต็มไปด้วยวิศวกรระดับหัวกะทิของโลก
+1 เหมือนกันครับ
คิดภาพตามไปด้วย รู้สึกขนลุกเลยหล่ะ
+1 เจ๋งจริงๆ ข้อมูลมหาศาลขนาดนนั้น
ต้องกด Like ไม่ใช่หรอครับ
สุดยอดมากๆ ย้าย server แบบไม่ต้องปิดประกาศ maintenance แม้แต่วินาทีเดียว
oxygen2.me, panithi's blog
Device: ThinkPad T480s, iPad Pro, iPhone 11 Pro Max, Pixel 6
เป็นบทความที่น่าสนใจมากครับ
ให้ตาย
เหมือนได้ดูหนังแอคชั่น เรื่องนึงเลยเนี่ย
เว็บ portal อันดับหนึ่งของไทย ตอนที่ย้ายข้อมูลเค้าก็ไม่ปิดระบบนะครับ แค่ข้อมูลอาจจะเยอะไม่เท่าเฉยๆ
ว้า ตอน blognone ย้าย server ปิดระบบไปตั้งนาน เกือบขาดใจแน่ะ >_<
อ่านแล้วตื่นเต้นเหมือนกำลังดูหนังลุ้นตอนที่โลกกำลังเผชิญวิกฤติเข้าสูหายนะถึงขั้นโลกแตก
บางเว็บนี่ไม่ต้องย้ายข้อมูลก็ต้องปิดอาทิตย์เว้นอาทิตย์
ผู้ใช้อ่านข่าวแล้วก็ถามกันเองว่า ย้ายตอนไหน ?
Blognone = 138.1 news/w เยอะมากๆ
รูปช้างมันน่ารักเกินกว่าจะเรียกว่าช้างยักษ์นะครับเนี่ย น่าจะเรียกว่าช้างน้อย :) 555
ก็ย้ายกันตอนที่บางคนกำลังบ่นใน Twitter ในเข้า facebook ไม่ได้ไง ฮ่าๆๆๆ
ถึงว่า ตั้งแต่ G+ ออกมามันก็มีปัญหาเรื่อยๆ ...
ว่าแต่เขาย้ายกันช่วงนั้นเปล่าหว่า
เอ่อ จากลิงค์ที่มาอะครับ ในรูป war room คนที่อยู่มุมบนซ้ายของรูปเหมือนศาสดาเลยอะ 5555
Pitawat's Blog :: บล็อกผมเองครับ
ถ้าเป็นวันเมษาโกหก ผมจะเชื่อทันทีว่าเป็นมุขของ FB เอง
เมพ เมพ เมพพพ ชาบูววว์ จริงๆ
ไม่ค่อยรู้เรื่องพวกนี้เท่าไหร่ แต่อ่านแล้วก็สนุก+ได้ความรู้ดีครับ
@ Virusfowl
I'm not a dev. not yet a user.