大資料生态之HBase
-
- HBase
-
- 1.介紹
- 2.hbase和Hadoop的差別
- 3.hbase的存儲機制
- HBase架構
- HBase安裝
-
- 單機模式
- 僞分布式
- 完全分布式
HBase
1.介紹
是分布式面向列的資料庫,建構在Hadoop之上,類似goole的big table技術,
對海量結構化資料的快速随機通路,提供實時讀寫
是Hadoop生态系統的一部分
2.hbase和Hadoop的差別
hdfs hbase
a.分布式檔案系統,存儲大量資料 資料庫,建構于hdfs之上
b.不支援快速單個記錄查找 支援大表的快速查找
c.提供高延遲的批處理 提供了單行記錄低延遲的随機通路(10億級别)
d.隻提供資料按序通路 内部使用hash表提供的随機通路。在hdfs上存放索引檔案,用于快速查找
3.hbase的存儲機制
1).面向列族(一組列)的資料庫,适用于海量資料的随機讀寫
2).table隻定義了列族,表是按照行存儲
3).術語
table :表,是行的集合
row :行是列族的集合
column :列族,是列的集合
column family :列,是KV鍵值對的集合
4).面向行和面向列的差別
行row 列column
a).适合于OLTP(線上事務處理) 适合于OLAP(線上分析處理)
b).針對行列較少的 适用于大表
5).hbase和RDBMS差別
hbase RDBMS
a.是無模式的,沒有列的定義 有模式的,描述整個table結構
隻定義列族,列是key
b.适合于寬表,水準可伸縮 适合于小表,難于擴充
c.沒有事務支援 事務性的
d.不是規範化的 規範化的
e.結構化和半結構化 完全結構化
HBase架構
1.master-slave主從結構
2.table從豎直方向進行切割,分成若幹個區域,由每個region server進行處理
3.master server(ms)
a.負責指派region給RS。通過zk獲得task的幫助
b.處理跨RS的region的負載均衡問題。
c.從繁忙伺服器到空閑伺服器之間的資料轉載。
d.通過裁定負載均衡判斷叢集的狀态。
4.region
被切割的表,跨RS
5.region server(rs)
和client通信
處理資料操作
處理下面所有的region的讀寫請求
通過閥值決定region size
HBase安裝
先配置ssh ,下載下傳安裝Java 、Hadoop。
1.下載下傳HBase
2.配置環境變量和Java
# tar開
tar -zxvf hbase-2.2.0-bin.tar.gz -C /usr/local/src/
# 建立軟連接配接
ln -s hbase-2.2.0/ hbase
# 配置 環境變量
vim /etc/profile.d/hbase.sh
export HBASE_HOME=/usr/local/src/hbase
export PATH=$PATH:$HBASE_HOME/bin
# 使配置檔案生效 輸出測試
source /etc/profile.d/hbase.sh
echo $HBASE_HOME
/usr/local/src/hbase
cd $HBASE_HOME/conf/
vim hbase-env.sh
export JAVA_HOME=/usr/local/jdk
單機模式
所有的hbase程序和zk都運作在同一個JVM中
vim $HBASE_HOME/conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>file:///root/hbase/root</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>file:///root/hbase/zk</value>
</property>
僞分布式
vim $HBASE_HOME/conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://s1:9000/hbase</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
完全分布式
vim $HBASE_HOME/conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://s1:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>s1,s2,s3</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
# 配置region server 類似Hadoop中的slave配置檔案
vim regionservers
s1
s2
s3
# jps指令檢視
[[email protected] conf]# xcall jps
3154 NodeManager
2739 DataNode
2485 QuorumPeerMain
3767 HMaster
3994 Jps
2620 NameNode
3052 ResourceManager
3885 HRegionServer
2959 DFSZKFailoverController
-------- s2 --------
1569 NameNode
1496 QuorumPeerMain
1659 DataNode
2253 Jps
1759 DFSZKFailoverController
1839 NodeManager
2111 HRegionServer
-------- s3 --------
1872 HRegionServer
1426 QuorumPeerMain
1493 DataNode
2012 Jps
1598 NodeManager
主節點(s1):
HMaster
HRegionServer
s2:
HRegionServer
s3:
HRegionServer
啟動成功!!!
浏覽器輸入:http://192.168.159.150:60010/master-status
檢視
同時檢視Hadoop:http://192.168.159.150:50070
hbase shell
# 進入hbase shell
# 建立表
create "stu","lie"
# 檢視表
list
# 檢視結構(描述)
describe "stu"
# 插入資料
put "stu","1","lie:name","xiaoming"
# 檢視資料是否插入成功
scan "stu"
# 退出
exit