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