HBase的基本概念
HBase:
被稱為NoSQL資料庫。它提供了鍵值API,儘管有些變化,與其他鍵值資料庫有些不同。它承諾強一致性,所以客戶端能夠在寫入後馬上看到資料。HBase執行在多個節點組成的叢集上,而不是單臺機器。它對客戶端隱藏了這些細節。你的應用程式碼不需要知道它在訪問1個還是100個節點,對每個人來說事情變得簡單了。HBase被設計用來處理TB到PB級資料,它為這種場景做了優化。它是Hadoop生態系統的一部分,依靠Hadoop其他元件提供的重要功能,例如資料冗餘和批處理。
HBase已經是Apache頂級專案,有著眾多的開發人員和興旺的使用者社群。它成為一個核心的基礎架構部件,執行在世界上許多公司(如StumbleUpon、Trend Micro、Facebook、Twitter、Salesforce和Adobe)的大規模生產環境中。
看看現在HBase是如何使用的,人們用它構建了什麼型別的應用系統。
Hbase使用的幾種場景:
- 使用HBase作為資料儲存,抓取來自各種資料來源的增量資料。
例如,這種資料來源可能是網頁爬蟲(我們討論過的BigTable典型問題),可能是記錄使用者看了什麼廣告和看了多長時間的廣告效果資料,也可能是記錄各種引數的時間序列資料。
1.抓取監控指標:OpenTSDB
服務數百萬使用者的基於Web的產品的後臺基礎設施一般都有數百或數千臺伺服器。這些伺服器承擔了各種功能——服務流量,抓取日誌,儲存資料,處理資料,等等。
一些公司使用商業工具來收集和展示監控指標,而另外一些公司採用開源框架。
StumbleUpon建立了一個開源框架,用來收集伺服器的各種監控指標。按照時間收集監控指標一般被稱為時間序列資料,也就是說,按照時間順序收集和記錄的資料。StumbleUpon的開源框架叫做OpenTSDB,它是Open Time Series Database(開放時間序列資料庫)的縮寫。這個框架使用HBase作為核心平臺來儲存和檢索所收集的監控指標。建立這個框架的目的是為了擁有一個可擴充套件的監控資料收集系統,一方面能夠儲存和檢索監控指標資料並儲存很長時間,另一方面如果需要增加功能也可以新增各種新監控指標。StumbleUpon使用OpenTSDB監控所有基礎設施和軟體,包括HBase叢集自身。
2.抓取使用者互動資料:Facebook和StumbleUpon
抓取監控指標是一種使用方式。還有一種是抓取使用者互動資料。如何跟蹤數百萬使用者在網站上的活動?怎麼知道哪一個網站功能最受歡迎?怎樣使得這一次網頁瀏覽直接影響到下一次?例如,誰看了什麼?某個按鈕被點選了多少次?還記得Facebook和Stumble裡的Like按鈕和StumbleUpon裡的+1按鈕嗎?是不是聽起來像是一個計數問題?每次使用者喜歡一個特定主題,計數器增加一次。
StumbleUpon在開始階段採用的是MySQL,但是隨著網站服務越來越流行,這種技術選擇遇到了問題。急劇增長的使用者線上負載需求遠遠超過了MySQL叢集的能力,最終StumbleUpon選擇使用HBase來替換這些叢集。當時,HBase產品不能直接提供必需的功能。StumbleUpon在HBase上做了一些小的開發改動,後來將這些開發工作貢獻回了專案社群。
FaceBook使用HBase的計數器來計量人們喜歡特定網頁的次數。該系統每天處理數百億條事件,記錄數百個監控指標。
3.遙測技術:Mozilia和Trend Micro
軟體執行資料和軟體質量資料,不像監控指標資料那麼簡單。例如,軟體崩潰報告是有用的軟體執行資料,經常用來探究軟體質量和規劃軟體開發路線圖。HBase可以成功地用來捕獲和儲存用戶計算機上生成的軟體崩潰報告。
Mozilla基金會負責FireFox網路瀏覽器和Thunderbird電子郵件客戶端兩個產品。這些工具安裝在全世界數百萬臺計算機上,支援各種作業系統。當這些工具崩潰時,會以Bug報告的形式返回一個軟體崩潰報告給Mozilla。Mozilla如何收集這些資料?收集後又是怎麼使用的呢?實際情況是這樣的,一個叫做Socorro的系統收集了這些報告,用來指導研發部門研製更穩定的產品。Socorro系統的資料儲存和分析建構在HBase上。
使用HBase,基本分析可以用到比以前多得多的資料。這種分析用來指導Mozilla的開發人員,使其更為專注,研製出Bug最少的版本。
Trend Micro為企業客戶提供網際網路安全和入侵管理服務。安全的重要環節是感知,日誌收集和分析對於提供這種感知能力是至關重要的。Trend Micro使用HBase來管理網路信譽資料庫,該資料庫需要行級更新和支援MapReduce批處理。有點像Mozilla的Socorro系統,HBase也用來收集和分析日誌活動,每天收集數十億條記錄。HBase中靈活的資料模式允許資料結構出現變化,當分析流程重新調整時,Trend Micro可以增加新屬性。
4.廣告效果和點選流
過去十來年,線上廣告成為網際網路產品的一個主要收入來源。先提供免費服務給使用者,在使用者使用服務的時侯投放廣告給目標使用者。這種精準投放需要針對使用者互動資料做詳細的捕獲和分析,以便理解使用者的特徵。基於這種特徵,選擇並投放廣告。精細的使用者互動資料會帶來更好的模型,進而導致更好的廣告投放效果,並獲得更多的收入。但這類資料有兩個特點:它以連續流的形式出現,它很容易按使用者劃分。理想情況下,這種資料一旦產生就能夠馬上使用,使用者特徵模型可以沒有延遲地持續優化,也就是說,以線上方式使用。
線上系統與離線系統術語
線上系統需要低延遲。某些情況下,系統哪怕給出沒有答案的響應,也要比花了很長時間給出正確答案的響應好。你可以把線上系統想象為一個跳著腳的沒有耐心的使用者。離線系統不需要低延遲,使用者可以等待答案,不期待馬上給出響應。當實現應用系統時,線上或者離線的目標影響著許多技術決策。HBase是一個線上系統。和Hadoop MapReduce的緊密結合又賦予它離線訪問的能力。
- 內容服務
使用者消費內容(user consuming content),另外一個完全不同的使用場景是使用者生成內容(user generate content)。Twitter帖子、Facebook帖子、Instagram圖片和微博等都是這樣的例子。
它們的相同之處是使用和生成了許多內容。大量使用者通過應用系統來使用和生成內容,而這些應用系統需要HBase作為基礎。
- 資訊交換
參考《Hbase實戰》