Hbase體系結構與安裝java
1. Hbase版本與Hadoop版本搭配比較煩,若是版本搭配不對,就不能運行,這個能夠在百度和google中查詢相應的版本搭配shell
2. Hbase安裝:單機模式數據庫
(1)下載及解壓hbase安裝包緩存
(2) 修改conf/hbase-env.sh腳本,設置環境變量eclipse
設置JAVA_HOME環境變量分佈式
export JAVA_HOME=/usr/java/jdk1.6.00_26/ 設置jdk環境變量oop
(3) 編輯hbase-site.xml進行配置性能
先建立用於存放數據的目錄/home/grid/hbase-0.90.5/datagoogle
<configuration>.net
<property>
<name>hbase.rootdir</name>
<value>file:///home/grid/hbase-0.90.5/data</value>
</property>
</configuration>
單機模式採用的是本地文件系統模式
(4) 啓動Hbase
bin/start-hbase.sh
(5) 驗證Hmaster已經啓動
jps 查看與java有關的進程
Hmaster 進程啓動了表明成功
(6) 進入shell
bin/hbase shell
3. Hbase安裝:僞分佈模式
(1) 在單點模式的基礎上繼續
(2) 編輯hbase-env.sh增長HBASE_CLASSPATH環境變量
用於幫助hbase找到hadoop
export JAVA_HOME=/usr/java/jdk1.6.00_26/
export HBASE_CLASSPATH=/home/grid/hadoop-0.20.2/conf
(3) 編輯hbase-site.xml打開分佈模式
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.169.80.100:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
與hadoop分佈式文件系統融合
(4) 覆蓋hadoop核心jar包
這是關鍵一步,最好在網上找一份成功安裝的指南文件,不一樣的版本會有不同的地方
主要目的是防止引文hbase和hadoop版本不一樣出現兼容問題,形成hmaster啓動異常
(5) 啓動hbase
(6) 驗證啓動
4. Hbase安裝:徹底分佈模式
(1) 配置hosts,確保涉及的主機名都可解析爲ip
(2) 編輯hbase-env.xml
(3) 編輯hbase-site.xml
(4) 編輯regionservers文件
(5) 把Hbase複製到其餘節點
(6) 啓動Hbase
(7) 驗證啓動
這個能夠在網上查找徹底分佈模式安裝文檔,詳細的安裝文檔
5.Web管理界面
60010端口
6.管理操做hbase的方式
(1) Shell
在hbase的bin目錄下
./hbase shell 進入shell命令行界面
help 能夠列出各類命令出來
1) 查詢數據庫集羣狀態
status
2) 查詢數據庫版本
version
3) 建立表
create ‘member’, ‘menber_id’,’address’,’info’
表名 列族 列族 列族
4) 查看錶信息
list
describe ‘member’
5) 刪除列族:alter ,disable,enable
alter ‘member’,{NAME=>’member_id’,METHOD=>’delete’}
disable ‘member’
alter ‘member’,{NAME=>’member_id’,METHOD=>’delete’}
enable ‘member’
6) 列出全部的表
list
7) 刪除表
disable ‘temp_table’
drop ‘temp_table’
8) 查詢一個表是否存在
exists ‘member’
9) 判斷表是否enable或disable
is_enabled ‘member’
is_disabled ‘member’
10) 插入記錄
put ‘member’,’scutshuxue’,’info:age’,’24’
表名 行健
11) 獲取一個行健的全部數據
get ‘member’,’scutshuxue’
12) 獲取一個行健,一個列族的全部數據
get ‘member’,’scutshuxue’,’info’
13) 獲取一個行健,一個列族中一個列的全部數據
get ‘member’,’scutshuxue’,’info:age’
14) 更新一條記錄
put ‘member’,’scutshuxue’,’info:age’,’99’
15) 經過timestamp來獲取數據
get ‘member’,’scutshuxue’,{COLUMN=>’info:age’,TIMESTAMP=>1321586238965}
16) 刪除指定行健的字段
delete ‘member’,’temp’,’info:age’
表名 行健 列
17) 刪除整行
deleteall ‘member’,’xiaofeng’
18) 查詢表中有多少行
count ‘member’
19) 清空表
truncate ‘member’
20) 全表掃描
scan ‘member’
(2) Hbase API
《Hbase權威指南》第3-5章
用eclipse開發hbaseAPI程序大體和map-reduce程序相似
7.什麼狀況下使用Hbase?
成熟的數據分析主題,查詢模式已經確立而且不輕易改變
傳統的關係型數據庫已經沒法承受負荷,高速插入,大量讀取
適合海量的,但同時也是簡單的操做
8.應用場景
(1)場景一
1)關係型數據庫的困難
簡單的事情只要上了量就會變成無比複雜的事情
Order by耗費不少性能
大量發生,但又沒法分佈式處理
顧客須要實時看到本身的足跡,所以不能使用緩存技巧
2)Hbase迎接挑戰
天生就是面向時間戳查詢
基於行健的查詢異常快速,特別是最近的數據被放在內存的memstore裏,徹底沒有I/O開銷
分佈式化解負荷
3)模式設計
行健: userid
列族和列:book:bookid
爲了充分利用分佈式,能夠用reverse key,hash等技巧改造行健
(2)場景二:商品推薦
1) 用關係行數據庫實現
2) 使用Hbase:表設計與查詢實現
兩個表,一個是u-t,另外一個是t-u
u-t表的結構:行健爲userid,列族和列爲thread:threadid
t-u表的結構:行健爲threadid,列族和列爲user:userid
查詢:如今t-u表從threadid->userid,再在u-t表從userid->threadid ,在計算機程序中實現去重和統計功能
9.輔助索引
例子:學生表(學號,身份證號,姓名,性別,系,年齡),有時在學號上查詢,有時在身份證號上查詢
主表:行健爲學號,列族爲學生,下面的列是身份證號,姓名,性別,系,年齡
輔助(索引)表:行健爲身份證號,列族和列爲學號
10.複合鍵設計
複合鍵的好處
便於分佈(行健看起來比較隨機)
便於多條件伸縮查詢