Tags:
Node Thumbnail

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

Get latest news from Blognone

Comments

By: newstar
iPhoneWindows PhoneAndroid
on 3 August 2011 - 13:40 #317894

เป็นบทความที่น่าอ่านครับ

By: pexza
AndroidUbuntuWindows
on 3 August 2011 - 14:00 #317903
pexza's picture

อ่านแล้วก็ตื่นเต้นเล็ก ๆ เหมือนกันแฮะ แบบว่าเราใช้งานกันเนียน ๆ ทั้งบนคอมพ์ บน Smart Phone บนแอพ 3rd party ทั้งหลาย ก็ไม่ได้รู้สึกว่าช่วงไหนมันมีปัญหา เออ .. แล้วมันทำตอนไหน และทำไมมันลื่นขนาดนี้

เข้าใจคนทำงานเลย คงหายใจไม่ทั่วท้อง คงหวิว ๆ คงอะไรหลาย ๆ อย่าง ผมเองก็ทำอะไรที่ต้องเป๊ะขนาดนี้อยู่บ้าง คิดว่าน่าจะอารมณ์คล้ายกัน แต่ความเสียหายของมหาศาลต่างกัน ...

By: iammeng
ContributoriPhoneAndroidWindows
on 4 August 2011 - 11:50 #317940
iammeng's picture

โอ้ว ย้ายข้อมูลที่คนทั่วโลกใช้อยู่ โดยไม่ปิด server นี่มันคือการย้ายข้อมูลระดับไหนเนี่ย 20PB >_<

20 petabyte = 20,000 terabyte = 20,000,000 gigabyte

By: nuntawat
WriterAndroidWindowsIn Love
on 3 August 2011 - 16:34 #317951
nuntawat's picture
  • FacebookEngineering -> Facebook Engineering
  • อัพเดท -> อัพเดต
  • รบกวนอธิบาย "เฟรมเวิร์ค Hadoop" สั้นๆ ก็จะดีครับ
By: lch
ContributoriPhoneUbuntu
on 3 August 2011 - 17:39 #317964 Reply to:317951

แก้เรียบร้อยครับ

By: nuntawat
WriterAndroidWindowsIn Love
on 3 August 2011 - 22:02 #318018 Reply to:317964
nuntawat's picture

ข้อความอธิบายเกี่ยวกับเฟรมเวิร์ค Hadoop ยกไปขึ้ยย่อหน้าใหม่ หรือไม่ก็ไว้ในหัวข้อ "ข้อมูลพื้นฐานที่น่าสนใจ" ก็ได้ครับ

By: korrawit
ContributorAndroid
on 3 August 2011 - 20:29 #318006 Reply to:317951

ซึ่งมีระบบนิเวศน์ต่าง ๆ ให้พร้อมสรรพ อาทิเช่น

ระบบนิเวศ (ไม่มี น์), อาทิ หรือ เช่น เลือกใช้แค่คำเดียวพอครับ

By: lch
ContributoriPhoneUbuntu
on 3 August 2011 - 21:00 #318011 Reply to:318006

แก้เรียบร้อยครับ

By: 077023
ContributoriPhoneAndroidWindows
on 3 August 2011 - 21:29 #318015
077023's picture

すごいい


もういい

By: nook735
Android
on 4 August 2011 - 01:07 #318091
nook735's picture

เนื้อหาน่าอ่านดีครับ น่าศึกษาๆ

By: winladen on 4 August 2011 - 01:18 #318093

ขอเพิ่มเติมเผื่อใครอ่านแล้วงงศัพท์นะครับ
-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ครับ
เผื่อใครสนใจ

By: hisoft
ContributorWindows PhoneWindows
on 4 August 2011 - 01:24 #318097
hisoft's picture

อ่านแล้วระทึกไปด้วยเลยครับ

By: razhluk
ContributorAndroidWindowsIn Love
on 4 August 2011 - 02:39 #318106

เขียนบทดีๆ สร้างเป็นหนัง(อีกเรื่อง)ได้เลยนะเนี่ย

By: EThaiZone
ContributorAndroidUbuntuWindows
on 4 August 2011 - 09:29 #318164 Reply to:318106
EThaiZone's picture

เห็นด้วยครับ แต่คงได้แค่ตื่นเต้น เพราะพวกเขาทำงานได้ไม่มีปัญหาเนี่ยสิ
ถ้ามีปัญหาเกิดขึ้นหน่อยก็กลายเป็นหนังได้ ถ้าไม่มีผมว่าคงเป็นสารคดีแทน


มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB

By: kezuke
iPhoneAndroidBlackberryWindows
on 4 August 2011 - 10:43 #318195 Reply to:318106
kezuke's picture

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

By: neizod
ContributorTraineeIn Love
on 4 August 2011 - 16:57 #318395 Reply to:318195
neizod's picture

ใครจะเป็นแจ๊ค บาวเออร์?

By: cavaji
AndroidUbuntu
on 4 August 2011 - 17:52 #318435 Reply to:318106
cavaji's picture

ชอบเล่นเรื่องเป็นหนัง จะได้เรียนรู้เร็ว

By: jirayu
ContributorWindows PhoneBlackberrySymbian
on 4 August 2011 - 03:21 #318109

ตื่นเต้นมาก อึ้งครับ ย้ายเซิร์ฟเวอร์แบบไม่มีการปิดเว็บประกาศ maintenance เลย


