November 2008 Archives

HBase 介紹

|
Hadoop 除了擁有分散式的運算平台之外,底層還有一個適合循序式、批次存取的檔案系統(HDFS),當然大家就不會就此滿足。既然 Google 用自家的分散式檔案系統做了一個用來存放結構化資料的 BigTable,為甚麼不也用 Hadoop 的 HDFS 做一個出來呢?

於是,兩年前在兩位 Powerset 工程師(Jim Kellerman 跟 Michael Stack)的號召下,在 Hadoop 的 contrib 計畫中多出了 HBase 這個跟 BigTable 採用類似設計的分散式結構化資料的儲存系統。

簡單的說,HBaseBigTable 一樣,有別於一般資料庫系統用的 row-oriented 儲存方式,這兩個系統都是 column-oriented 的儲存方式。Column-oriented 的好處是每一筆資料可以存放不固定欄位的東西,不像 row-oriented 的存法,增加一個新的欄位需要多花些力氣才能達成。與 BigTable 相同的是 HBase 底層也是使用了分散式的檔案系統 (Hadoop 的 HDFS),並且也將一個資料表拆成很多份,由不同的伺服器負責該部份的存取,藉此達到高效能。

在寫入資料的時候,HBaseBigTable 一樣,都是先寫到記憶體中的 MemCache,並且有 Write-Ahead Log 以防意外發生時可以做復原的動作。每隔一段時間,或者 MemCache 累積到一定程度,HBase 就會把資料寫入檔案系統中。因此,HBase 可以提供相當高速的寫入。讀取的時候,也是先去找 MemCache 後再去找檔案系統,而藉由將一個大大的表拆成很多份的技巧,也提昇了讀取的速度。

HBase 本身跟 Hadoop 一樣用 Java 撰寫,但透過 Thrift 的支援(Thrift 是一套由 Facebook 所開發,提供跨語言做資料交換的平台),你可以用任何 Thrift 有支援的語言,像是PHP/Perl/Ruby/Python 等來存取 HBase

上個月21號在 Rapleaf.com 有舉辦一場 Hadoop 技術研討會, 有幾個重要的 Topic 摘要如下:

  1. The Collector - Multi-Writer Appends into HDFS
    by Bryan Duxbury, Software Engineer at Rapleaf
    http://www.vimeo.com/2084824
  2. Katta - 運行環境中的分散式 lucene 索引
    by Stefan Groshupf, Founder/CTO at 101tec Inc. and Co-Founder at Scale Unlimited Inc.
    http://www.vimeo.com/2085140
  3. MapReduce 應用程式除錯和調教
    by Arun C Murthy, Principal Engineer at Yahoo! and Member of Apache Hadoop PMC
    http://www.vimeo.com/2085477

由於不管是在分散式系統或是平行處理系統上面開發程式, 其除錯遠比開發一般程式來的複雜許多,  這篇 MapReduce 應用程式除錯和調教 對於在已經或是打算在 Hadoop 上開發的人來說都是篇很不錯的參考文件.