BKJIA經典譯文】也許你已經在一些地方看到這個訊息,Facebook 已經開發一款新的社會化收件匣,整合了電子郵件、即時通訊、簡訊、文本資訊、Facebook站內資訊。最重要的是,他們需要每個月儲存 1350 億條資訊。他們在哪裡儲存這些資訊?Facebook的Kannan Muthukkaruppan 在《資訊背後的技術》一文中給出一個令人驚奇的答案:HBase。HBase 擊敗了MySQL、Cassandra和其他一些選項,成為了Facebook的選擇。
BKJIA向您推薦《Facebook資料庫工具Flashcache初探》
為什麼這一選擇令人驚奇?Facebook 建立了Cassandra,其目的就是為了建造一個收件匣類型的應用程式,但是最終他們發現,Cassandra的一致性模型並不能很好地適用於Facebook 新的即時資訊系統。另外,Facebook 還有一個擴充的MySQL 架構,不過他們發現,當資料集和索引變大時,效能會變得讓人無法忍受。另外,他們原本可以自己開發一套系統,但他們最終還是選擇了 HBase。
HBase是一個可以橫向擴張的表格儲存體系統,能夠為大規模資料提供速度極快的低等級更新。這正是資訊系統所需要的功能。另外,HBase是一個基於列的KVStore for Redis系統,並且是構建於 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 作為它的Distributed File System。
● Haystack 用於儲存附件。
● 從無到有,編寫可自訂的應用程式伺服器,其目的是為了滿足多個不同來源流入的大量資訊。
● 使用者探索服務user discovery service)構建於 Zookeeper 之上。
● 對於以下功能可訪問架構服務:電子郵件帳號驗證、好友關係、隱私決策以及發送決策通過聊天工具或簡訊發送一條訊息?)
● 保持小團隊做大事情的一貫作風,15 位工程師在一年內發布了 20 項新的架構服務。
● Facebook將不會對單個資料庫平台進行標準化,對於不同的任務他們將使用不同的平台。
Facebook 通過選擇HBase將極大地推動該系統的採用,同時Facebook具有豐富的 HDFS/Hadoop/Hive 使用經驗。想到這些,就讓人興奮的無法入睡。這是任何一款產品的夢想:成為另一個非常流行的產品的搭檔,並期待成為其生態系統的一部分。這正是 HBase 所取得的成功。HBase 已經在許多方面去多了不錯的成績:即時、分布、線性擴充、健壯、BigData、開源、索引值、面對列,我們將會看到 HBase 變得更加流行,尤其是它已經獲得了 Facebook 的眷顧和青睞。
原文標題:Facebook's New Real-Time Messaging System: HBase To Store 135+ Billion Messages A Month
相關閱讀
HBase是一個分布式的、面向列的開來源資料庫,該技術來源於Chang et al所撰寫的Google論文“Bigtable:一個結構化資料的分布式儲存系統”。就像Bigtable利用了Google檔案系統File System)所提供的分布式資料存放區一樣,HBase在Hadoop之上提供了類似於Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同於一般的關聯式資料庫,它是一個適合於非結構化資料存放區的資料庫.另一個不同的是HBase基於列的而不是基於行的模式。HBase使用和Bigtable非常相同的資料模型。使用者儲存資料行在一個表裡。一個資料行擁有一個可選擇的鍵和任意數量的列。表是疏鬆的儲存的,因此使用者可以給行定義各種不同的列。HBase主要用於需要隨機訪問,即時讀寫你的大資料Big Data)。