HBase架构基础介绍

HBase是什么?

HBase是一个开源的非关系型分布式数据库。

为啥使用HBase?

  • HBase有超强的扩展型好吞吐量
  • 采用Key/Value存储方式,数据量增大,查询速度几乎不变
  • 列式存储,甚至可以将几个字段分别存储到不同服务器上

总之,HBase比起其他数据库并不快,只是在数据量很大时,慢的不明显。

什么时候选择HBase?

  • 单表数据量超千万,且并发还挺高。
  • 不需要灵活和实时的数据,用作数据分析的需求较弱时。

什么时候选择Mysql或Oracle?

  • 主要用来做数据分析(如:报表)
  • 单表数据量不超过千万

HBase的服务器分类

  • Master服务器
  • RegionServer服务器

Master服务器用来做什么?

维护表结构信息,Master挂掉后,可以存储数据,但不能新建表了。

所有的数据操作都会经过它,如建表、删表、移动Region、合并等操作。

RegionServer服务器用来做什么?

  • 存储数据,其数据存储在Hadoop的HDFS(分布式文件系统)中。
  • RegionServer依赖Zookeeper,客户端连接HBase都需要先与Zookeeper通信,查询出需要连接哪个RegionServer。

什么是Zookeeper?

Zookeeper是一个轻量级分布式价格集群。用来维护节点的注册、取消、维持。

Region是什么?

Region是一段数据集合,一个Region就是多个行的集合。一张表拥有一个或多个Region。
-一个RegionServer上可以有一个或多个Region,但不能有半个(Region不可分)。

  • 在HBase负载均衡的时候,可能会从一台RegionServer上把Region移动到另一台RegionServer上。
  • Region是基于HDFS接口实现的。

RegionServer是什么?

是存放Region的容器,一般来说一个服务器只装一个RegionServer。

当客户端获取到RegionServer地址后,会直接从RegionServer获取数据。

存储架构

  • HBase最基础的是列(Column),多个列构成行(row)。
  • HBase行跟行之间的列可以完全不相同,这个行跟另一行也可以存在不同的机器上(离散的),甚至行内的列也可以存在不同的机器上。
  • 一个列可以存储多个版本的单元格,单元格是数据存储的最小单元。
  • 行键(rowKey)表示行的唯一性,行键不可重复,若重复存储,则会替换掉原来的值,原来的值会放到这个单元格的历史版本中。
  • 每个列都有多个版本,多个版本的值存储在Cell中。
  • 多个列又可以被归类为一个列族。

HBase支持什么数据格式?

支持所有能被转化为byte[]的格式,如:Bigdecimal、boolean、ByteBuffer、double、float、int、long、short、String。

如何查询唯一一条记录?

行键:列族:列:版本号(rowKey:column:family:column:version)
  • 如果不写版本号,获取到的是最后一个版本数据。
  • 每一个存储语句都必须写出数据要被存储在哪一个单元格(若一行10列,存此行数据需写10行SQL)

每个列或者单元格都被赋予一个时间戳,可以由系统指定,也可以由用户指定。

列族

  • 建表要指定列族。
  • 数据块是否压缩都定义在列族上。
  • 同一个表不同的列族可以有完全不同的属性配置,一个列族内所有的列属性值一定相同
  • 列名称规范:列族:列名。如:user:username、user:password
  • HBase尽量把同一列族的所有列放在同一台机器上,若想把几列放在同一个机器上,就给其加上通一个列族。
  • 官方建议,一个表列族越少越好

Hadoop的HA模式

同时启动两个nameNode,一个工作,另一个处于后配机状态,让其只同步活跃机的数据,当活跃机宕机后,自动切换过去,这种模式称为HA模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值