隨著Facebook上市,其大數(shù)據(jù)模式越來越受到人們的重視,剛剛在俄勒岡州Prineville新建的Facebook數(shù)據(jù)中心,更是號稱全球能效最高的數(shù)據(jù)中心。Facebook的數(shù)據(jù)業(yè)務(wù)具體有哪些特色?下面略做盤點(diǎn)。
數(shù)據(jù)采集
Timeline
2011年12月發(fā)布的Timeline主要針對“Profile”進(jìn)行調(diào)整。Facebook Profile相當(dāng)于個人的檔案和資料,通俗來說就是個人主頁。新的個人Profile比過去版本更有視覺沖擊力。Facebook 推出新的 Timeline 界面,它組織個人在 Facebook 上發(fā)布的信息,比如狀態(tài)、圖片、視頻等等,以更加結(jié)構(gòu)化的方式展現(xiàn)出來,就像一本放在 Facebook 上的自傳。
Like按鈕
該功能可以讓用戶標(biāo)注自己喜歡的頁面,并將這些頁面收錄至Facebook的搜索結(jié)果中,這一功能與谷歌(微博)利用頁面相互之間的鏈接關(guān)系來決定搜索排名類似。Facebook表示:“只要用戶點(diǎn)擊了‘Like’按鈕,所有的支持Open Graph協(xié)議的網(wǎng)站都將顯示在搜索引擎中。”facebook將借助Open Graph協(xié)議將搜索引擎的索引范圍進(jìn)一步擴(kuò)大,從而對谷歌產(chǎn)生威脅。
數(shù)據(jù)存儲
Memcached
是一個分布式的內(nèi)存緩存系統(tǒng),F(xiàn)acebook用它作為Web服務(wù)器和MySQL服務(wù)器之間的緩存層(因?yàn)閿?shù)據(jù)庫訪問相對比較慢)。多年來,F(xiàn)acebook已經(jīng)對Memcached和它的周邊軟件進(jìn)行了很多優(yōu)化,比如對network stack的優(yōu)化。Facebook每時每刻都有數(shù)10TB的數(shù)據(jù)緩存在數(shù)千臺Memcached服務(wù)器上。它可能是世界上最大的Memcached服務(wù)器集群了。
Haystack
Haystack是Facebook的高性能圖片存取系統(tǒng),但嚴(yán)格來說,它并不僅限于存儲照片。它要管理超過200億張上傳的照片,并且每一片照片被保存為四種不同的分辨率,因此有超過800億張照片。它不僅要能處理上億的照片,而且性能也是至關(guān)重要的。Facebook每秒鐘要處理約120萬張照片,而且不包括CDN上的,這是一個驚人的數(shù)字。
Cassandra
Cassandra是一個可以避免單點(diǎn)故障的分布式存儲系統(tǒng)。它是NoSQL運(yùn)動的一個典范,并已開放源代碼。它甚至成為一個Apache項(xiàng)目。Facebook在收件箱搜索中使用它,除了Facebook,其他網(wǎng)站也在使用它。
數(shù)據(jù)分析
Hadoop架構(gòu)
Hadoop 是當(dāng)今在分布式/并行計(jì)算中最流行的開源工具,他不僅僅可以用于存儲的分布式文件系統(tǒng),可以用來構(gòu)建大量集群計(jì)算機(jī)以實(shí)現(xiàn)大規(guī)模的數(shù)據(jù)集分布式存儲和存檔處理。Facebook是Hadoop的忠實(shí)用戶和貢獻(xiàn)源碼的參與者,并且Facebook還貢獻(xiàn)了Hive和Thrift兩個重要Hadoop組件,目前已經(jīng)收錄在Apache的Hadoop的子項(xiàng)目中。
Hive
Hive起源于Facebook,它使得針對Hadoop進(jìn)行SQL查詢成為可能,從而非程序員也可以方便地使用。Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的SQL查詢功能,可以將SQL語句轉(zhuǎn)換為MapReduce任務(wù)運(yùn)行。
Zookeeper、Thrift
Hadoop中的子項(xiàng)目還包括Zookeeper分布式鎖,提供類似Google Chubby的功能。Thrift是Hadoop的跨語言接口,可以支持多種語言,例如php和ruby。
BigPipe
BigPipe是Facebook開發(fā)的的動態(tài)網(wǎng)頁處理系統(tǒng)。為了獲得最佳性能,F(xiàn)acebook用它來按分塊處理每個網(wǎng)頁(稱為“pagelets”)。例如,聊天窗口,新聞Feed等是通過分塊分開進(jìn)行傳輸?shù)摹_@些pagelets可以并行工作,不僅可以提高性能,而且即使其中一部分失效或中斷,也不影響用戶的正常訪問。