hbase是乙個高可靠性、高效能、面向列、可伸縮的分布式儲存系統,利用hbase技術可在廉價pc server上搭建起大規模結構化儲存集群。hbase的目標是儲存並處理大型的資料,更具體來說是僅需使用普通的硬體配置,就能夠處理由成千上萬的行和列所組成的大型資料。
hbase是google bigtable的開源實現,但是也有很多不同之處。比如:google bigtable利用gfs作為其檔案儲存系統,hbase利用hadoop hdfs作為其檔案儲存系統;google執行mapreduce來處理bigtable中的海量資料,hbase同樣利用hadoop mapreduce來處理hbase中的海量資料;google bigtable利用chubby作為協同服務,hbase利用zookeeper作為對應。
1、傳統資料庫遇到的問題:
2、hbase優勢:
參考:
與nosql資料庫們一樣,row key是用來檢索記錄的主鍵。訪問hbase table中的行,只有三種方式:
row key行鍵 (row key)可以是任意字串(最大長度 是 64kb,實際應用中長度一般為 10-100bytes),在hbase內部,row key儲存為位元組陣列。儲存時,資料按照row key的字典序(byte order)排序儲存。設計key時,要充分排序儲存這個特性,將經常一起讀取的行儲存放到一起。(位置相關性)
hbase表中的每個列,都歸屬於某個列族。列族是表的schema的一部 分(而列不是),必須在使用表之前定義。列名都以列族作為字首。例如:courses:history,courses:math都屬於courses 這個列族。
hbase表中的每個列都歸屬於某個列族,列族必須作為表模式(schema)定義的一部分預先給出。如 create 『test』, 『course』;
列名以列族作為字首,每個「列族」都可以有多個列成員(column);如course:math, course:english, 新的列族成員(列)可以隨後按需、動態加入;
許可權控制、儲存以及調優都是在列族層面進行的;
hbase把同一列族裡面的資料儲存在同一目錄下,由幾個檔案儲存。
由 唯一確定的單元。cell中 的資料是沒有型別的,全部是位元組碼(位元組陣列)形式存貯。
關鍵字:無型別、位元組碼
hbase 中通過rowkey和columns確定的為乙個存貯單元稱為cell。每個 cell都儲存 著同乙份資料的多個版本。版本通過時間戳來索引。時間戳的型別是 64位整型。時間戳可以由hbase(在資料寫入時自動 )賦值,此時時間戳是精確到毫秒 的當前系統時間。時間戳也可以由客戶顯式賦值。如果應用程式要避免資料版 本衝突,就必須自己生成具有唯一性的時間戳。每個 cell中,不同版本的資料按照時間倒序排序,即最新的資料排在最前面。
為了避免資料存在過多版本造成的的管理 (包括存貯和索引)負擔,hbase提供 了兩種資料版本**方式。一是儲存資料的最後n個版本,二是儲存最近一段 時間內的版本(比如最近七天)。使用者可以針對每個列族進行設定。
名稱
命令表示式
建立表
create '表名', '列族名1','列族名2','列族名n'
檢視所有表
list
描述表
describe 『表名』
判斷表存在
exists '表名'
判斷是否禁用啟用表
is_enabled '表名'
is_disabled 『表名』
新增記錄
put 『表名』, 『rowkey』, 『列族 : 列『 , '值'
檢視記錄rowkey下的所有資料
get '表名' , 'rowkey'
檢視表中的記錄總數
count '表名'
獲取某個列族
get '表名','rowkey','列族'
獲取某個列族的某個列
get '表名','rowkey','列族:列』
或者get 『表名』 ,『行名』 , 『列族:列:tostring'
刪除記錄
delete 『表名』 ,『行名』 , 『列族:列'
刪除整行
deleteall '表名','rowkey'
刪除一張表
先要遮蔽該錶,才能對該錶進行刪除
第一步 disable 『表名』 ,第二步 drop '表名'
清空表
truncate '表名'
檢視所有記錄
scan "表名"
檢視某個表某個列中所有資料
scan "表名" ,
更新記錄
就是重寫一遍,進行覆蓋,hbase沒有修改,都是追加
操作列族:alter 'user', name => 'f2'hmaster:alter 'user', 'delete' => 'f2'
管理hregionserver
做增刪改查表的節點
管理hregionserver中的表分配
hregionserver列表:表的增刪改查資料和hdfs互動,訪問資料。
參考:
HBase基礎 HBase的資料模型
命名空間,類似於關係型資料庫的 databbase 概念,每個命名空間下有多個表。hbase 有兩個自帶的命名空間,分別是 hbase 和 default,hbase 中存放的是 hbase 內建的表,default 表是使用者預設使用的命名空間。類似於關係型資料庫的表概念。不同的是,hbase 定...
大資料HBase系列之HBase基本操作
hbase version hbase zkcli hbase shell 2.1 建立表 語法 create 表名 列族名 create student info 2.2 顯示所有表 語法 list 或 list 表名 list student 2.3 顯示表描述 語法 describe 表名 d...
hbase快速入門之 系統架構
使用hbase 的rpc 機制與hmaster 和hregionserver 進行通訊,對於管理類操作,client 與hmaster 進行rpc 對於資料讀寫類操作,client 與hregionserver 進行rpc zookeeper zookeeper quorum 中除了儲存了 root...