Hbase数据模型与存储结构

3、RowKey


(1)决定一行数据,按行检索数据,相当于一级索引

(2) 按照字典顺序排序的,说明数据是有序的

(3)只能存储64k的字节数据,RowKey越短越好

4、 列族(Column Family)


(1)HBase表中的每个列都归属于某个列族,列族必须作为表模式(schema)定义的一部分预先给出。如 create ‘tb’, ‘f’;

列名以列族作为前缀,每个“列族”都可以有多个列(column);如f:a, f:b, 新的列族成员(列)可以随后按需、动态加入;

(2)权限控制、存储以及调优都是在列族层面进行的;

(3)HBase把同一列族里面的数据存储在同一目录下,由几个文件保存。

5、时间戳(Timestamp)


(1)在HBase每个cell存储单元对同一份数据可以有多个版本,根据唯一的时间戳来区分每个版本之间的差异,不同版本的数据按照时间倒序排序,最新的数据版本排在最前面。

(2)时间戳的类型是 64位整型,一般由HBase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。

时间戳也可以由客户显式赋值,如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。

三、hbase架构

===================================================================

1、Client


提供了访问HBase的一系列API接口,如Java Native API、Rest风格http API、Thrift API、scala等,并维护cache来加快对HBase的访问

2、Zookeeper


(1)保证任何时候,集群中只有一个master

(2)存贮所有Region的寻址入口。

(3)实时监控Region server的上线和下线信息,并实时通知Master

(4)存储HBase的schema和table元数据

如下:replication下存副本节点信息,meta-region-server存region server元数据信息,rs下regionserver节点信息,backup-masters存backup-masters节点信息,不在详细说明,顾名思义。

  1. [zk: localhost:2181(CONNECTED) 11] ls /hbase

  2. [replication, meta-region-server, rs, splitWAL, backup-masters, table-lock, flush-table-proc, region-in-transition, online-snapshot, master, running, recovering-regions, draining, namespace, hbaseid, table]

3、Master


(1)为Region server分配region

(2)负责Region server的负载均衡

(3)发现失效的RegionServer并重新分配其上的region

(4)管理用户对table的增删改操作

4、RegionServer


(1)Region server维护region,处理对这些region的IO请求,向HDFS文件系统中读写数据。

一个RegionServer由多个region组成,一个region由多个store组成,一个store对应一个CF(列族),而一个store包括位于内存中的memstore和位于磁盘的storefile,每个storefile以HFile格式保存在HDFS上。写操作先写入memstore,当memstore中的数据达到某个阈值时,RegionServer会启动flashcache进程写入storefile,每次写入形成单独的一个storefile。

(2)Region server负责切分在运行过程中变得过大的region

每个表一开始只有一个region,随着表数据不断插入,数据越来越多,storefile也越来越大,当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、major compaction),minor主要是合并一些小的文件,不做删除,清理操作,而majar在合并过程中会进行版本合并和删除工作,形成更大的storefile。

当一个region所有storefile的大小和数量超过一定阈值后,会把当前的region分割为两个新的region(裂变),每个region保存一段连续的数据片段,如此往复,就会有越来越多的region,并由Master分配到相应的RegionServer服务器,这样一张完整的表被保存在多个Regionserver 上,实现负载均衡。

5、Region


HRegion是HBase中分布式存储和负载均衡的最小单元。最小单元就表示不同的HRegion可以分布在不同的 HRegion server上。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值