Quantcast
Channel: CodeSection,代码区,数据库(综合) - CodeSec
Viewing all articles
Browse latest Browse all 6262

Hbase葱岭探秘-原理与架构

$
0
0

Hbase是什么

Hbase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

Hbase主要概念

RowKey :行键,是每个记录的“主键”

Column Family :列族,Column:列

列族中包含了多个列的信息,例如:col1:name,col1:sex等

Version Number :控制版本数量

Hbase数据模型


Hbase葱岭探秘-原理与架构

上图的示例中展示了一个转换后的Hbase的数据库存储的数据模型,行键标识了一行,不同的时间戳下存在多个版本的数据,且当前列族分为三个:contents、anchor、mime三个列族,其中anchor列族中存在两个列:cnnsi.com和my.lock.ca

Hbase架构设计


Hbase葱岭探秘-原理与架构

Client

client主要为用户提供使用Hbase的接口

HMaster

Hbase集群的主节点

为RegionServer分配Region

负责RegionServer的负载均衡

管理用户对表结构的操作

负责发现失效的RegionServer并且重新分配其上面的Region

HRegionServer

管理Region信息,处理操作Region的IO请求

负责切分过大的Region

Zookeeper

维护-ROOT-表的地址

负责维护HMaster热切换避免单点故障

监控HRegionServer的上线和下线的信息

Hbase查询数据过程


Hbase葱岭探秘-原理与架构

1. 访问ZooKeeper查找-ROOT-表的地址

2. 根据该表存在的地址,查询-ROOT-表,该表中存储着.META.表的映射地址

3. 根据.META.表的映射地址找到.META.表中对应的Region的地址和RegionServer的地址

4. 根据Region的地址访问想要的数据

5. 上述的过程为基本流程,但是Hbase对其进行了优化,在客户端进行缓存Region的地址信息,这样,当多次操作同一个Region的数据时就不需要从头开始寻址了,当然,为了能及时的发现地址的变更,缓存的地址信息会在一定的时间后失效。如果再次获取该Region的数据,那么需要经历以上的几次过程。

Hbase Web端访问

通过60010端口进行访问

http://hostname:60010


Hbase葱岭探秘-原理与架构

Hbase Shell客户端访问

这里简单写一些常用的,后面主键丰富

Hbase运行状态

hbase(main):036:0> status

1 servers, 0 dead, 3.0000 average load1212

创建表

hbase(main):038:0* create 'siti', 'stu'

0 row(s) in 1.0320 seconds

=> Hbase::Table - siti

1234512345

列出表

hbase(main):041:0> list 'siti'

TABLE

siti

1 row(s) in 0.0380 seconds

=> ["siti"]

12345671234567

插入数据

hbase(main):044:0> put 'siti', '20110101','stu:name', 'wy'

0 row(s) in 0.0160 seconds1212

查看数据

hbase(main):046:0* scan 'siti'

ROW COLUMN+CELL

20110101 column=stu:name, timestamp=1481005159984, value=wy

1 row(s) in 0.0130 seconds

1234512345

插入性别

hbase(main):048:0* put 'siti', '20110101', 'stu:sex', 'M'

0 row(s) in 0.0090 seconds1212

查看该行数据

hbase(main):054:0* get 'siti', '20110101'

COLUMN CELL

stu:name timestamp=1481005159984, value=wy

stu:sex timestamp=1481005286497, value=M

2 row(s) in 0.0130 seconds1234512345

删除列

hbase(main):056:0* delete 'siti', '20110101', 'stu:sex'

0 row(s) in 0.2440 seconds1212

根据列筛选

hbase(main):059:0> scan 'siti',{COLUMNS=>'stu:name'}

ROW COLUMN+CELL

20110101 column=stu:name, timestamp=1481005159984, value=wy

1 row(s) in 0.0300 seconds12341234

多种条件进行查询

hbase(main):062:0> scan 'siti',{COLUMNS=>'stu:name', VERSIONS=>10, TIMERANGE=>[1481005159981, 1481005159989]}

ROW COLUMN+CELL

20110101 column=stu:name, timestamp=1481005159984, value=wy

1 row(s) in 0.0160 seconds1234


Hbase葱岭探秘-原理与架构

Viewing all articles
Browse latest Browse all 6262

Latest Images

Trending Articles