首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
hook
数组
stream
client
version
scala
fetch
function
runtime
yaml
integer
vbscript
regex
netty
php
command
go
const
frameworks
io
uri
uml
format
callback
expression
object
cookie
keyword
input
less
bash
cpython
spring
tags
substring
case
bitmap
main
hashtable
php8
blob
tree
solr
python2
settings
email
plugins
list
ascii
range
nodejs
post
loops
future
get
golang
int
search
iostream
node.js
match
buffer
javascript
audio
split
select
dagger
md5
cmd
hashset
usb
timestamp
chat
datetime
flutter
default
process
include
random
当前位置:
开发笔记
>
编程语言
> 正文
三、HbaseRegion的定位
作者:jizi456 | 来源:互联网 | 2023-09-04 18:31
Hbas
一、早期架构
1、关于Region的查找,早期的设计(0.96.0)之前是被称为三层查询
img
Region:就是你要查找的数据所在的Region,这个不多解释。
-ROOT-:是一张存储.META.表的表。.META.可以有很多张,而-ROOT-就是存储了.META.表在什么Region上的信息(.META.表也是一张普通的表,也在Region上)。通过两层的扩展最多可以支持 2的34 次方 个Region。也就是17179869184个,约等于171亿个Region。
.META.:是一张元数据表,它存储了所有Region的简要信息。.META.表中的一行记录就是一个Region,该行记录了该Region的起始行、结束行和该Region的连接信息,这样客户端就可以通过这个来判断需要的数据在哪个Region上。
2、查询流程
image-20200808124740782
(1)用户通过查找zk(ZooKeeper)的/hbase/root-region-server节点来知道-ROOT-表在什么RegionServer上。
(2)访问-ROOT-表,查找需要的数据在哪个.META.表上,.META.表在什么RegionServer上。
(3)访问.META.表来看你要查询的行键在什么Region范围里面。
( 4)连接具体的数据所在的RegionServ,Scan遍历数据
从流程图可知,每次查询的时候都查三次才知道Region在哪里,为了提高查询效率,可以使用缓存客户端在获取到Region信息之后会把.META.表的部分信息保存到客户端的缓存里面。当下次查询不到数据的时候客户端会再次获取Region信息,否则就直接用缓存的信息。
二、早期架构的弊端
通过三层架构虽然极大地扩展了可以容纳的Region数量,一直扩展到了171亿个 Region,可是我们并用不了这么多,虽然设计上是允许多个.META.表存在的,但是实际上在HBase的发展历史中,.META.表一直只有一个,所以-ROOT-中的记录一直都只有一行,-ROOT-表形同虚设。三层架构增加了代码的复杂度,容易产生BUG。
三、新的架构
1、执行流程
image-20200808124906157
(1)客户端先通过ZooKeeper的/hbase/meta-region-server节点查询到哪台RegionServer上有hbase:meta表。
(2)客户端连接含有hbase:meta表的RegionServer。hbase:meta表存储了所有Region的行键范围信息,通过这个表 就可以查询出你要存取的rowkey属于哪个Region的范围里面,以及这个Region又是属于哪个RegionServer。
(3)获取这些信息后,客户端就可以直连其中一台拥有你要存取的rowkey的RegionServer,并直接对其操作。
(4)客户端会把meta信息缓存起来,下次操作就不需要进行以上加载hbase:meta的步骤了
数据库
hbase
io
架构
扩展
zookeeper
server
缓存
key
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
io
NoSQL 数据查询与检索技术解析
NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ...
[详细]
蜡笔小新 2024-10-28 18:13:15
io
第二章:Kafka基础入门与核心概念解析
本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ...
[详细]
蜡笔小新 2024-11-06 11:10:03
io
分布式开源任务调度框架 TBSchedule 深度解析与应用实践
本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ...
[详细]
蜡笔小新 2024-11-02 11:59:52
less
分布式一致性算法:Paxos 的企业级实战
一、简介首先我们这个平台是ES专题技术的分享平台,众所周知,ES是一个典型的分布式系统。在工作和学习中,我们可能都已经接触和学习过多种不同的分布式系统了,各 ...
[详细]
蜡笔小新 2024-10-21 16:29:21
io
使用OpenSSL自建CA证书(实测有效)
本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ...
[详细]
蜡笔小新 2024-11-13 09:55:03
io
Spark与HBase结合处理大规模流量数据结构设计
本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ...
[详细]
蜡笔小新 2024-11-12 19:49:05
cookie
网站访问全流程解析
本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ...
[详细]
蜡笔小新 2024-11-12 18:13:16
object
深入解析 Lifecycle 的实现原理
本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ...
[详细]
蜡笔小新 2024-11-12 14:05:19
io
解决Bootstrap DataTable Ajax请求重复问题
在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ...
[详细]
蜡笔小新 2024-11-12 13:59:27
object
如何在Java中使用DButils类
这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ...
[详细]
蜡笔小新 2024-11-12 13:46:11
io
InfluxDB、collectd与Grafana的详细安装与配置指南
本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ...
[详细]
蜡笔小新 2024-11-11 19:54:24
go
MySQL查询执行流程详解
MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ...
[详细]
蜡笔小新 2024-11-11 16:48:32
go
深入解析浏览器内核与版本的发展历程
浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ...
[详细]
蜡笔小新 2024-11-11 13:34:37
io
阿里巴巴Java后端开发面试:TCP、Netty、HashMap、并发锁与红黑树深度解析
阿里巴巴Java后端开发面试:TCP、Netty、HashMap、并发锁与红黑树深度解析 ...
[详细]
蜡笔小新 2024-10-26 14:26:06
netty
字节Java高级岗:java开发cpu吃多线程吗
前言抱着侥幸心理投了字节跳动后台JAVA开发岗,居然收到通知去面试,一面下整个人来都是懵逼的,不知道我对着面试官都说了些啥(捂脸~~)。侥幸一面居然过了,三天后接到二面通知,结果这 ...
[详细]
蜡笔小新 2024-10-20 20:15:35
jizi456
这个家伙很懒,什么也没留下!
Tags | 热门标签
hook
数组
stream
client
version
scala
fetch
function
runtime
yaml
integer
vbscript
regex
netty
php
command
go
const
frameworks
io
uri
uml
format
callback
expression
object
cookie
keyword
input
less
RankList | 热门文章
1
[UOJ]#58. 【WC2013】糖果公园:树上动态修改莫队算法优化
2
Spark在Mesos上运行的常见问题及解决方案分析
3
自回归与非自回归模型如何融合?预训练模型BANG提供可能解决方案
4
基于深度学习技术的森林与草原火灾智能监测系统研究
5
利用Requests库深入解析POST请求的发送方法与实践技巧
6
Java 并发容器 ConcurrentLinkedQueue 的 peek() 方法解析与应用
7
火狐浏览器中使用JavaScript为audio标签的src属性赋值时遇到的问题及解决方案
8
计算机无法识别U盘,如何解决这一常见问题?
9
C++实现邻接表数据结构详解
10
牛客网小叶的日常巡查与维护
11
微信小程序核心功能与优势全面解析
12
探索2D回合制游戏引擎的奥秘与应用
13
Microsoft 365安装指南:详细步骤与专业建议
14
设计一个名为Apple的类,包含私有成员变量int price,并在构造函数中初始化。实现一个方法int calculateValue(int weight),根据重量计算苹果的价值。
15
使用PyQt5与OpenCV实现电脑摄像头的图像捕捉功能
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有