HBase 是一個 NoSQL 資料庫
什麼是 NoSQL 資料庫?
基于 Key-value 來儲存資料
NoSQL 資料庫不支援事物
常見的 NoSQL 資料庫:
HBase: 基于 HDFS ,面向列的資料庫
表 ----> 目錄
資料 ----> 檔案
Redis: 基于記憶體的一個 NoSQL 資料庫, 支援持久化(RDB,AOF)
前身: MemCached 不支援持久化
MongoDB: 文檔型的 NoSQL 資料庫(BSON文檔,JSON的二進制)
Cassandra: 面向列的 NoSQL 資料庫
HBase 的表結構
article(表)
rowkey
内容
作者
評論
标題
正文
使用者
文章1
先有雞還是先有蛋
……
某人
噴手
雞都不造你是腫麼造的
文章……
體系結構

HBase 環境部署:
本地模式 ---1台主機: 不需要 HDFS ,直接把資料存在作業系統上
1. 安裝 JAVA 環境,修改環境變量
2. 安裝 HBase
僞分布模式---1台主機: 需要HDFS 支援,資料直接存在 HDFS 上
2. 部署 HDFS 僞分布式
3. 部署 HBase 僞分布式
全分布模式---3台主機: 需要HDFS 支援,資料直接存在 HDFS 上
2. 部署 HDFS 全分布式
3. 部署 HBase 全分布式
HA 全分布模式---3台主機
環境部署前期準備:
設定環境變量 vi ~/.bash_profile
HBASE_HOME=/root/training/hbase-1.3.1
export HBASE_HOME
PATH=$HBASE_HOME/bin:$PATH
export PATH
本地模式:
hbase-env.sh
28 export JAVA_HOME=/root/training/jdk1.8.0_144
hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>file:///root/training/hbase-1.3.1/data</value>
</property>
啟動 HBase: start-hbase.sh
僞分布模式
129 export HBASE_MANAGES_ZK=true
<value>hdfs://192.168.157.11:9000/hbase</value>
<name>hbase.cluster.distributed</name>
<value>true</value>
<name>hbase.zookeeper.quorum</name>
<value>192.168.157.11</value>
<name>dfs.replication</name>
<value>1</value>
</property>
regionservers
192.168.157.11
啟動 HBase: start-hbase.sh
全分布模式
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.157.12:9000/hbase</value>
</property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<name>hbase.zookeeper.quorum</name>
<value>192.168.157.12</value>
<name>dfs.replication</name>
<value>2</value>
</property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
</property>
192.168.157.13
192.168.157.14
scp -r hbase-1.3.1/ root@bigdata13:/root/training
scp -r hbase-1.3.1/ root@bigdata14:/root/training
HBase的HA
不需要額外配置,隻用在其中一個從節點上單點啟動Hmaster
bigdata13:hbase-daemon.sh start master
HBase Web Console網頁端口:16010
HBase 指令行操作:
進入指令行:hbase shell
檢視:
檢視表:list
查詢資料:
scan 相當于 select * from 表名
get 相當于 select * from 表名 where rowkey=?
插入資料:
put '表', ' 行', '列族:列名', '值'
put 'students', 'stu1', 'info:name', 'Tom'
清空表中的資料:
truncate '表名' ---------> 其實質就是先删除表,然後再建立
truncate 'students'
删除表:
disable '表名'
drop '表名'
本文轉自 菜鳥的征程 51CTO部落格,原文連結:http://blog.51cto.com/songqinglong/2055818