首页 > 其他分享 >Hbase学习二:Hbase数据特点和架构特点

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

时间:2023-02-25 19:35:55浏览次数:34  
标签:存储 架构 列族 特点 Key Hbase 数据 HBase Row

转载请注明出处: 

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 进行左填充。

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

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。



 

标签:存储,架构,列族,特点,Key,Hbase,数据,HBase,Row
From: https://www.cnblogs.com/zjdxr-up/p/17155135.html

相关文章

  • 基础架构组件选型及服务化
    常见的分布式基础架构组件分布式服务化框架,业界开源产品比如Dubbo、SpringCloud这样的框架;分布式缓存及框架,业界如Redis、Memcached,框架如Codis和RedisCluster;数据......
  • Hbase一:Hbase介绍及特点
    转载请注明出处:1.Google的三篇论文2003年,Google发布GoogleFileSystem论文,(GFS)这是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的......
  • SQuirrel client UI 操作hbase 及 spark with phoenix 写hbase 遇到的一些问题总结
    1:在SQuirrel里如果创建table的时候,不指定namespace,则表是创建在default空间的,在UI上无法看到,但是在phoenixsqlline命令行可以看到,如下表LOT7  2:phoenixsql里,如果......
  • 【转】HBase最佳实践-内存规划
    [hbasefly]HBase最佳实践-内存规划HBase最佳实践-内存规划–有态度的HBase/Spark/BigData http://hbasefly.com/2016/06/18/hbase-practise-ram/线上HBase集群应该如何......
  • 解决方案架构师如何思考?| Anuar
    当我还是一名日日夜夜编写源代码的开发人员时,我对架构以及解决方案架构师在设计系统时所做的事情有一个了解。它是关于根据一些模式和最佳方法设计源代码,搜索新组件以及现......
  • 服务器原理与架构分析
    服务器原理与架构分析微服务架构实施原理详解基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发、部署、运维管理、持续开发......
  • 透明多级分流系统(架构扫盲贴)
    引子现代互联网系统,架构设计时避不开的一点就是流量规划、负载均衡。期望做到透明、多级的分流系统。“多级”就是在各个层面的技术组件来分流,“透明”就是业务无感知(甚至......
  • 数据库架构、SQL漏洞注入
    找到数据库中的table表和colmuns表,里面是本机所有的数据库。    在vscode中找到php中的sql语句。      只有list.php中的第46行是有变量的sql语句,......
  • MySQL数据库架构&SQL注入漏洞
    1.查找zblog数据库中有哪些表查找目标表(zbp_member)中的的字段查找目标表中的目标数据(管理员的用户名密码)4.使用UNION语句替换掉原有查询结果,显示zblog数据库中的所有表。网......
  • 吃透8图1模板,人人可以做架构
    文章持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+......