By: illusion
ContributorAndroid
on 4 August 2011 - 04:06 #318115 Reply to:318109
illusion's picture

+1 เจ๋งมากๆ ตรงที่ย้ายข้อมูลมหึมาโดยที่ไม่ปิด maintenance และคนใช้ไม่รู้ตัว แถมไม่มีใครออกมาบ่นว่าเกิดปัญหาอะไรอีกต่างหาก สมแล้วที่ FB เต็มไปด้วยวิศวกรระดับหัวกะทิของโลก

By: Fawkes
iPhoneWindows PhoneAndroidBlackberry
on 4 August 2011 - 10:18 #318188 Reply to:318109

+1 เหมือนกันครับ

คิดภาพตามไปด้วย รู้สึกขนลุกเลยหล่ะ

By: superballsj2
iPhoneWindowsIn Love
on 4 August 2011 - 12:32 #318229 Reply to:318109
superballsj2's picture

+1 เจ๋งจริงๆ ข้อมูลมหาศาลขนาดนนั้น

By: golfiti
iPhoneIn Love
on 4 August 2011 - 17:30 #318422 Reply to:318109
golfiti's picture

ต้องกด Like ไม่ใช่หรอครับ

By: OXYGEN2
ContributoriPhoneAndroidWindows
on 4 August 2011 - 03:59 #318113
OXYGEN2's picture

สุดยอดมากๆ ย้าย server แบบไม่ต้องปิดประกาศ maintenance แม้แต่วินาทีเดียว


oxygen2.me, panithi's blog

Device: ThinkPad T480s, iPad Pro, iPhone 11 Pro Max, Pixel 6

By: iPomz
ContributorAndroidWindows
on 4 August 2011 - 09:54 #318173
iPomz's picture

เป็นบทความที่น่าสนใจมากครับ

By: toooooooon
iPhoneWindows PhoneAndroidBlackberry
on 4 August 2011 - 11:04 #318209

ให้ตาย

เหมือนได้ดูหนังแอคชั่น เรื่องนึงเลยเนี่ย

By: way_cs16
ContributorWindows PhoneAndroidBlackberry
on 4 August 2011 - 11:29 #318217
way_cs16's picture

เว็บ portal อันดับหนึ่งของไทย ตอนที่ย้ายข้อมูลเค้าก็ไม่ปิดระบบนะครับ แค่ข้อมูลอาจจะเยอะไม่เท่าเฉยๆ

By: hisoft
ContributorWindows PhoneWindows
on 4 August 2011 - 16:49 #318393 Reply to:318217
hisoft's picture

ว้า ตอน blognone ย้าย server ปิดระบบไปตั้งนาน เกือบขาดใจแน่ะ >_<

By: joomla
iPhoneUbuntu
on 4 August 2011 - 12:54 #318243
joomla's picture

อ่านแล้วตื่นเต้นเหมือนกำลังดูหนังลุ้นตอนที่โลกกำลังเผชิญวิกฤติเข้าสูหายนะถึงขั้นโลกแตก

By: atheist
AndroidUbuntuWindows
on 4 August 2011 - 14:56 #318316

บางเว็บนี่ไม่ต้องย้ายข้อมูลก็ต้องปิดอาทิตย์เว้นอาทิตย์

By: LuvStry
ContributorAndroid
on 4 August 2011 - 15:44 #318346
LuvStry's picture

ผู้ใช้อ่านข่าวแล้วก็ถามกันเองว่า ย้ายตอนไหน ?


Blognone = 138.1 news/w เยอะมากๆ

By: Zerothman
WriteriPhoneIn Love
on 4 August 2011 - 16:15 #318365

รูปช้างมันน่ารักเกินกว่าจะเรียกว่าช้างยักษ์นะครับเนี่ย น่าจะเรียกว่าช้างน้อย :) 555

By: tana
ContributorSymbianWindows
on 4 August 2011 - 19:01 #318465
tana's picture

ก็ย้ายกันตอนที่บางคนกำลังบ่นใน Twitter ในเข้า facebook ไม่ได้ไง ฮ่าๆๆๆ

By: Blltz
WriterMEconomicsAndroidWindows
on 4 August 2011 - 20:17 #318483
Blltz's picture

ถึงว่า ตั้งแต่ G+ ออกมามันก็มีปัญหาเรื่อยๆ ...

ว่าแต่เขาย้ายกันช่วงนั้นเปล่าหว่า

By: BlackMiracle
WriterAndroidUbuntuWindows
on 4 August 2011 - 21:09 #318511

เอ่อ จากลิงค์ที่มาอะครับ ในรูป war room คนที่อยู่มุมบนซ้ายของรูปเหมือนศาสดาเลยอะ 5555


Pitawat's Blog :: บล็อกผมเองครับ

By: adente
ContributorSUSESymbianWindows
on 4 August 2011 - 22:14 #318534
adente's picture

ถ้าเป็นวันเมษาโกหก ผมจะเชื่อทันทีว่าเป็นมุขของ FB เอง

By: Virusfowl
ContributorAndroidSymbianWindows
on 10 August 2011 - 00:52 #320385

เมพ เมพ เมพพพ ชาบูววว์ จริงๆ

ไม่ค่อยรู้เรื่องพวกนี้เท่าไหร่ แต่อ่านแล้วก็สนุก+ได้ความรู้ดีครับ


@ Virusfowl

I'm not a dev. not yet a user.