Hadoop

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

By: newstar
iPhoneWindows PhoneAndroid
newstar's blog
on 03/08/11 12:40 #317894 toggle
newstar's picture

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


asdfghjkl;'

By: pexza
AndroidUbuntuWindows
pexza's blog
on 03/08/11 13:00 #317903 toggle
pexza's picture

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

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


pex.im | pex.in.th | @pexfresh

By: iammeng
AndroidUbuntuWindowsIn Love
iammeng's blog
on 04/08/11 10:50 #317940 toggle
iammeng's picture

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

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


โมบายกระดิ่ง ♥ • ♫ • ♪•

By: nuntawat
WriterAndroidWindows
nuntawat's blog
on 03/08/11 15:34 #317951 toggle
nuntawat's picture
  • FacebookEngineering -> Facebook Engineering
  • อัพเดท -> อัพเดต
  • รบกวนอธิบาย "เฟรมเวิร์ค Hadoop" สั้นๆ ก็จะดีครับ
By: lch
ContributoriPhoneUbuntu
lch's blog
on 03/08/11 16:39 #317964 Reply to:317951 toggle
lch's picture

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

By: nuntawat
WriterAndroidWindows
nuntawat's blog
on 03/08/11 21:02 #318018 Reply to:317964 toggle
nuntawat's picture

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

By: korrawit
AndroidUbuntu
korrawit's blog
on 03/08/11 19:29 #318006 Reply to:317951 toggle
korrawit's picture

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

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

By: lch
ContributoriPhoneUbuntu
lch's blog
on 03/08/11 20:00 #318011 Reply to:318006 toggle
lch's picture

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

By: 077023
ContributoriPhoneAndroidBlackberry
077023's blog
on 03/08/11 20:29 #318015 toggle
077023's picture

すごいい


もういい

( My blog 077023.com )

By: nook735
Android
nook735's blog
on 04/08/11 0:07 #318091 toggle
nook735's picture

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


ที่นี่เอาไว้ดูเกรียน และดราม่า...

By: winladen
winladen's blog
on 04/08/11 0:18 #318093 toggle
winladen's picture

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

By: hisoft
ContributorWindows PhoneWindows
hisoft's blog
on 04/08/11 0:24 #318097 toggle
hisoft's picture

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


 

The Phantom Thief

By: razhluk
AndroidWindowsIn Love
razhluk's blog
on 04/08/11 1:39 #318106 toggle
razhluk's picture

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

By: EThaiZone
ContributorSymbian
EThaiZone's blog
on 04/08/11 8:29 #318164 Reply to:318106 toggle
EThaiZone's picture

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

By: kezuke
AndroidBlackberryWindows
kezuke's blog
on 04/08/11 9:43 #318195 Reply to:318106 toggle
kezuke's picture

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


ไม่มีอะไรในกอไผ่นอกจาก...หน่อไม้ | @kezuke | Facebook

By: neizod
ContributorTraineeIn Love
neizod's blog
on 04/08/11 15:57 #318395 Reply to:318195 toggle
neizod's picture

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

By: cavaji
AndroidUbuntu
cavaji's blog
on 04/08/11 16:52 #318435 Reply to:318106 toggle
cavaji's picture

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

By: MrWhisper
ContributorWindows PhoneBlackberrySymbian
MrWhisper's blog
on 04/08/11 2:21 #318109 toggle
MrWhisper's picture

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


[ JIRAYU.IN.TH ]

By: illusion
ContributorWindows PhoneAndroidWindows
illusion's blog
on 04/08/11 3:06 #318115 Reply to:318109 toggle
illusion's picture

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

By: Fawkes
iPhoneWindows PhoneAndroidBlackberry
Fawkes's blog
on 04/08/11 9:18 #318188 Reply to:318109 toggle
Fawkes's picture

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

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

By: superballsj2
iPhoneWindowsIn Love
superballsj2's blog
on 04/08/11 11:32 #318229 Reply to:318109 toggle
superballsj2's picture

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


WoW

By: golfiti
SymbianUbuntuWindowsIn Love
golfiti's blog
on 04/08/11 16:30 #318422 Reply to:318109 toggle
golfiti's picture

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


การเปลี่ยนแปลง *~

By: OXYGEN2
iPhoneAndroidWindows
OXYGEN2's blog
on 04/08/11 2:59 #318113 toggle
OXYGEN2's picture

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


OXYGEN2's Blog

By: iPomz
ContributorAndroidUbuntuWindows
iPomz's blog
on 04/08/11 8:54 #318173 toggle
iPomz's picture

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


T, B

By: toooooooon
iPhoneWindows PhoneAndroidBlackberry
toooooooon's blog
on 04/08/11 10:04 #318209 toggle
toooooooon's picture

ให้ตาย

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

By: way_cs16
Windows PhoneAndroidBlackberry
way_cs16's blog
on 04/08/11 10:29 #318217 toggle
way_cs16's picture

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

By: hisoft
ContributorWindows PhoneWindows
hisoft's blog
on 04/08/11 15:49 #318393 Reply to:318217 toggle
hisoft's picture

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


 

The Phantom Thief

By: joomla
iPhoneUbuntu
joomla's blog
on 04/08/11 11:54 #318243 toggle
joomla's picture

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


v___v

By: atheist
AndroidUbuntuWindows
atheist's blog
on 04/08/11 13:56 #318316 toggle
atheist's picture

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

By: LuvStry
ContributorAndroid
LuvStry's blog
on 04/08/11 14:44 #318346 toggle
LuvStry's picture

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


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

By: Zerothman
WriteriPhoneIn Love
Zerothman's blog
on 04/08/11 15:15 #318365 toggle
Zerothman's picture

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

By: tana
ContributorSymbianWindows
tana's blog
on 04/08/11 18:01 #318465 toggle
tana's picture

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

By: Blltz
WriterMEconomicsAndroidWindows
Blltz's blog
on 04/08/11 19:17 #318483 toggle
Blltz's picture

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

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


Blog

By: BlackMiracle
AndroidWindows
BlackMiracle's blog
on 04/08/11 20:09 #318511 toggle
BlackMiracle's picture

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

By: adente
iPhoneWindows PhoneAndroidBlackberry
adente's blog
on 04/08/11 21:14 #318534 toggle
adente's picture

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


ในที่สุดวันนี้ก็มาถึง...

By: Virusfowl
ContributorSymbianWindows
Virusfowl's blog
on 09/08/11 23:52 #320385 toggle
Virusfowl's picture

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

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


@ Virusfowl

sometime something with someone