Please enable JavaScript.
Coggle requires JavaScript to display documents.
CH2.2.2 HBase表的知識基礎 (HBase操作 (Delete標記已被刪除的數據 (Delete用於刪除行鍵對應的行信息,…
CH2.2.2
HBase表的知識基礎
HBase表:概念視圖
列是用列族和列名(修飾符Qualifier)進行描述的
列族設計原則
不經常再一起訪問的數據一般會分開設計到不同的列族
使用不同列族設置選項的數據需要分開設計到不同列族(如:是否啟用存儲壓縮特性)
HBase操作
Put用於插入數據
Put實現插入由行鍵確定的一個新行
可以多次調用Put,實現插入不同行鍵的多行內容
Delete標記已被刪除的數據
Delete用於刪除行鍵對應的行信息
數據在HDFS上被標記為刪除但並不會物理刪除
後續對HDFS上的標記為刪除的數據進行物理刪除
Get/Scan用於檢索數據
Get用於使用行鍵檢索特定行
Scan用於掃描檢索所有行
Scan可以檢索start row key和end row key範圍內的所有行信息
Increment實現原子計數器
Cell存儲的值為64位整數(long)
Increment 可以設置初始值或自增
原子性確保從多個客戶端併發訪問的時候,不用擔心尤其他進程寫入導致數據損壞的問題
HBase所有的行由行鍵確定
類似於關係型數據庫中的主鍵
HBase Table在磁盤上的存儲方式
基於每一個列族物理存儲在磁盤上
空Cell不存儲
關於HBase表
分布式
HBase設計為使用多個機器來存儲以及對外提供表的數據服務
有序的映射(map)
映射(map)
將鍵映射到值的對象
鍵值對
HBase將表數據存儲為映射,並保證相臨的鍵在磁盤上彼此相鄰地存儲
HBase表本質上是一個分布式、有序的映射(map)
應用程序數據舉例
數據使用方式
使用『用戶名』字段訪問數據
不是每一個字段都有值
原因1. 將數據存儲到一個給定字段的應用程序沒有運行
原因2. 用戶可能會選擇不提供所有的信息
樣例表需要包含的信息
檔案照片
用戶登錄信息,如用戶名和密碼
用戶聯繫信息
用於多個應用程序的設置或首選項
重點關注聯繫信息和檔案照片
聯繫信息
姓氏
姓名
檔案照片
用戶上傳的圖像
HBase表基本概念
行(Row)
表是由行、列、和列族構成
每行(Row)有一個行鍵(Row Key)
行鍵(row key)類似於傳統關係型數據庫的主鍵
行(Row)按照行鍵(row key)排序後進行存儲,提升數據檢索效率
列(Columns)
列中包含表的數據
列可以實時動態地創建
只有當行有數據的時候列才存在
單元Cells
行和列的交叉點稱之為Cell
Cell為空時不會被存儲
Cell的內容是不可分割的字節數組
Cell是版本化的
每個列在HBase表中都屬於一個特定的列族
列族是列的一個集合
表可以有一個或多個列族
在創建表的時候進行定義
HBase的列和列族
可以為每個列族指定存儲屬性和進行調優設置
例如. 每個Cell存儲的版本數量
列族可以有任意數量的列
列族中的排序後存儲在一起
屬於同一個列族的所有列前綴相同
例如. contactinfo:fname和contactinfo:lname
":"是列族和修飾符Qualifier(列名)之間的分隔符
存儲數據
字節數組(byte arrays)存儲格式
任何能轉成字節數組的內容都可以存儲在HBase表中
字符串
數字
複雜對象
圖像
......
單元(Cells)大小
限制值的實際大小
大小一般不超過10MB
列族中的數據存儲
行鍵+列+時間戳-->值
行鍵和值是字節形式
可以存儲任何可序列化為一個字節數組的內容