開源第一彈:什么是HBASE?
在數據研究人員的工具集上有著大量的工具可以使用,這對于大數據技術,既是一件好事也是一件壞事。
當我們談論從事大數據工作所使用的工具時,絕大部分討論的會是Hadoop,Apache基金會關于Map Reduce和分布式存儲系統的實現(HDFS是由Doug Cutting 閱讀相關論文后在其供職于Yahoo時(他目前在Cloudera)建立的。但大數據工具很少單獨工作,它是一個工具和數據庫,以幫助數據研究人員能夠更有效地分析他們的集合(或只是有利于加快速度)。
其中一項技術就是HBase。HBase的是一個非關系(NoSQL的)數據庫,是Google BigTable的Java實現。它是柱狀數據庫中的一種。相對于關系數據庫基于行存儲數據,HBASE基于列存儲。
不過這說起來容易,但其究竟是什么意思。讓我們從對谷歌關于BigTable的相關文檔的研究開始:
“Bigtable是一個具有稀疏性,分布性,持續性的多維有序映射。”
讓我們深入其中,看看到底是什么意思。
稀疏
直覺上認為數據庫稀疏的定義是數據庫具有較少的數據項,但實際上,稀疏的意義是指數據庫中數據項的數據列缺乏足夠的數據。對于HBASE,之所以說它具有稀疏性,是因為它可以在其實體中容納稀疏性數據。而對于關系表,將要求您填寫的所有字段(或大部分)(想想你的關系數據庫中客戶資料表)。柱狀數據庫可以為空或NULL且不影響數據庫的功能。此外,這也給你帶來了其他好處,使你能夠快速的添加其它你想捕捉的數據。在關系數據庫中,創建一個架構(FirstName,LastName,SS#,TelephoneNumber),并希望在創建時已經得到所有你需要捕獲的數據。NoSQL數據庫無需設計過于復雜的架構,允許您根據需要在不中斷業務正常流動時添加字段。
分布式和持久化
HBase的使用HDFS(Hadoop分布式文件系統),以實現在多個商用服務器分發數據。這是Hadoop和HBase能夠處理海量數據工作的基礎。它基于另一篇關于谷歌文件系統的文章(點擊閱讀),google文件系統是Doug Cutting 建立HDFS的基礎。我們將在另一篇文章中詳細討論HDFS和DFS。
多維排序Map
一個Map(有時被稱為關聯數組)其中存儲的鍵值索引不必是整數,可以是任意的字符串。其實質是鍵值對集合,且要求鍵具有惟一性。其中鍵按照字典序排列。(需要注意的是:此處的字典序不是按字母順序排列,也不是按數字順序,而是按字符串的Unicode值進行排序)
你的得與失
使用HBase可以讓你對存儲在Hbase的數據進行預處理和后處理操作,并給予你更大的靈活性和快速處理數十億行數據的能力。不利的一面是,當您使用 HDFS的替代HBase,使用像Hive(類SQL數據檢索)那樣的工具會比在普通的HDFS慢4-5倍。此外,可以容納數據的***容量約為1 PB而不是HDFS中的30PB。
原文鏈接:www.searchdatabase.com.cn/showcontent_88365.htm