一 基礎理論
Hbase是一個非分布式的,面向列的開源數據庫
基於BigTable
非結構化
存儲在HDFS上,備份機制
線性擴展
cluster / slave
Hmaster
Regionserver
Hbase架構圖:
組件功能:
Hbase數據模型:
NameSpace
Rowkey
family_columns . hbase 表中的每個列,都歸屬與某個列族。列族是表的 schema 的一部分(而列不是),必須在 使用表之前定義。 列名都以列族作為前綴。例如 courses:history , courses:math 都屬於 courses 這個列族。 訪問控制、磁盤和內存的使用統計都是在列族層面進行的。列族越多,在取一行數據時所要參與 IO、搜尋的文件就越多,所以,如果沒有必要,不要 設置太多的列族
(每個列族存放在不同的文件中,建表時列族越少越好)
TimeStamp
cell 沒有數據類型,都是字節碼的形式, cell有多版本,Rowket和列唯一確定cell,cell的版本通過時間戳來索引
為了避免數據存在過多版本造成的的管理 (包括存貯和索引)負擔, hbase 提供了兩種數據版 本回收方式:
保存數據的最后 n 個版本
保存最近一段時間內的版本(設置數據的生命周期 TTL)。
用戶可以針對每個列族進行設置。
二 基本操作
列出所有表:list
創建表:第一種:列族設置默認屬性 create 'userInfo', 'baseInfo', 'extrInfo'
第二種:設置列族屬性 create 'userInfo', { NAME => 'baseInfo', VERSIONS => 3 }, { NAME => 'extrInfo', VERSIONS => 2}
增加刪除列族:(在表有數據的情況下,要先disable表,才能alter)
增加:alter 'userInfo', 'add_family'
alter 'userInfo', { NAME => 'add_new', VERSIONS => 3 }
刪除:alter 'userInfo', 'delete'=> 'add_family'
alter 'userInfo', { NAME => 'add_new', METHOD => 'delete' }
表失效:is_disable 判斷表是否失效
is_enable 判斷表是否有效
disable 使表失效
enable 使表生效
刪除表:drop 'userInfo' (刪除之前要先disable)
插入數據:可以指定時間戳
put 'user_info', 'rk001', 'base_info:name', 'Rose'
put 'user_info', 'rk001', 'base_info:age', 20, 1535359300000
查詢數據:
get : 指定rowkey查詢單條數據
scan:指定條件,獲取批量數據
詳情見 help 指定
刪除數據:指定 rowkey ,指定時間戳
清空表數據:truncate 'user_info'
