一、HBase(NoSQL)的數據模型
1.1 表(table),是存儲管理數據的。
1.2 行鍵(row key),類似於MySQL中的主鍵,行鍵是HBase表天然自帶的,創建表時不需要指定
1.3 列族(column family),列的集合。
一張表中有多個行健,一個行健讀取出來的是一條記錄,列族和MySQL中的列差不多,但是它是列的集合
HBase中列族是需要在定義表時指定的,列是在插入記錄時動態增加的。
HBase表中的數據存儲在本地磁盤上的時候,每個列族單獨一個作為文件存儲。
上圖表示HBase中表的一行
和關系型數據庫不同的是
關系型數據庫一行中每一個列的值只能是一個,如:
UserId UserName
1 JChubby
而在NoSql中,一行里面某一個列的值可能是多個的,如上圖,或者:
UserId UserName
1 JChubby
Looky
其中省略了timestamp時間戳這一列,但是在NoSql中讀取這一行數據的出來時,數據應該是和關系型數據庫讀出來的是差不多的
時間戳列起到了標識列數據版本的作用,當沒有指定時間戳的時候默認取的是最新的列數據,具體請參照上圖
1.4 存儲的數據都是字節數組。
二、HBase的物理模型
2.1 HBase是適合海量數據(如20PB)的秒級簡單查詢的數據庫。
2.2 HBase表中的記錄,按照行鍵進行拆分, 拆分成一個個的region。
如:在一個有1W行健的表中,每2K個行健拆分成一個region分別存儲在不同的節點中,每個region記錄着行健的起始位置和最終位置[startkey,endkey]
許多個region存儲在region server(單獨的物理機器)中的。
這樣,對表的操作轉化為對多台region server的並行查詢。
HBase中有兩種特殊的表,分別是-ROOT和.META
.META中記錄着各個region的起止行健,當.META中的記錄很大時,又會按照相同的規則拆分成不同的region記錄中-ROOT表中
如上圖所示,當要查詢數據時,先找-ROOT表中記錄的region信息,找到對應的.META表中的region,在到實際的節點上的region查詢數據
三、HBase的體系結構
3.1 HBase是主從式結構,HMaster、HRegionServer四、HBase偽分布安裝
HBase的安裝是是建立在hadoop和zookeeper集群之上的
安裝時確保hadoop和zookeeper集群已安裝成功並啟動
4.1 解壓縮、重命名、設置環境變量
把hbase-0.94.2-security.tar.gz復制到/home/hadoop
解壓hbase-0.94.2-security.tar.gz與重命名
#cd /home/hadoop
#tar -zxvf hbase-0.94.2-security.tar.gz
#mv hbase-0.94.2-security hbase
修改/etc/profile文件。
#vi /etc/profile
增加
export HBASE_HOME=/home/hadoop/hbase
修改
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HBASE_HOME/bin
保存退出
#source /etc/profile
4.2 修改$HBASE_HOME/conf/hbase-env.sh,修改內容如下:
export JAVA_HOME=/usr/java/jdk1.6.0_45
export HBASE_MANAGES_ZK=true
第一個配置java環境變量
第二個配置在本機器上的HBase可以自己啟動zookeeper和使用
4.2 修改$HBASE_HOME/conf/hbase-site.xml,修改內容如下:
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value></property>
hbase.rootdir配置在hdfs文件系統上hbase存儲的路徑
hbase.cluster.distributed配置是否是分布式的
hbase.zookeeper.quorum配置zookeeper在哪個節點上
dfs.replication配置副本個數
注意:hbase.rootdir的主機和端口號與hadoop的配置文件core-site.xml的fs.default.name的主機和端口號一致
4.3 (可選)文件regionservers的內容為master,該文件記錄regionserver的各個節點的主機名,因為是偽分布式安裝,所只寫一個,localhost或者主機名都可以
4.4 啟動hbase,在bin目錄下執行命令start-hbase.sh
******啟動hbase之前,確保hadoop是運行正常的,並且可以寫入文件*******
4.5 驗證是否安裝成功:
(1)執行jps,發現新增加了3個java進程,分別是HMaster、HRegionServer、HQuorumPeer
(2)使用瀏覽器訪問http://master:60010,可以進入和hadoop類似的web管理頁面