當前位置:
首頁 > 最新 > Hbase資料庫檢索性能優化策略

Hbase資料庫檢索性能優化策略

HBase 數據表介紹

HBase 資料庫是一個基於分散式的、面向列的、主要用於非結構化數據存儲用途的開源資料庫。其設計思路來源於 Google 的非開源資料庫」BigTable」。

HDFS 為 HBase 提供底層存儲支持,MapReduce 為其提供計算能力,ZooKeeper 為其提供協調服務和 failover(失效轉移的備份操作)機制。Pig 和 Hive 為 HBase 提供了高層語言支持,使其可以進行數據統計(可實現多表 join 等),Sqoop 則為其提供 RDBMS 數據導入功能。

HBase 不能支持 where 條件、Order by 查詢,只支持按照主鍵 Rowkey 和主鍵的 range 來查詢,但是可以通過 HBase 提供的 API 進行條件過濾。

HBase 的 Rowkey 是數據行的唯一標識,必須通過它進行數據行訪問,目前有三種方式,單行鍵訪問、行鍵範圍訪問、全表掃描訪問。數據按行鍵的方式排序存儲,依次按位比較,數值較大的排列在後,例如 int 方式的排序:1,10,100,11,12,2,20…,906,…。

ColumnFamily 是「列族」,屬於 schema 表,在建表時定義,每個列屬於一個列族,列名用列族作為前綴「ColumnFamily:qualifier」,訪問控制、磁碟和內存的使用統計都是在列族層面進行的。

Cell 是通過行和列確定的一個存儲單元,值以位元組碼存儲,沒有類型。

Timestamp 是區分不同版本 Cell 的索引,64 位整型。不同版本的數據按照時間戳倒序排列,最新的數據版本排在最前面。

Hbase 在行方向上水平劃分成 N 個 Region,每個表一開始只有一個 Region,數據量增多,Region 自動分裂為兩個,不同 Region 分布在不同 Server 上,但同一個不會拆分到不同 Server。

Region 按 ColumnFamily 劃分成 Store,Store 為最小存儲單元,用於保存一個列族的數據,每個 Store 包括內存中的 memstore 和持久化到 disk 上的 HFile。

圖 1 是 HBase 數據表的示例,數據分布在多台節點機器上面。

HBase 調用 API 示例

類似於操作關係型資料庫的 JDBC 庫,HBase client 包本身提供了大量可以供操作的 API,幫助用戶快速操作 HBase 資料庫。提供了諸如創建數據表、刪除數據表、增加欄位、存入數據、讀取數據等等介面。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 麥克叔叔每晚10點說 的精彩文章:

Spark 入門之 Scala 語言解釋及示例講解

TAG:麥克叔叔每晚10點說 |