1 HBase
- 每条数据有唯一的标识符
rowkey
: 主键- 面向列的数据库
cell
: rowkey + columnfamily + cplumn01 + timesstamp
1.1 Table in HBase
Schema
: TableName & Column Family Name;- value is stored in column with version as
byte[]
1.2 HBase 架构
2 HBase 配置
export JAVA_HOME=/usr/apps/jdk1.8.0_181-amd64
export HBASE_MANAGES_ZK=false
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://node1:8020/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1:2181,node2:2181,node3:2181</value>
</property>
</configuration>
node1
node2
node3
2.1 启动 HBase
- 先分别在 node1,node2,node3 启动 zookeeper
zkServer.sh
- 启动 HDFS
- 启动 HBase :
start-hbase.sh
- 浏览器访问:
http://node1:60010
3 测试 HBase
hbase shell
- 创建表
hbase(main):005:0> create 'user','info'
0 row(s) in 1.3070 seconds
=> Hbase::Table - user
hbase(main):006:0> describe 'user'
Table user is ENABLED
user
COLUMN FAMILIES DESCRIPTION
{NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING
=> 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_
SCOPE => '0'}
1 row(s) in 0.0810 seconds
hbase(main):007:0> put 'user' ,'10001','info:name','Mike'
0 row(s) in 0.0830 seconds
hbase(main):008:0> put 'user' ,'10001','info:age','22'
0 row(s) in 0.0130 seconds
hbase(main):009:0> put 'user' ,'10001','info:sex','male'
0 row(s) in 0.0100 seconds
hbase(main):010:0> put 'user' ,'10001','info:addr','New York'
0 row(s) in 0.0130 seconds
3.1 HBase 的 3 种数据查询方式
- 依据 rowkey 查询,最快:
get
- 范围查询:
scan range
- 全表扫描:
scan
- 删除
4 HBase 物理模型
- Table 中的所有行都按照 row key 的字典序排列;
- Table 在行的方向上分割为多个 Region
- Region 按大小分割,每个表开始只有一个 region ,随着数据的增多,region 不断增大,当增大到一个阈值的时候,region 就会等分两个新的 region
- region 是 HBase 中分布式存储和负载均衡的最小单元,不同 region 分布到不同 RegionServer
- Region 虽然是分布式存储的最小单元,但并不是存储的最小单元。
* Region 由一个或者多个 Store 组成,每个 store 保存一个 columns family
* 每个 Store 又由一个 memStore 和 0 至多个 StoreFile 组成;
* memStore 存储在内存中,StoreFile 存储在 HDFS
5 HBase 数据写入流程
* 0) wal (hdfs)
* 1) memstore
* 2) storefile (hdfs)
6 HBase功能
- 存储数据
- 检索数据
- 海量数据,数据条目上亿
- 检索速度:准实时,秒级别
- 基于 HDFS
* 数据安全性
* 普通的商用 PC
7 HBase Region
- [startRowKey - stopRowKey )
- 默认的情况下,创建一个表时,会给一个表创建一个Region