也許你已經(jīng)在一些地方看到這個消息,F(xiàn)acebook 已經(jīng)開發(fā)一款新的社會化收件箱,集成了電子郵件、即時通訊、短信、文本信息、Facebook站內信息。最重要的是,他們需要每個月存儲 1350 億條信息。他們在哪里存儲這些信息?Facebook的Kannan Muthukkaruppan 在《信息背后的技術》一文中給出一個令人驚奇的答案:HBase。HBase 擊敗了MySQL、Cassandra和其他一些選項,成為了Facebook的選擇。
為什么這一選擇令人驚奇?Facebook 創(chuàng)建了Cassandra,其目的就是為了建造一個收件箱類型的應用程序,但是最終他們發(fā)現(xiàn),Cassandra的一致性模型并不能很好地適用于Facebook 新的實時信息系統(tǒng)。另外,F(xiàn)acebook 還有一個擴展的MySQL 架構,不過他們發(fā)現(xiàn),當數(shù)據(jù)集和索引變大時,性能會變得讓人無法忍受。另外,他們原本可以自己開發(fā)一套系統(tǒng),但他們最終還是選擇了 HBase。
HBase是一個可以橫向擴張的表存儲系統(tǒng),能夠為大規(guī)模數(shù)據(jù)提供速度極快的低等級更新。這正是信息系統(tǒng)所需要的功能。另外,HBase是一個基于列的鍵值存儲系統(tǒng),并且是構建于 BigTabe 模型之上。HBase善于根據(jù)鍵訪問行,以及對于一系列的行進行掃描和過濾。同樣,這也是信息系統(tǒng)所需要的功能。不過,它并不支持復雜查詢。查詢通常交給分析工具處理,比如 Hive,F(xiàn)acebook創(chuàng)建了Hive,目的是處理他們容量高達多個拍字節(jié)(petabyte)的數(shù)據(jù)倉庫。同時,Hive 是基于Hadoop的文件系統(tǒng)HDFS,而HBase使用的也是這一文件系統(tǒng)。
Facebook 選擇了HBase,因為他們對他們的應用進行了監(jiān)視,并明白他們到底需要什么。他們所需要的是一個可以處理以下兩種類型的數(shù)據(jù)模式:
1. 一小組經(jīng)常變化的臨時數(shù)據(jù);
2. 一組不斷增加但很少訪問的數(shù)據(jù)。
這很有道理。當前收件箱里的郵件你只會看一次,之后你很少會再去翻看這些電子郵件。這兩種類似的數(shù)據(jù)是如此不同,所以有人也許在想應該使用兩種不同的系統(tǒng)。不過,很明顯,HBase 能夠很好地處理這兩種類型的數(shù)據(jù)。他們如何處理常規(guī)的搜索功能,尚不清楚,因為這并非 HBase 的優(yōu)勢所在,不過,HBase 可以集成多個搜索系統(tǒng)。
Facebook 系統(tǒng)的一些關鍵點:
● HBase:
○ 具有比Cassandra更簡潔的一致性模型。
○ 對于他們的數(shù)據(jù)模式具有很好的擴展能力和處理能力。
○ 大多數(shù)功能能夠滿足他們的需求:自動加載平衡和故障轉移、壓縮支持功能、單個服務器的多碎片功能等。
○ HBase 所使用的文件系統(tǒng)HDFS,支持復制、端對端校驗和,以及自動再次平衡。
○ Facebook 的運營團隊具有豐富的HDFS使用經(jīng)驗,因為Facebook是Hadoop的大用戶,而Hadoop使用 HDFS 作為它的分布式文件系統(tǒng)。
● Haystack 用于存儲附件。
● 從無到有,編寫可自定義的應用程序服務器,其目的是為了滿足多個不同來源流入的大量信息。
● 用戶發(fā)現(xiàn)服務(user discovery service)構建于 Zookeeper 之上。
● 對于以下功能可訪問架構服務:電子郵件賬號驗證、好友關系、隱私?jīng)Q策以及發(fā)送決策(通過聊天工具或短信發(fā)送一條消息?)
● 保持小團隊做大事情的一貫作風,15 位工程師在一年內發(fā)布了 20 項新的架構服務。
● Facebook將不會對單個數(shù)據(jù)庫平臺進行標準化,對于不同的任務他們將使用不同的平臺。
Facebook 通過選擇HBase將極大地推動該系統(tǒng)的采用,同時Facebook具有豐富的 HDFS/Hadoop/Hive 使用經(jīng)驗。想到這些,就讓人興奮的無法入睡。這是任何一款產(chǎn)品的夢想:成為另一個非常流行的產(chǎn)品的搭檔,并期待成為其生態(tài)系統(tǒng)的一部分。這正是 HBase 所取得的成功。HBase 已經(jīng)在許多方面去多了不錯的成績:實時、分布、線性擴展、健壯、BigData、開源、鍵值、面對列,我們將會看到 HBase 變得更加流行,尤其是它已經(jīng)獲得了 Facebook 的眷顧和青睞。
HBase是一個分布式的、面向列的開源數(shù)據(jù)庫,該技術來源于Chang et al所撰寫的Google論文“Bigtable:一個結構化數(shù)據(jù)的分布式存儲系統(tǒng)”。就像Bigtable利用了Google文件系統(tǒng)(File System)所提供的分布式數(shù)據(jù)存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的 Hadoop項目的子項目。HBase不同于一般的關系數(shù)據(jù)庫,它是一個適合于非結構化數(shù)據(jù)存儲的數(shù)據(jù)庫.另一個不同的是HBase基于列的而不是基于行的模式。HBase使用和Bigtable非常相同的數(shù)據(jù)模型。用戶存儲數(shù)據(jù)行在一個表里。一個數(shù)據(jù)行擁有一個可選擇的鍵和任意數(shù)量的列。表是疏松的存儲的,因此用戶可以給行定義各種不同的列。HBase主要用于需要隨機訪問,實時讀寫你的大數(shù)據(jù)(Big Data)。
HBase架構圖
8 樓 soaFocus 2011-01-24 17:52 引用
NameNode掛掉,集群可以完蛋了
fb可是對外宣稱一次都不會掛的!
7 樓 cwalet 2010-11-25 11:56 引用
6 樓 cysg 2010-11-25 00:56 引用
[*]
5 樓 kongzhizhen 2010-11-24 22:15 引用
4 樓 yuyue618 2010-11-24 20:17 引用
3 樓 diggywang 2010-11-22 11:12 引用
2 樓 lmxbitihero 2010-11-22 10:36 引用
1 樓 srdrm 2010-11-22 10:28 引用