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