HBase-1.2.1之查找Region位置的源码学习

HBase Client Get 源码分析 1 入口 HTable.java private Result get(Get get, final boolean checkExistenceOnly) throws IOException { // if we are changing settings to the get, clone it. if (get.isCheckExistenceOnly() != che 阅读详情

首先需要清楚的是:

zookeeper上存放的是meta表在region的地址

真正的meta表数据是存放在region上的,和其他普通的数据表是一样的。

以get操作为例:

在HTable中的get方法中的
return rpcCallerFactory.<Result>newCaller().callWithRetries(callable,this.operationTimeout);

--->RpcRetryingCaller.java中的callWithRetries()方法

--->callable.prepare(tries !=0)

  --->RegionServerCallable.java中的prepare(finalBoolean reload)

    --->this.location= regionLocator.getRegionLocation(row,reload);

     --->connection.getRegionLocation(tableName,row,reload);//获得Region的位置

       --->…….

          --->ConnectionManager中的

               locateRegionInMeta(tableName,row,useCache,retry,replicaid);

                  --->regionInfoRow = rcs.next();1230行

                      --->…

                         --->ClientSmallReversedScanner.loadCache();(在Meta表中查到位置)

       --->setStub(getConnection.getClient(this.location.getServerName()));

           --->getClient(finalServerName serverName);//建立到该regionserver的连接

 --->callable.call(getRemainingTime(callTimeout));

   --->HTable中的get方法中重写了该call方法:826行。

      --->ClientProtos.GetRequest request =RequestConverter.buildGetRequest(getLocation().getRegionInfo().getRegionName(), getReq);//注意此时已经得到了region的位置信息(在哪个regionserver上,且建好了连接)
        --->ClientProtos.GetResponse response = getStub().get(controller, request);
          --->RSRpcService中的get(final RpcController controller,
           final GetRequest request)
 
在找到region之后,调用callable的call方法中,给request传过去的是getLoaction().getRegionInfo().getRegionName();即传过去的是regionName。
RegionName的构成:看HRegionInfo中的createRegionName()方法。由此可见,在RegionName中包含的信息有表名tableName。
/**
 * Make a region name of passed parameters.
 * @param tableName
 * @param startKey Can be null
 * @param id Region id (Usually timestamp from when region was created).
 * @param replicaId
 * @param newFormat should we create the region name in the new format
 * @return Region name made of passed tableName, startKey, id and replicaId
 */
public static byte [] createRegionName(final TableName tableName,
    final byte [] startKey, final byte [] id, final int replicaId, boolean newFormat) 
HBase读请求分析 HBase为了提供实时查询,以及较高性能的写请求事务吞吐量,对读/写请求都做了大量的优化。经过阅读源码和远程调试,大致了解了读请求的流程。本文主要是基于HBase的0.98.8版本的实现。 客户端读请求     HBase为客户端提供了的读请求API主要有两个,get和scan。其中,get是通过指定单个的rowKey,获取其对应的value值。而scan是指定startRow和sto 阅读详情

相关推荐

Hbase精通---1.3.1版本

hbase 出现原因 mysql行式存储,查询一列,因为列数据分散存储,所以查询效率比较低 对行式存储列队增加删除效率也很低 mysql 单表数据总容量最大值64t 这时候就出现列式存储,代表就是hbase ...

weixin_43548518的博客 506

HALCON示例程序measure_screw.hdev螺纹尺寸测量

HALCON示例程序measure_screw.hdev螺纹尺寸测量 get_region_runs 、gen_region_line 、derivate_gauss、zero_crossing_sub_pix、clip_contours_xld、gen_contour_polygon_xld、get_contour_xld 、distance_pc 、projection_pl - 计算点到线的投影。gen_contour_polygon_xld

优快云博客 3769

Android-S无线模块前瞻

WiFi - mainlane非强制 S 采用反射的方法直接加载wifiservice,直接hook在systemserver上,无编译依赖。gms可以动态替换wifi服务。 R 采用直接启动service的方式,wifiservice仍然map在systemserver上。 WiFi - 11ad接口支持 11ad被wifi联盟商业化为WIGIG,提供短距的60GHZ载波,理论速度为当前5G 11ac的6倍。市面上基本没有手机支持,需要独立的芯片支撑此功能。 传输距离为3m以内,外界d.

头铁的伦的博客 1042

HBase源码分析之Region定位

我们知道,HBase是一个基于RowKey进行检索的分布式数据库。它按照行的方向将表中的数据切分成一个个Region,而每个Region都会存在一个起始行StartKey和一个终止行EndKey。Region会最终选择一个RegionSever上线,并依靠RegionSever对外提供数据存取服务。那么,HBase是如何实现数据的检索,...

weixin_34163553的博客 625

整车 EOL下线 测试系统介绍

整车下线(EOL)测试专门针对整车进行设计开发,是车企将组装好的整车交付客户前的 最后一道检测工序。EOL 测试针对的是整车下线测试,不同于零部件下线,是整车级别的下线 测试,测试过程关系整车的每个零部件,其测试质量直接影响到整车的质量好坏。因此,整车EOL测试是整车下线必不可少的测试过程.

王小奎的博客 5480

5分钟搞懂语义通信:如何用深度学习让AI理解你的真实意图?

本文深入解析了语义通信如何利用深度学习技术,实现从传统‘比特保真’到‘语义保真’的范式转移。通过介绍基于神经网络的端到端系统架构、编解码技术及实战案例,阐明AI如何理解并高效传递信息核心意图,为6G时代的人机交互奠定基础。

weixin_29191669的博客 262

HBase1.2.1源代码阅读——compactSplitThread阅读笔记

位置:org.apache.hadoop.hbase.regionserver 说明:该类管理了RegionServer中对region的compact和split操作。 构造函数 在构造函数中,该类需要做如下一些操作: 从配置文件获取并配置基本的参数 stealJobQueue实例初始化。该实例允许一个ThreadPoolExecutor从另一个ThreadPoolExecutor中获...

weixin_32501529的博客 391

从HAL库SPI状态机机制剖析:为什么你的DMA发送会卡在BUSY状态?

本文深入剖析了STM32 HAL库中SPI状态机机制导致DMA发送卡在BUSY状态的常见问题。通过分析状态机设计原理,揭示了混合使用阻塞方式和DMA方式时状态切换冲突的根源,并提供了三种实战解决方案:正确配置SPI中断、使用HAL_SPI_Abort()函数以及手动管理状态机,帮助开发者实现稳定流畅的SPI DMA通信。

bush的博客 268

HBase的Region定位

Region定位:系统如何找到某个row key (或者某个 row key range)所在的region关于Region的查找,早期的设计(0.96.0)之前是被称之为三层查询架构,如下图所示:Region:就是要查找的数据所在的Region.META.:是一张元数据表,记录了用户表的Region信息以及RegionServer的服务器地址,.META.可以有多个regoin。.META.表中...

MingYueZh的博客 1万+

CANdelaStudio实战:如何用19服务快速编辑DTC快照数据(附Excel模板)

本文详细介绍了在CANdelaStudio中利用19服务高效编辑DTC快照数据的进阶技巧。通过导出DTC池至Excel进行批量编辑,结合‘Copy from DTC Pool’功能实现配置复用,并分享了构建自定义Excel模板与字段映射的实用方法,帮助工程师将繁琐的手动配置转化为工程化的批量处理,大幅提升诊断数据库开发效率。

weixin_29230773的博客 190

goahead(嵌入式Web服务器)之文件传输篇

goahead文件上传原理: 使用html form即表单提交文件上传请求,web服务器核心处理接收客户端Post过来的文件数据(注意post的是二进制数据),最后,web服务器把接收到文件数据以二进制格式写到服务器本端存储系统。 goahead文件上传步骤: 1、创建upload.html文件,内容如下: <html> <head> <meta charset="utf-8"/> <title>Upload</title> </head&g

weixin_40732273的博客 3495

HBase源码阅读(三)如何定位region

上一篇文章中介绍了HTable中读写数据的逻辑,本篇介绍一下client如何在hbase集群中定位到需要的region。先介绍一下大致原理,1.2版本中的所有region布局信息被存放在meta表中,meta表永不分裂,仅有一个region,meta表的的位置被存放在zk中,所以client想要找到一个region的位置,需要先访问zk,找到meta表的位置,然后在meta表中查询到自己需要访问的region的信息。 meta表中信息如下图所示(图片引用自《HBase原理与实践》): 可以看到,meta表

东东儿的博客 3462

Python 爬虫实战:深入闲鱼平台,抓取二手好物价格波动数据

本文介绍了如何利用Python爬虫抓取闲鱼(Xianyu)二手交易平台的商品价格数据并分析其波动趋势。通过requests和BeautifulSoup库实现网页数据抓取与解析,使用pandas进行数据清洗和存储,最后借助matplotlib可视化价格波动情况。文章详细展示了从网页结构分析、数据采集到波动率计算和趋势可视化的完整流程,并建议通过定时任务实现持续数据更新。该项目能为二手市场交易者提供价格参考,帮助优化买卖决策。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 3375

Hbase源码分析(七)Region定位(下)2021SC@SDUSC

文章目录前言介绍总结 前言 上篇文章讲述了 Region定位的过程,本篇继续,针对其中的几点,做一些细节方面的介绍。 介绍 一.从缓存中看看是否我们已经有该Region的getCachedLocation()方法 首先我们看下从缓存中看看是否我们已经有该Region的getCachedLocation()方法,代码如下: /** * Search the cache for a location that fits our table and row key. * Return nul..

qq_45856546的博客 1934

2026年数学建模国赛C题利器:层次分析法与主成分分析在统计建模中的应用

本文系统探讨了层次分析法(AHP)与主成分分析(PCA)在数学建模竞赛,特别是全国大学生数学建模竞赛C题中的联合应用策略。通过理论阐述、方法对比和案例实践,本文揭示了两种方法从“数据降维”到“决策评价”的完整分析链条,提出了“PCA+AHP”协同框架,并通过实际算例验证了该框架在解决复杂评价类问题中的有效性和优越性。研究表明,将PCA的客观降维能力与AHP的主观决策优势有机结合,能够显著提升统计建模的科学性、合理性和解释力,是应对日益复杂的竞赛题目的重要方法论工具。关键词:层次分析法;主成分分析;数学建模。

YOLO 41

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

HBase 入门学习

这意味着,往 HBase写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase能够轻松应对字段变更的场景。(3)RowHBase 表中的每行数据都由一个RowKey和多个 Column(列)组成,数据是按照 RowKey的。

weixin_44361163的博客 931

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

HBase1.2.3版本客户端请求如何定位HRegion的位置

一、为什么需要定位       hbase是一个主从的master/slave架构,默认使用zk的选举来支持HMaster的高可用实通过监听临时节点,使用类似分布式锁的方法来争抢创建节点后成为新的master。       一个HMaster通常会对应多个HRegionServer,而每一个HRegionServer又可以有多个HRegion,需要注意的是,我们的Table数据刚开始的

农村外出务工男的博客 1935

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Hbase Region Server整体架构

Region Server的整体架构 本文主要介绍Region的整体架构,后续再慢慢介绍region的各部分具体实现和源码 RegionServer逻辑架构图 RegionServer职责 1、 监听协作,通过zk来侦听master、meta位置、集群状态等信息的变化,更新本地数据。 2、 管理region的offline、online、open、cl...

anzuo0211的专栏 408

hbase源码系列(三)Client如何找到正确的Region Server

  客户端在进行put、delete、get等操作的时候,它都需要数据到底存在哪个Region Server上面,这个定位的操作是通过HConnection.locateRegion方法来完成的。 loc = hConnection.locateRegion(this.tableName, row.getRow());   这里我们首先要讲hbase的两张元数据表-ROOT-和.MET...

专注Java(全栈)应用开发,求知若渴,虚心若愚,talk is cheap, show me the code. 379

Hbase meta表介绍

HBase meta表介绍 本文转载自 https://www.jianshu.com/p/ea7e03cfbfe0 1.hbase0.98之后,hbase就废弃了ROOT**表,仅保留meta表 2.meta表不允许split 在网上较多的文章都会介绍hbase的两个关键表ROOT表与meta表。 其实在hbase0.98之后,hbase就废弃了ROOT表,仅保留meta表(还有namespa...

C_time的博客 3536

共享可写节包含重定位_HBase源码:Region的定位与优化

导读上一次分享过如何设计分布式客户端,主要聚焦在线程池的管理与使用,这次就从全面的角度来讲述HBase客户端的相关内容,会涉及如何创建连接、表,如何共用重型资源,如何定位region以及缓存优化。1 HBase的Connection和TableHBase客户端以ConnectionFactory为入口,通过工厂模式创建连接。这个Connection是比较重的组件,里面包含各种线程池、消息的内存缓冲...

weixin_32227927的博客 198

Hbase源码系列之源码前奏hbase:meta表相关详细介绍

一,基本功能介绍 -root-表在HBase 0.9.6以后的版本被移除了。 Hbase 0.9.6以前,三个重要信息: 1,-root-表的位置存储在Zookeeper上(只会存在一个regionserver上),内容是.meta表的存储信息 2,.meta表存储在一个regionserver上,存储的是用户的表的region信息,用户表越大,这个表的region会越多,进而会分布到不同的regionserver。 3,用户的表信息,用户表示存储在各个regionserver上。 Hbase

mojolang 1197

HBase源码系列(六)HBase存储结构与StoreFile存储格式

Region Store MemStore MemStore Flush StoreFile HFile HFile 格式 KeyValue Blocks 这次终于到了HBase的存储部分,先看一下 HBase系统架构图 RegionRegion是构成分布式table的基本元素,它由每个Column Family 对应一个Store组成。/hbase /<Table>

走向程序的康庄大道 3610

白话HBase-客户端缓存 region位置信息

    背景 第一次请求某个表的时候,table.get  table.scan 等api通常都比较慢,但是第一次慢了之后,后面有很快,是什么原因导致的呢? 我们直接从源码来看看   一般用户使用方法 HTableInterface table=connection.getTable(xxxx) Get get=new Get(“zzz”.getBytes()); table.g...

鲸鱼写程序的专栏 1668

hbase零碎小记

1)hbase表查行 可以在shell中进行,命令如下: count ’tablename’,CACHE=>10000,INTERVAL=>10000 CACHE是客户端缓存条数,INTERVAL是分隔多久显示一次结果 上述方法实现是走scan客户端完成,一旦表较大,查起来很慢。 另外一种方式如下:  bin/hbase org.apac

进一步有一步的欢喜 4875

看看HBase Bulkload 源码

看看HBase Bulkload 源码 什么都别说先看代码 val regionLocator = new HRegionLocator(hbTableName, classOf[ClusterConnection].cast(conn)) val loader = new LoadIncrementalHFiles(hbaseConf) val admin = conn.getAdmin() loader.doBulkLoad(new Path(path),admin,realTable,regionLo

aLivable_Dedode的博客 805
上一篇: hbase-1.2.1之协处理器的源码学习
下一篇: hbase错误:Org.apache.hadoop.ipc.RemoteException:User:client is not allowed to impersonate root
mm_bit
博客等级 码龄11年 84粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值