Hbase学习二:Hbase数据特点和架构特点

hbase,学习,数据,特点,架构 · 浏览次数 : 147

小编点评

**HBase 数据特点** * 一张表可以有上亿行,上百万列。 * 面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。 * 稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。 * 无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。 * 数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。 **HBase 的数据结构** * HBase 可以作为一个数据库使用,但是为了应对海量数据,他存储数据的方式 与我们理解的传统关系型数据库有很大的区别。 * 虽然他也有表、列这样的逻辑结构,但是整体上,他是以一种k-v键值对的方式来存储数据的: *纵向来看,HBase中的每张表由Rowkey和若干个列族或称为列簇组成。 *其中 Rowkey是每一行数据的唯一标识,在对数据进行管理时,必须自行保证Rowkey的唯一性。 *接下来HBase依然会以不同的列来管理数据,但是这些列分别归属于不同 的列簇。 * 在HBase中,同一张表的数据,只需要保证列簇是相同的,而列簇下的 列,可以是不相同的。 **HBase 的基础架构** * HBase中的组件包括Client、Zookeeper、HMaster、HRegionServer、HRegion、Store、MemStore、StoreFile、HFile、HLog等。 * 其中,client客户端包含了访问HBase的接口,另外也维护了对应的缓存来加速对 HBase的访问。 * RegionServer直接对接用户的读写请求,是真正干活的节点。他会将数据以 StoreFile的形式存储到不同的HDFS目录中。 * HMaster主要是维护一些集群的元数据信息,同时监控RegionServer的服务状 态,并且通过Zookeeper提供集群服务,向客户端暴露集群的服务端信息

正文

转载请注明出处: 

1.Hbase数据特点

  • 大:一个表可以有上亿行,上百万列。

  • 面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。

  • 稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。

  • 无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。

  • 数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。

  • 数据类型单一:HBase中的数据都是字符串,没有类型。

2.HBase的数据结构

  HBase也可以作为一个数据库使用,但是为了应对海量数据,他存储数据的方式 与我们理解的传统关系型数据库有很大的区别。虽然他也有表、列这样的逻辑结 构,但是整体上,他是以一种k-v键值对的方式来存储数据的:

  

  纵向来看,HBase中的每张表由Rowkey和若干个列族或者称为列簇组成。其中 Rowkey是每一行数据的唯一标识,在对数据进行管理时,必须自行保证Rowkey的 唯一性。接下来HBase依然会以不同的列来管理数据,但是这些列分别归属于不同 的列簇。在HBase中,同一张表的数据,只需要保证列簇是相同的,而列簇下的 列,可以是不相同的。所以由此可以扩展出非常多的列。在HBase中,对于同一张 表,不建议定义过多的列簇,通常不要超过三个。而更多的数据,可以以列的方式 来扩展。

  从横向来看,HBase中的记录,会划分为一个一个的Region,存储在不同的 RegionServer上。并且会在不同的RegionServer之前形成备份,以Region为单位 提供了故障后自动恢复的机制。

  最后,从整体来看,HBase虽然还是以HDFS作为文件存储,但是他存储的数据不 再是简单的文本文件,而是经过HBase优化压缩过的二进制文件,所以他的存储文 件通常是不能够直接查看的。

2.1 Row Key

与 NoSQL 数据库一样,Row Key 是用来检索记录的主键。访问 HBase table 中的行,只有三种方式:

  • 通过单个 Row Key 访问。

  • 通过 Row Key 的 range 全表扫描。

  • Row Key 可以使任意字符串(最大长度是64KB,实际应用中长度一般为 10 ~ 100bytes),在HBase 内部,Row Key 保存为字节数组。

  在存储时,数据按照 Row Key 的字典序(byte order)排序存储。设计 Key 时,要充分排序存储这个特性,将经常一起读取的行存储到一起(位置相关性)。

  注意 字典序对 int 排序的结果是 1,10,100,11,12,13,14,15,16,17,18,19,20,21,…, 9,91,92,93,94,95,96,97,98,99。要保存整形的自然序,Row Key 必须用 0 进行左填充。

  行的一次读写是原子操作(不论一次读写多少列)。这个设计决策能够使用户很容易理解程序在对同一个行进行并发更新操作时的行为。

  RowKey的作用可以归纳如下两点:

  Hbase在读写数据时需要通过RowKey找到对应的Region;MemStore和HFile中的数据都是按照 RowKey 的字典序排序。在HBase中,一个Region就相当于一个数据分片,每个Region都有StartRowKey和StopRowKey(用来表示 Region存储的RowKey的范围),HBase表里面的数据是按照RowKey来分散存储到不同的Region里面的。

  而将数据记录均衡的分散到不同的Region中**避免热点现象**就是RowKey最主要的作用。

