Facebook為何選擇Hadoop和HBase
前段時(shí)間Facebook的新版消息系統(tǒng)發(fā)布,F(xiàn)acebook對(duì)HBase的成功使用也使得很多的HBase案例得以出現(xiàn),下文是 Facebook的Hadoop工程師Dhruba Borthakur發(fā)表的Hadoop系列文章中的一篇,對(duì)Facebook選擇Hadoop和HBase的原因做了一個(gè)說明。
Dhruba Borthakur首先總結(jié)了Hadoop和HBase的優(yōu)勢。他認(rèn)為HBase橫向擴(kuò)展性強(qiáng)。對(duì)Facebook這種少量數(shù)據(jù)存儲(chǔ)場景來說,擴(kuò)容幾乎是家常便飯,HBase能夠使數(shù)據(jù)擴(kuò)容非常容易。并且支持很高的寫吞吐。Facebook的消息數(shù)據(jù)很龐大,每天的寫量也很大。同時(shí)在同一個(gè)數(shù)據(jù)中心,能夠保證有較強(qiáng)的一致性。Facebook用HBase來存儲(chǔ)消息數(shù)據(jù),業(yè)務(wù)上需要一個(gè)能夠保證一致性的數(shù)據(jù)存儲(chǔ)(這也是Facebook并沒有采用 Cassandra的原因之一)。HBase還具有良好的隨機(jī)讀性能。消息系統(tǒng)的業(yè)務(wù)邏輯導(dǎo)致會(huì)有很多穿透緩存層的隨機(jī)讀操作。
由于數(shù)據(jù)量大,分布的機(jī)器也可能很多,出故障或者進(jìn)行一些日常升級(jí)工作會(huì)比較頻繁。所以高可用性和故障可恢復(fù)性也顯得極其重要。錯(cuò)誤隔離性是指一個(gè)結(jié)點(diǎn)的錯(cuò)誤不會(huì)影響到其它結(jié)點(diǎn),磁盤故障只會(huì)對(duì)相應(yīng)的小規(guī)模的數(shù)據(jù)產(chǎn)生影響。同時(shí)提供原子性的read-modify-write操作。原子性的increment或者對(duì)比后修改的操作,對(duì)很多業(yè)務(wù)上的處理非常方便。***提供獲取某個(gè)范圍的數(shù)據(jù)的功能。比如像獲取某人最近100條消息這樣的功能,在消息系統(tǒng)里也是很常見的需求。
當(dāng)然,下面幾個(gè)Hadoop和HBase不太擅長的方面也值得一說。首先是同一個(gè)數(shù)據(jù)中心網(wǎng)絡(luò)割裂下的容災(zāi)性。同一個(gè)數(shù)據(jù)中心的網(wǎng)絡(luò)出現(xiàn)問題了,導(dǎo)致各結(jié)點(diǎn)之間無法正常溝通,這種情況通??梢酝ㄟ^配置一些備用的網(wǎng)絡(luò)設(shè)備來避免。其次某個(gè)數(shù)據(jù)中心故障不會(huì)影響服務(wù)。這個(gè)情況更是少之又少。***在多個(gè)數(shù)據(jù)中心間的實(shí)時(shí)數(shù)據(jù)交換。這個(gè)不太現(xiàn)實(shí),通常這一點(diǎn)是用Cache層來實(shí)現(xiàn)用戶對(duì)無端數(shù)據(jù)的實(shí)時(shí)訪問的。
【編輯推薦】