HBase数据库 及 HappyBase库

HBase概念

  • HBase是一个分布式的、面向列的开源数据库
  • HBaseGoogle BigTable的开源实现
  • HBase不同于一般的关系数据库, 适合非结构化数据存储
  • 是用来处理海量数据PB级快速实时读写的一种非关系型的数据库
  • 并发数据处理,效率极高;易于扩展,支持动态伸缩
  • HBase整合了Hadoop 的水平扩展能力和实时数据服务两方面的优势

在这里插入图片描述
注意:HBase没有复杂的数据类型,仅有字节型数据 Bytes 一种,因此在读写数据时注意只用encode 和 decode

在这里插入图片描述

HBase 数据模型

  • NameSpace: 关系型数据库的"数据库"(database)
  • 表(table):用于存储管理数据,具有稀疏的、面向列的特点。HBase中的每一张表,就是所谓的大表(Bigtable),可以有上亿行,上百万列。对于为值为空的列,并不占用存储空间,因此表可以设计的非常稀疏
  • 区域(Region):当HBase表太大时,可将表水平划分成的多个区域,划分的区域随着数据的增大而增多
    • 行(Row):在表里面,每一行代表着一个数据对象,每一行都是以一个行键(Row Key)来进行唯一标识的, 行键并没有什么特定的数据类型, 以二进制的字节来存储

      • 行键(RowKey):类似于MySQL中的主键,HBase根据行键来快速检索数据,一个行键对应一条记录。与MySQL主键不同的是,HBase的行键是天然固有(创建表示不用指定RowKey列,但填入数据是必须在列数据前写入RowKey)的,每一行数据都存在行键
    • 列(Column): HBase的列由 CF:CQ 组成

      • 列族(ColumnFamilyCF):是列的集合。列族在表定义时需要指定,而列在插入数据时动态指定。列中的数据都是以二进制形式存在,没有数据类型。在物理存储结构上,每个表中的每个列族单独以一个文件存储。一个表可以有多个列簇。
      • 列修饰符(Column QualifierCQ) : 列族中的数据通过列标识来进行映射, 可以理解为一个键值对(key-value), 列修饰符(CQ) 就是key 对应关系型数据库的列
      • 时间戳(TimeStamp):是列的一个属性,是一个64位整数。由行键和列确定的单元格,可以存储多个数据,每个数据含有时间戳属性,数据具有版本特性。可根据版本(VERSIONS)或时间戳来指定查询历史版本数据,如果都不指定,则默认返回最新版本的数据

在这里插入图片描述

HBase表由RowKey和一个或者多个列族( CF )组成,一个列族又可包含很多列(包含列修饰符CQ和列值)
HBase中,常用:行、列、键、单元格、值、行键、时间戳等术语描述

  • 行由很多列组成,全部由相同的行键引用
  • 列由列族和列修饰符组成,一个列族可以包含很多列
  • 单元格:一个列和行键确认一个单元格
  • 一个单元格可以有很多版本,由不同时间戳的版本来区分

HBase 原理

在这里插入图片描述

HMaster 服务器

HBaseMaster服务器是集群的大脑,负责下面这些操作:

  • Region分配
  • 负载均衡
  • Regionserver恢复
  • Region分裂完成监控
  • 追踪处于活动和岩机状态的服务器
    为了达到高可用性,单个集群可以有多master 。但是只能有一个master处于活动状态,负责上面的操作
    HBase Master不会有很大的负载压力,可以安装在内存和处理器核数比较小的服务器上,但是必须稳定可靠,不宕机

RegionServer

RegionServer (RS )是 托管并服务HBase region 以及HBase数据的应用程序。

  • 维护region 并 处理 region的读写请求
  • 决定井处理region 的分裂和合井,同时将信息报告给Maste

尽管 一个物理机上运行多个RegionServer在技术上是可行的,我们仍然建议在一个物理节点上运行一个RegionServer,并为其提供在两个服务器之间共享的资源。

表储存

在这里插入图片描述

读数据流程

当客户端第一次尝试从HBase卖取数据的时候,首先,它会连接zookeeper寻找master服务器,并在HBase: meta定位出region 的信息(它要查找的region 的位置信息以及RegionServer信息)。若后面同样的客户端请求同样的region ,所有这些连接zookeeper的过程都会被跳过,客户端直接跳到相关的RegionServer上获得数据。这就是为什么在可能的情况下,使用同一台机器执行多次操作的一个重要原因

REST Server

HBase 提供了REST Server API,通过该API客户端以及管理性操作能够被
执行。 Rest API能够通过HTTP请求直接被客户端应用或者命令行应用(如curl)调用。通过指定HTTP头文件中的Accept字段,你可以让REST server来返回不同格式
的结果。下面是相关格式:

  • text/plain (consult the warning note at the end of this chapter for more information)
  • text/xml
  • application/octet-stream
  • application/x-protobuf
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值