Facebook

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

Hiring! บริษัทที่น่าสนใจ

Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
LTMH TECH company cover
LTMH TECH
LTMH TECH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data

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

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

iammeng Thu, 08/04/2011 - 11:50

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

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

nuntawat Wed, 08/03/2011 - 16:34

  • FacebookEngineering -> Facebook Engineering
  • อัพเดท -> อัพเดต
  • รบกวนอธิบาย "เฟรมเวิร์ค Hadoop" สั้นๆ ก็จะดีครับ

ข้อความอธิบายเกี่ยวกับเฟรมเวิร์ค 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ครับ
เผื่อใครสนใจ

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

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

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

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

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

Apple
public://topics-images/apple_webp.png
SCB10X
public://topics-images/347823389_774095087711602_515970870797767330_n_webp.png
Windows 11
public://topics-images/hero-bloom-logo.jpg
Huawei
public://topics-images/huawei_standard_logo.svg_.png
Google Keep
public://topics-images/google_keep_2020_logo.svg_.png
Instagram
public://topics-images/instagram_logo_2022.svg_.png
SCB
public://topics-images/9crhwyxv_400x400.jpg
Microsoft
public://topics-images/microsoft_logo.svg_.png
Basecamp
public://topics-images/bwpepdi0_400x400.jpg
FTC
public://topics-images/seal_of_the_united_states_federal_trade_commission.svg_.png
Pinterest
public://topics-images/pinterest.png
Palantir
public://topics-images/-nzsuc6w_400x400.png
AIS Business
public://topics-images/logo-business-2021-1.png
PostgreSQL
public://topics-images/images.png
JetBrains
public://topics-images/icx8y2ta_400x400.png
Krungthai
public://topics-images/aam1jxs6_400x400.jpg
Palworld
public://topics-images/mccyhcqf_400x400.jpg
Bill Gates
public://topics-images/bill_gates-september_2024.jpg
VMware
public://topics-images/1nj4i1gp_400x400.jpg
Take-Two Interactive
public://topics-images/0khle7nh_400x400.jpg
OpenAI
public://topics-images/ztsar0jw_400x400.jpg
Thailand
public://topics-images/flag_of_thailand.svg_.png
NVIDIA
public://topics-images/srvczsfq_400x400.jpg
ServiceNow
public://topics-images/ytnrfphe_400x400.png
Klarna
public://topics-images/urcllpjp_400x400.png
Google Play
public://topics-images/play.png
Drupal
public://topics-images/drupal.png
Virtua Fighter
public://topics-images/virtua_figther_2024_logo.png
Paradox Interactive
public://topics-images/paradox_interactive_logo.svg_.png
Europa Universalis
public://topics-images/europa-icon.png
Nintendo Switch 2
public://topics-images/mainvisual.png
Cloudflare
public://topics-images/cloudflare_logo.svg_.png
Samsung
public://topics-images/samsung.png
Google
public://topics-images/google_2015_logo.svg_.png
Uber
public://topics-images/uber.png
Microsoft 365
public://topics-images/m365.png
USA
public://topics-images/flag_of_the_united_states.svg_.png
GM
public://topics-images/0pe0po-z_400x400.jpg
Perplexity
public://topics-images/perplex.jpg
Xperia
public://topics-images/xperia.png
iOS 18
public://topics-images/ios-18-num-96x96_2x.png
True
public://topics-images/true_logo.png
SoftBank
public://topics-images/softbank.jpg
Pac-Man
public://topics-images/pacman.png
Harry Potter
public://topics-images/harry.png
Marvel
public://topics-images/marvel.png
Skydance
public://topics-images/skydance.png
SEA
public://topics-images/sealogo.png
Find My Device
public://topics-images/find.png
Gemini
public://topics-images/google_gemini_logo.svg__1.png
Accessibility
public://topics-images/accessibility-128x128_2x.png
Material Design
public://topics-images/m3-favicon-apple-touch.png
Android 16
public://topics-images/android16.png
Android
public://topics-images/android_0.png
Firefox
public://topics-images/firefox_logo-2019.svg_.png
Google Messages
public://topics-images/messages.png
Notepad
public://topics-images/notepad.png
Singapore
public://topics-images/flag_of_singapore.svg_.png
Airbnb
public://topics-images/airbnb.png
PS5
public://topics-images/ps5.png
Krafton
public://topics-images/krafton.png
Doom
public://topics-images/doom-game-s_logo.svg_.png
AMD
public://topics-images/amd_logo.svg_.png
GTA
public://topics-images/gta_0.png
DoorDash
public://topics-images/doordash.png
YouTube
public://topics-images/yt.png
YouTube Music
public://topics-images/yt-music.png
Facebook
public://topics-images/fb.png
iQiyi
public://topics-images/iqiyi_0.png
Viu
public://topics-images/viu.png
Amazon Prime Video
public://topics-images/prime-vid.png
Spotify
public://topics-images/spotify.jpg
Apple TV
public://topics-images/apple-tv.png
HBO Max
public://topics-images/max.png
Threads
public://topics-images/threads.png
Alexa
public://topics-images/alexa.png
Kindle App
public://topics-images/kindle.png
Shopee
public://topics-images/shopee.png
Waze
public://topics-images/waze.png
Bilibili
public://topics-images/bili.png
Google Maps
public://topics-images/maps.png
Apple Music
public://topics-images/apple-music.png
Claude
public://topics-images/claude.png
TikTok
public://topics-images/tiktok.png
Xbox
public://topics-images/xbox.png
Tesla
public://topics-images/tesla.png
Chrome
public://topics-images/chrome.png
Google Calendar
public://topics-images/gcal.png
Google Home
public://topics-images/ghome.png
Google Meet
public://topics-images/meet.png
NotebookLM
public://topics-images/notebooklm.png
Reddit
public://topics-images/reddit.png
Assassin’s Creed
public://topics-images/ac.png
Mark Zuckerberg
public://topics-images/zuck.jpg
Meta
public://topics-images/meta.png
Meta AI
public://topics-images/meta-ai.png
Epic Games
public://topics-images/epic_games_logo.svg_.png
Unreal
public://topics-images/unreal_engine_logo-new_typeface-svg.png
Fortnite
public://topics-images/fortnite.png
DeepMind
public://topics-images/deepmind.png
Databricks
public://topics-images/databricks.png
Netflix
public://topics-images/netflix-logo.png
Microsoft Azure
public://topics-images/azure.png
Microsoft Copilot
public://topics-images/microsoft_copilot_icon.svg_.png
Bing
public://topics-images/bing.png
EA
public://topics-images/ea.png
Intel
public://topics-images/intel.png
Amazon
public://topics-images/amazon.png
AWS
public://topics-images/aws.png
Zoom
public://topics-images/zoom.png
Dropbox
public://topics-images/dropbox_0.png
Roblox
public://topics-images/roblox.png
Dell Technologies
public://topics-images/dell-tech.png
Nothing
public://topics-images/nothing.svg_.png
Microsoft Teams
public://topics-images/teams.png
Mojang
public://topics-images/mojang.png
Minecraft
public://topics-images/minecraft.png
Redis
public://topics-images/redis_logo.svg_.png
Ubisoft
public://topics-images/ubisoft_logo.svg_.png
Elden Ring
public://topics-images/elden.png
Brave
public://topics-images/brave.png
Opera
public://topics-images/opera.png
Vivaldi
public://topics-images/vivaldi.png
Microsoft Edge
public://topics-images/edge.png
Duolingo
public://topics-images/duolingo.png
LinkedIn
public://topics-images/linkedin.png
Canva
public://topics-images/canva.png
Realme
public://topics-images/realme.png
NASA
public://topics-images/nasa-logo.png
Booking.com
public://topics-images/booking.png
Agoda
public://topics-images/agoda.png
Bolt
public://topics-images/bolt.png
Grab
public://topics-images/grab.png
Temu
public://topics-images/temnu.png
LINE
public://topics-images/line.png
Facebook Messenger
public://topics-images/messenger.png
WhatsApp
public://topics-images/whatsapp.png
Telegram
public://topics-images/telegram.png
Signal
public://topics-images/signal.png
X.com
public://topics-images/x.png
Grok
public://topics-images/grok.png
xAI
public://topics-images/xai.png
CapCut
public://topics-images/capcut.png
Edits
public://topics-images/edit.png
Google One
public://topics-images/gone.png
Tinder
public://topics-images/tinger.png
Whoscall
public://topics-images/whoscall.png
OneDrive
public://topics-images/onedrive.png
Lightroom
public://topics-images/lr.png
Meitu
public://topics-images/meitu.png
Outlook
public://topics-images/outlook.png
Excel
public://topics-images/excel.png
PowerPoint
public://topics-images/ppt.png
Microsoft Word
public://topics-images/word.png
Phone Link
public://topics-images/phone-link.png
OneNote
public://topics-images/onenote.png
Windows App
public://topics-images/windows-app.png
Notion
public://topics-images/notion.png
Google Drive
public://topics-images/drive.png
YouTube Kids
public://topics-images/yt-kids.png
Gboard
public://topics-images/gboard.png
DeepSeek
public://topics-images/deepseek_logo.svg_.png
Prince of Persia
public://topics-images/prince-persia.png
Sony
public://topics-images/nq0nd2c0_400x400.jpg
Tencent
public://topics-images/z4xi4oyc_400x400.jpg
Cisco
public://topics-images/jmyca1yn_400x400.jpg
Alibaba
public://topics-images/4axflwia_400x400.jpg
Alibaba Cloud
public://topics-images/qm43orjx_400x400_cloud.png
Coinbase
public://topics-images/consumer_wordmark.png
CarPlay
public://topics-images/carplay.png
Rust
public://topics-images/rust-logo-blk.png
Red Hat
public://topics-images/redhat.png
Anthropic
public://topics-images/anthropic.png
Xcode
public://topics-images/xcode.png
Tim Cook
public://topics-images/tim-cook.jpg
Donald Trump
public://topics-images/trump.jpg
Microsoft Surface
public://topics-images/surface.jpg
Copilot+ PC
public://topics-images/copilotpc.png
CoreWeave
public://topics-images/hwqgzewx_400x400.jpg
Stellar Blade
public://topics-images/stellar-blade.jpg
Snapdragon
public://topics-images/snapdragon_chip.png
Qualcomm
public://topics-images/qualcomm-logo.svg_.png