2:HBase表結構:建表時,不需要指定表中的字段,隻需要指定若幹個列族,插入資料時,列族中可以存儲任意多個列(即KEY-VALUE,列名稱-列值);一個value可以有多個版本,通過版本号來區分(時間戳)
3:要查詢某一個具體的字段,需要指定坐标:表名---->行健---->列族(ColumnFamily):列名(Qualifier)---->版本;
4:HBase簡介:
HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲叢集。HBase利用Hadoop HDFS作為其檔案存儲系統,利用Hadoop MapReduce來處理HBase中的海量資料,利用Zookeeper作為協調工具。
5:HBase基本概念知識:
5.1:主鍵:Row Key :
主鍵是用來檢索記錄的主鍵,通路hbase table中的行,隻有三種方式:
(1)通過單個row key通路
(2)通過row key的range
(3)全表掃描
5.2:列族:Column Family:
列族在建立表的時候聲明,一個列族可以包含多個列,列中的資料都是以二進制形式存在,沒有資料類型。
5.3:時間戳:timestamp:
HBase中通過row和columns确定的為一個存貯單元稱為cell。每個 cell都儲存着同一份資料的多個版本。版本通過時間戳來索引;
5.4:HBase中有兩張特殊的Table,-ROOT-和.META.
(a):-ROOT- :記錄了.META.表的Region資訊,-ROOT-隻有一個region
(b):.META. :記錄了使用者建立的表的Region資訊,.META.可以有多個regoin
(c):Zookeeper中記錄了-ROOT-表的location
(d):Client通路使用者資料之前需要首先通路zookeeper,然後通路-ROOT-表,接着通路.META.表,最後才能找到使用者資料的位置去通路;
6:HBase基礎知識:
6.1:實體存儲
Table 在行的方向上分割為多個HRegion,一個region由[startkey,endkey)表示
6.2:架構體系
(a):Client 包含通路hbase 的接口,client 維護着一些cache 來加快對hbase 的通路,比如regione 的位置資訊
(b):Zookeeper
保證任何時候,叢集中隻有一個running master;
存貯所有Region 的尋址入口;
實時監控Region Server 的狀态,将Region server 的上線和下線資訊,實時通知給Master;
存儲Hbase 的schema,包括有哪些table,每個table 有哪些column family;
(c):Master 可以啟動多個HMaster,通過Zookeeper的Master Election機制保證:
總有一個Master運作
為Region server 配置設定region;
負責region server 的負載均衡;
發現失效的region server 并重新配置設定其上的region;
7:HBase的Region Server基本概念:
(a):維護Master 配置設定給它的region,處理對這些region 的IO 請求
(b):負責切分在運作過程中變得過大的region
(c):可以看出,client 通路hbase 上資料的過程并不需要master 參與,尋址通路先zookeeper再regionserver,資料讀寫通路regioneserver。HRegionServer主要負責響應使用者I/O請求,向HDFS檔案系統中讀寫資料,是HBase中最核心的子產品。
8:HBase學習前提與相關軟體:
前提條件:本機或叢集環境下hadoop.1.1.2已經安裝成功
相關軟體:
hadoop.1.1.2
hbase-0.94.2-security.tar.gz
JDK7
RHEL6.3
9:HBase Shell的學習(hbase提供了一個shell的終端給使用者互動):

名稱
指令表達式
建立表
create '表名', '列族名1','列族名2','列族名N'
檢視所有表
list
描述表
describe ‘表名’
判斷表存在
exists '表名'
判斷是否禁用啟用表
is_enabled '表名'
is_disabled ‘表名’
添加記錄
put ‘表名’, ‘rowKey’, ‘列族 : 列‘ , '值'
檢視記錄rowkey下的所有資料
get '表名' , 'rowKey'
檢視表中的記錄總數
count '表名'
擷取某個列族
get '表名','rowkey','列族'
擷取某個列族的某個列
get '表名','rowkey','列族:列’
删除記錄
delete ‘表名’ ,‘行名’ , ‘列族:列'
删除整行
deleteall '表名','rowkey'
删除一張表
先要屏蔽該表,才能對該表進行删除
第一步 disable ‘表名’ ,第二步 drop '表名'
清空表
truncate '表名'
檢視所有記錄
scan "表名"
檢視某個表某個列中所有資料
scan "表名" , {COLUMNS=>'列族名:列名'}
更新記錄
就是重寫一遍,進行覆寫,hbase沒有修改,都是追加
10:hbase資料模型:
11:hbase依賴zookeeper:
12:hbase開發:
13.hbase原理:
14.MapReduce操作Hbase:
待續......