8

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

 1 year ago
source link: https://www.cnblogs.com/zjdxr-up/p/17155135.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

转载请注明出处: 

1.Hbase数据特点

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

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

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

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

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

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

2.HBase的数据结构

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

  

1110857-20230225190623484-62211237.png

  纵向来看,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的基础架构

  

1110857-20230225190832954-1930507838.png

  从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。


Recommend

  • 85
    • www.10tiao.com 6 years ago
    • Cache

    hbase 的架构及设计

    (点击上方公众号,可快速关注) 来源:liweisnake , blog.csdn.net/liweisna...

  • 33
    • 微信 mp.weixin.qq.com 5 years ago
    • Cache

    HBase篇(3)-架构详解

  • 17
    • 微信 mp.weixin.qq.com 3 years ago
    • Cache

    全网最通俗易懂的HBase架构及原理

    这是云祁的第  54   篇文章 大...

  • 7
    • www.cnblogs.com 3 years ago
    • Cache

    【赵强老师】HBase的体系架构

    一、什么是HBase? HBase是一个基于HDFS之上的分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“BigTable大表”,即:把所有的数据存入一张表中。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样...

  • 8

    摘要:HBase 是一个面向列的 NoSQL 数据库。 本文分享自华为云社区《

  • 8
    • www.cnblogs.com 2 years ago
    • Cache

    Hbase的安装及其架构

    Hbase的安装及其架构 1.启动Hadoop start-all.sh 验证http://master:50070 2、启动zookeeper...

  • 4

    转载请注明出处:   在 Vuex 中 store 数据改变的唯一方法就是提交 mutations。mutations里面装着一些改变数据方法的集合,这是Vuex 设计很重要的一点,就是把处理数据逻辑方法全部放在 mutations 里面,使得数据和...

  • 2

    转载请注明出处: 目录   1. HyperLogLog 的原理

  • 6

    转载请注明出处: 1.OSPF 路由学习规律 OSPF使用链路状态数据库(Link State Database)来存储网络拓扑信息。每个OSPF路由器通过交换链路状态更新(Link State Updates)来了解整个网络的拓扑,并根据收到的链路状态更新构建自己的链路状态数据库。

  • 8
    • www.cnblogs.com 11 months ago
    • Cache

    BGP路由协议学习一 - 香吧香

    转载请注明出处: 1.BGP的特点: BGP使用TCP作为其传输层协议(端口号为179),使用触发式路由更新,而不是周期性路由更新。 BGP能够承载大批量的路由信息,能够支撑大规模网络。 ...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK