大数据之HBase教程
自1970年以來,關系數據庫用于數據存儲和維護有關問題的解決方案。大數據的出現后,好多公司實現處理大數據并從中受益,并開始選擇像?Hadoop?的解決方案。
Hadoop使用分布式文件系統,用于存儲大數據,并使用MapReduce來處理。Hadoop擅長于存儲各種格式的龐大的數據,任意的格式甚至非結構化的處理。
Hadoop的限制
Hadoop只能執行批量處理,并且只以順序方式訪問數據。這意味著必須搜索整個數據集,即使是最簡單的搜索工作。
當處理結果在另一個龐大的數據集,也是按順序處理一個巨大的數據集。在這一點上,一個新的解決方案,需要訪問數據中的任何點(隨機訪問)單元。
Hadoop隨機存取數據庫
應用程序,如HBase, Cassandra, couchDB, Dynamo 和?MongoDB?都是一些存儲大量數據和以隨機方式訪問數據的數據庫。
HBase是什么?
HBase是建立在Hadoop文件系統之上的分布式面向列的數據庫。它是一個開源項目,是橫向擴展的。
HBase是一個數據模型,類似于谷歌的大表設計,可以提供快速隨機訪問海量結構化數據。它利用了Hadoop的文件系統(HDFS)提供的容錯能力。
它是Hadoop的生態系統,提供對數據的隨機實時讀/寫訪問,是Hadoop文件系統的一部分。
人們可以直接或通過HBase的存儲HDFS數據。使用HBase在HDFS讀取消費/隨機訪問數據。 HBase在Hadoop的文件系統之上,并提供了讀寫訪問。
HBase 和 HDFS
| HDFS是適于存儲大容量文件的分布式文件系統。 | HBase是建立在HDFS之上的數據庫。 |
| HDFS不支持快速單獨記錄查找。 | HBase提供在較大的表快速查找 |
| 它提供了高延遲批量處理;沒有批處理概念。 | 它提供了數十億條記錄低延遲訪問單個行記錄(隨機存取)。 |
| 它提供的數據只能順序訪問。 | HBase內部使用哈希表和提供隨機接入,并且其存儲索引,可將在HDFS文件中的數據進行快速查找。 |
HBase的存儲機制
HBase是一個面向列的數據庫,在表中它由行排序。表模式定義只能列族,也就是鍵值對。一個表有多個列族以及每一個列族可以有任意數量的列。后續列的值連續地存儲在磁盤上。表中的每個單元格值都具有時間戳??傊?#xff0c;在一個HBase:
- 表是行的集合。
- 行是列族的集合。
- 列族是列的集合。
- 列是鍵值對的集合。
下面給出的表中是HBase模式的一個例子。
| 1 | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
| 2 | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
| 3 | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
面向列和面向行
面向列的數據庫是存儲數據表作為數據列的部分,而不是作為行數據。總之它們擁有列族。
| 它適用于聯機事務處理(OLTP)。 | 它適用于在線分析處理(OLAP)。 |
| 這樣的數據庫被設計為小數目的行和列。 | 面向列的數據庫設計的巨大表。 |
下圖顯示了列族在面向列的數據庫:
HBase 和 RDBMS
| HBase無模式,它不具有固定列模式的概念;僅定義列族。 | RDBMS有它的模式,描述表的整體結構的約束。 |
| 它專門創建為寬表。 HBase是橫向擴展。 | 這些都是細而專為小表。很難形成規模。 |
| 沒有任何事務存在于HBase。 | RDBMS是事務性的。 |
| 它反規范化的數據。 | 它具有規范化的數據。 |
| 它用于半結構以及結構化數據是非常好的。 | 用于結構化數據非常好。 |
HBase的特點
- HBase線性可擴展。
- 它具有自動故障支持。
- 它提供了一致的讀取和寫入。
- 它集成了Hadoop,作為源和目的地。
- 客戶端方便的Java API。
- 它提供了跨集群數據復制。
在哪里可以使用HBase?
- Apache HBase曾經是隨機,實時的讀/寫訪問大數據。
- 它承載在集群普通硬件的頂端是非常大的表。
- Apache HBase是此前谷歌Bigtable模擬非關系型數據庫。 Bigtable對谷歌文件系統操作,同樣類似Apache HBase工作在Hadoop HDFS的頂部。
HBase的應用
- 它是用來當有需要寫重的應用程序。
- HBase使用于當我們需要提供快速隨機訪問的數據。
- 很多公司,如Facebook,Twitter,雅虎,和Adobe內部都在使用HBase。
HBase 歷史
| Nov 2006 | 谷歌公布 BigTable 文件。 |
| Feb 2007 | 最初的HBase原型創建由?Hadoop?貢獻。 |
| Oct 2007 | 隨著Hadoop 0.15.0,第一個可用的HBase也發布了。 |
| Jan 2008 | HBase成為?Hadoop 的子項目。 |
| Oct 2008 | HBase 0.18.1 發布。 |
| Jan 2009 | HBase 0.19 發布。 |
| Sept 2009 | HBase?0.20.0?發布。 |
| May 2010 | HBase 成為 Apache 的頂級項目。 |
?
領取相關視頻或源碼資料掃描下方微信二維碼:
總結
以上是生活随笔為你收集整理的大数据之HBase教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux中怎么测试i o,[linux
- 下一篇: 【Python】直接赋值、浅拷贝和深度拷