Hbase葱岭探秘-原理与架构

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

  1. Hbase集群的主节点
  2. 为RegionServer分配Region
  3. 负责RegionServer的负载均衡
  4. 管理用户对表结构的操作
  5. 负责发现失效的RegionServer并且重新分配其上面的Region

HRegionServer

  1. 管理Region信息,处理操作Region的IO请求
  2. 负责切分过大的Region

Zookeeper

  1. 维护-ROOT-表的地址
  2. 负责维护HMaster热切换避免单点故障
  3. 监控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
HbaseWeb端访问

Hbase Shell客户端访问

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

Hbase运行状态

hbase(main):036:0> status
1 servers, 0 dead, 3.0000 average load

创建表

hbase(main):038:0* create 'siti', 'stu'
0 row(s) in 1.0320 seconds

=> Hbase::Table - siti

列出表

hbase(main):041:0> list 'siti'
TABLE
siti
1 row(s) in 0.0380 seconds

=> ["siti"]

插入数据

hbase(main):044:0> put 'siti', '20110101','stu:name', 'wy'
0 row(s) in 0.0160 seconds

查看数据

hbase(main):046:0* scan 'siti'
ROW                                         COLUMN+CELL
 20110101                                   column=stu:name, timestamp=1481005159984, value=wy
1 row(s) in 0.0130 seconds

插入性别

hbase(main):048:0* put 'siti', '20110101', 'stu:sex', 'M'
0 row(s) in 0.0090 seconds

查看该行数据

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 seconds

删除列

hbase(main):056:0* delete 'siti', '20110101', 'stu:sex'
0 row(s) in 0.2440 seconds

根据列筛选

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 seconds

多种条件进行查询

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 seconds

转载注明出处:http://blog.youkuaiyun.com/wangyang1354/article/details/53486613

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值