2.2 列族

  HBase 表中的每个列都归属于某个列族。列族是表的 Schema 的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀,例如 courses:history、courses:math 都属于 courses 这个列族。

  访问控制、磁盘和内存的使用统计都是在列族层面进行的。在实际应用中,列族上的控制权限能帮助我们管理不同类型的应用, 例如,允许一些应用可以添加新的基本数据、一些应用可以读取基本数据并创建继承的列族、 一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)。

3.HBase的基础架构

  

  从HBase的架构图上可以看出,HBase中的组件包括Client、Zookeeper、HMaster、HRegionServer、HRegion、Store、MemStore、StoreFile、HFile、HLog等;

  其中,

  • client客户端包含了访问HBase的接口,另外也维护了对应的缓存来加速对 HBase的访问。
  • RegionServer直接对接用户的读写请求,是真正干活的节点。他会将数据以 StoreFile的形式存储到不同的HDFS目录中。
  • HMaster主要是维护一些集群的元数据信息,同时监控RegionServer的服务状 态,并且通过Zookeeper提供集群服务,向客户端暴露集群的服务端信息

  HBase中的每张表都通过行键按照一定的范围被分割成多个子表(HRegion),默认一个HRegion超过256M就要被分割成两个,这个过程由HRegionServer管理,而HRegion的分配由HMaster管理。

   Table 在行的方向上分割为多个HRegion,每个HRegion分散在不同的RegionServer中。每个HRegion由多个Store构成,每个Store由一个memStore和0或多个StoreFile组成,每个Store保存一个Columns Family。



 

与Hbase学习二:Hbase数据特点和架构特点相似的内容:

Hbase学习二:Hbase数据特点和架构特点

转载请注明出处: 1.Hbase数据特点 大:一个表可以有上亿行,上百万列。 面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。 稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。 无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表

Hbase学习三:Hbase常用命令总结

转载请注明出处: 1.Hbase连接 1.1.进入hbase命令行 hbase shell # 或 bin/hbase shell 1.2.查看帮助 help 1.3.查看所有表 list 2.表操作 2.1.创建表 create 'user','basicinfo' 2.2.查看表结构 desc

布隆过滤器:后端开发者必学的知识点!

摘要:对于后端程序员来讲,学习和理解布隆过滤器有很大的必要性。来吧,我们一起品味布隆过滤器的设计之美。 本文分享自华为云社区《品味布隆过滤器的设计之美》,作者:勇哥java实战分享。 布隆过滤器是一个精巧而且经典的数据结构。 你可能没想到: RocketMQ、 Hbase 、Cassandra 、L

HBase 在统一内容平台业务的优化实践

HBase是一款开源高可靠性、扩展性、高性能和灵活性的分布式非关系型数据库,本文围绕数据库选型以及使用HBase的痛点展开,从四个方面对HBase的使用进行优化,取得了一些不错效果。

hbase第一课:hbase-2.2.7分布式搭建

hbase-2.2.7分布式搭建文档 1、上传解压配置环境变量 # 1、解压 tar -xvf hbase-2.2.7-bin.tar.gz.gz # 2、配置环境变量 vim /etc/profile # 3、在最后增加配置 export HBASE_HOME=/usr/local/soft/hb

HBase Meta 元信息表修复实践

HBase是一款开源高可靠、高可扩展性、高性能的分布式非关系型数据库,广泛应用于大数据处理、实时计算、数据存储和检索等领域。在分布式集群中,硬件故障是一种常态,硬件故障可能导致节点或者集群级别服务中断、meta表损坏、RIT、Region空洞、重叠等问题,如何快速修复故障恢复业务尤其重要,本文章主要...

HBase Compaction 原理与线上调优实践

本文对 HBase Compaction 的原理、流程以及限流的策略进行了详细的介绍,列举了几个线上进行调优的案例,最后对 Compaction 的相关参数进行了总结。

Hbase一:Hbase介绍及特点

转载请注明出处: 1.Google的三篇论文 2003年,Google发布Google File System论文,(GFS)这是一个可扩展的分布 式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价 的普通硬件上,提供容错功能。从根本上说:文件被分割成很多块,使用冗余的方 式储

[转帖]什么是HBase?终于有人讲明白了

http://blog.itpub.net/70024420/viewspace-2929074/ 初识HBase HBase 是一个面向列式存储的分布式数据库,其设计思想来源于 Google 的 BigTable 论文。HBase 底层存储基于 HDFS 实现,集群的管理基于 ZooKeeper

华为云HBase冷热分离最佳实践

冷热分离功能支持将冷热数据存储在不同的介质上,可以大大降低存储成本,HBase支持对同一张表的数据进行冷热分离存储。