Facebook每月1350億條海量信息的存儲方案

也許你已經在一些地方看到這個消息,Facebook 已經開發一款新的社會化收件箱,集成了電子郵件、即時通訊、短信、文本信息、Facebook站內信息。最重要的是,他們需要每個月存儲 1350 億條信息。他們在哪裏存儲這些信息?Facebook的Kannan Muthukkaruppan 在《信息背後的技術》一文中給出一個令人驚奇的答案:HBase。HBase 擊敗了MySQL、Cassandra和其他一些選項,成爲了Facebook的選擇。


  爲什麼這一選擇令人驚奇?Facebook 創建了Cassandra,其目的就是爲了建造一個收件箱類型的應用程序,但是最終他們發現,Cassandra的一致性模型並不能很好地適用於Facebook 新的實時信息系統。另外,Facebook 還有一個擴展的MySQL 架構,不過他們發現,當數據集和索引變大時,性能會變得讓人無法忍受。另外,他們原本可以自己開發一套系統,但他們最終還是選擇了 HBase。

 

  HBase是一個可以橫向擴張的表存儲系統,能夠爲大規模數據提供速度極快的低等級更新。這正是信息系統所需要的功能。另外,HBase是一個基於列的鍵值存儲系統,並且是構建於 BigTabe 模型之上。HBase善於根據鍵訪問行,以及對於一系列的行進行掃描和過濾。同樣,這也是信息系統所需要的功能。不過,它並不支持複雜查詢。查詢通常交給分析工具處理,比如Hive,Facebook創建了Hive,目的是處理他們容量高達多個拍字節(petabyte)的數據倉庫。同時,Hive 是基於Hadoop的文件系統HDFS,而HBase使用的也是這一文件系統。

 

  Facebook 選擇了HBase,因爲他們對他們的應用進行了監視,並明白他們到底需要什麼。他們所需要的是一個可以處理以下兩種類型的數據模式:

  1. 一小組經常變化的臨時數據;

  2. 一組不斷增加但很少訪問的數據。

 

  這很有道理。當前收件箱裏的郵件你只會看一次,之後你很少會再去翻看這些電子郵件。這兩種類似的數據是如此不同,所以有人也許在想應該使用兩種不同的系統。不過,很明顯,HBase 能夠很好地處理這兩種類型的數據。他們如何處理常規的搜索功能,尚不清楚,因爲這並非 HBase 的優勢所在,不過,HBase 可以集成多個搜索系統。

 

  Facebook 系統的一些關鍵點:

  ● HBase:

  ○ 具有比Cassandra更簡潔的一致性模型。

  ○ 對於他們的數據模式具有很好的擴展能力和處理能力。

  ○ 大多數功能能夠滿足他們的需求:自動加載平衡和故障轉移、壓縮支持功能、單個服務器的多碎片功能等。

  ○ HBase 所使用的文件系統HDFS,支持複製、端對端校驗和,以及自動再次平衡。

  ○ Facebook 的運營團隊具有豐富的HDFS使用經驗,因爲Facebook是Hadoop的大用戶,而Hadoop使用 HDFS 作爲它的分佈式文件系統。

  ● Haystack 用於存儲附件。

  ● 從無到有,編寫可自定義的應用程序服務器,其目的是爲了滿足多個不同來源流入的大量信息。

  ● 用戶發現服務(user discovery service)構建於 Zookeeper 之上。

  ● 對於以下功能可訪問架構服務:電子郵件賬號驗證、好友關係、隱私決策以及發送決策(通過聊天工具或短信發送一條消息?)

  ● 保持小團隊做大事情的一貫作風,15 位工程師在一年內發佈了 20 項新的架構服務。

  ● Facebook將不會對單個數據庫平臺進行標準化,對於不同的任務他們將使用不同的平臺。

 

  Facebook 通過選擇HBase將極大地推動該系統的採用,同時Facebook具有豐富的 HDFS/Hadoop/Hive 使用經驗。想到這些,就讓人興奮的無法入睡。這是任何一款產品的夢想:成爲另一個非常流行的產品的搭檔,並期待成爲其生態系統的一部分。這正是 HBase 所取得的成功。HBase 已經在許多方面去多了不錯的成績:實時、分佈、線性擴展、健壯、BigData、開源、鍵值、面對列,我們將會看到 HBase 變得更加流行,尤其是它已經獲得了 Facebook 的眷顧和青睞。

 

 

  HBase是一個分佈式的、面向列的開源數據庫,該技術來源於Chang et al所撰寫的Google論文“Bigtable:一個結構化數據的分佈式存儲系統”。就像Bigtable利用了Google文件系統(File System)所提供的分佈式數據存儲一樣,HBase在Hadoop之上提供了類似於Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同於一般的關係數據庫,它是一個適合於非結構化數據存儲的數據庫.另一個不同的是HBase基於列的而不是基於行的模式。HBase使用和Bigtable非常相同的數據模型。用戶存儲數據行在一個表裏。一個數據行擁有一個可選擇的鍵和任意數量的列。表是疏鬆的存儲的,因此用戶可以給行定義各種不同的列。HBase主要用於需要隨機訪問,實時讀寫你的大數據(Big Data)。

 

(來自ZOL,原文:Facebook:HBase每月存儲1350億條信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章