作者:晴晴qing951025 | 来源:互联网 | 2023-08-10 18:32
1.Region定位
在Google的BigTable体系中,tablet 的存储地址通过3层目录结构来定位的,如图所示:
注:tablet 等同与HBase中的Region
图释说明:
(1)METADATATable
METADATATable是系统预定义的Table,当用户自定义表格被拆分成多个tablet之后,METADATA Table用来存储这些tablet的地址,在目录层级中处于第3层
(2)Root tablet
METADATA表格在分布式存储过程中也会被拆分成多个tablet,其中第一个tablet比较特殊,用来存储其他tablet的地址,称之为Roottablet,在目录层级中处于第2层
(3)Chunbby file
用来存储Roottablet的地址,在目录结构中处于顶层
这样,客户端可通过Chubby file遍历到任何tablet的地址
在HBase中:
Region的概念等同于tablet
.META.表格等同于METADATATable
而-ROOT-表格等同于Chunbby file
这样,客户端可通过-ROOT- Table遍历到任何Region的地址,并把这些地址在本地进行缓存,以加快下次查询效率
2.Region分配
在HBase中,MasterServer负责将Region分配给RegionServer
首先,看一下BigTable中tablet如何分配:
当master机器启动的时候,它会处理如下事情:
(1)首先在Chunbby中获取masterlock,在分布式部署中,系统中只能有一个master处于运行状态,当其获得master锁之后,其他的master机器将会进入等待状态
(2)master会扫描Chunbby目录,以获取处于运行状态的table server(RegionServer)
(3)master会和每一台tabletserver进行通信,来记录哪些tablet已经成功分配
(4)master会扫描METADATA表格,如果发现有tablet不在已分配记录中,则将其分配到合适的tablet server
在HBase中,是通过如下API来完成Region的分配过程:
(1)Master在启动的时候,会去调用AssignmentManager类
(2)AssignmentManager通过查找.META.表格来获取Region信息
(3)如果Region尚未分配,则调用LoadBalancerFactory将其分配,默认的分配器(DefaultLoadBalancer)会将该Region分配给一个随机的RegionServer
(4)更新.META.表格信息
3.数据存储
在HDFS中,HBase的数据存储呈如下目录结构:
|__
|__
|__
|__
StoreFile是基于Google的SSTable来实现的,每个SSTable相当于一个持久存储的、多维的、可序列化Map,Map的key和value都是可解释型字符数组,可从中提炼出具体的rowKey、timestamp、columnKey和columnValue等信息。
在物理存储上SSTable由多个Block块组成,SSTable记录了每个Block快的索引位置,并且在被访问的时候将这些块索引加载到内存,以便系统快速定位Block块所在磁盘位置。
推荐阅读
在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ...
[详细]
蜡笔小新 2024-11-11 18:27:44
本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ...
[详细]
蜡笔小新 2024-11-09 14:47:28
本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ...
[详细]
蜡笔小新 2024-11-08 11:50:24
nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ...
[详细]
蜡笔小新 2024-10-19 19:45:42
在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ...
[详细]
蜡笔小新 2024-11-11 19:36:19
NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ...
[详细]
蜡笔小新 2024-10-28 18:13:15
本文将深入探讨MySQL与MongoDB在游戏账户服务中的应用特点及优劣。通过对比这两种数据库的性能、扩展性和数据一致性,结合实际案例,帮助开发者更好地选择适合游戏账户服务的数据库方案。同时,文章还将介绍如何利用Erlang语言进行高效的游戏服务器开发,提升系统的稳定性和并发处理能力。 ...
[详细]
蜡笔小新 2024-10-25 15:45:30
包含phppdoerrorcode的词条 ...
[详细]
蜡笔小新 2024-11-14 12:06:14
蜡笔小新 2024-11-12 15:26:03
SpringBoot非官方教程|终章:文章汇总springboot非官方教程,可能最接近于官方的一个教程,大多数案例都来自于官方文档,为了更好的理解,加入了个人的改造。码云下载:htt ...
[详细]
蜡笔小新 2024-10-21 19:57:03
前两天有位朋友邀请我回答个问题,为什么MongoDB(索引)使用B-树而Mysql使用B+树?我觉得这个问题非常好,从实际应用的角度来学习数据结构,没有比这更好的方法了。因为 ...
[详细]
蜡笔小新 2024-10-14 10:47:25
1.关系型数据库永久性保存数据的仓库php的变量只是php脚本执行期间,临时性保存变量的空间【使用内存空间临时保存】关系型数据库:利用二者的关系来描述实体的信息。【利用二维表字段名 ...
[详细]
蜡笔小新 2024-10-10 13:48:19
针对MySQL Undo空间满载及Oracle Undo表空间溢出的问题,本文详细探讨了其原因与解决策略。首先,通过启动SQL*Plus并以SYS用户身份登录数据库,查询当前数据库的UNDO表空间名称,确认当前状态。接着,分析导致Undo空间满载的常见原因,如长时间运行的事务、频繁的更新操作等,并提出相应的解决方案,包括调整Undo表空间大小、优化事务管理、定期清理历史数据等。最后,结合实际案例,提供具体的实施步骤和注意事项,帮助DBA有效应对这些问题。 ...
[详细]
蜡笔小新 2024-11-08 10:46:23
掌握 MongoDB 基础操作与实用技巧 ...
[详细]
蜡笔小新 2024-10-22 14:12:23
我从GoogleFirebase服务中看过视频并阅读了Cloudfirestore的文档,但我无法想象实时数据库.我想到了这个Web应用程序,我希望从不同类别的产品中存储我的提供程 ...
[详细]
蜡笔小新 2024-10-16 19:45:44
晴晴qing951025
这个家伙很懒,什么也没留下!