cache:
在默认情况下,如果你需要从hbase中查询数据,在获取结果ResultScanner时,hbase会在你每次调用ResultScanner.next()操作时对返回的每个Row执行一次RPC操作。即使你使用ResultScanner.next(int nbRows)时也只是在客户端循环调用RsultScanner.next()操作,你可以理解为hbase将执行查询请求以迭代器的模式设计,在执行next()操作时才会真正的执行查询操作,而对每个Row都会执行一次RPC操作。
因此显而易见的就会想如果我对多个Row返回查询结果才执行一次RPC调用,那么就会减少实际的通讯开销。这个就是hbase配置属性“hbase.client.scanner.caching”的由来,设置cache可以在hbase配置文件中显示静态的配置,也可以在程序动态的设置。
cache值得设置并不是越大越好,需要做一个平衡。cache的值越大,则查询的性能就越高,但是与此同时,每一次调用next()操作都需要花费更长的时间,因为获取的数据更多并且数据量大了传输到客户端需要的时间就越长,一旦你超过了maximum heap the client process 拥有的值,就会报outofmemoryException异常。当传输rows数据到客户端的时候,如果花费时间过长,则会抛出ScannerTimeOutException异常。
batch:
在cache的情况下,我们一般讨论的是相对比较小的row,那么如果一个Row特别大的时候应该怎么处理呢?要知道cache的值增加,那么在client process 占用的内存就会随着row的增大而增大。在hbase中同样为解决这种情况提供了类似的操作:Batch。可以这么理解,cache是面向行的优化处理,batch是面向列的优化处理。它用来控制每次调用next()操作时会返回多少列,比如你设置setBatch(5),那么每一个Result实例就会返回5列,如果你的列数为17的话,那么就会获得四个Result实例,分别含有5,5,5,2个列。
下面会以表格的形式来帮助理解,假设我们拥有10Row,每个row拥有2个family,每个family拥有10个列。(也就是说每个Row含有20列)
caching | batch | Results | RPCs | Notes |
1 | 1 | 200 | 201 | 额外的一个RPC是用来判断scan是否完成 |
200 | 1 | 200 | 2 | |
2000 | 100 | 10 | 1 | 超过的部分没有用处,但是判断scan也在那一个RPC 中完成 |
2 | 100 | 10 | 6 | 10/2 +1 (额外的判断开销) |
2 | 10 | 20 | 11 | |
5 | 100 | 10 | 3 | |
5 | 20 | 10 | 3 | |
10 | 10 | 20 | 3 |
相关推荐
### HBase Bucket Cache:一种高效的缓存管理方案 #### 概述 HBase Bucket Cache 是一个针对 HBase 的块缓存实现,旨在解决 CMS(Concurrent Mark Sweep)垃圾收集器和堆内存碎片带来的性能问题,并提供更大的缓存...
4. **配置Hadoop**:HBase需要与Hadoop协同工作,因此需要配置Hadoop的相关路径。在HBase的conf目录下,编辑`hbase-env.cmd`文件,设置`HADOOP_CONF_DIR`指向Hadoop的配置目录。 5. **修改配置文件**:编辑`hbase-...
### HBase 安装与使用知识点详解 #### 概述 HBase 是一款构建于 Hadoop 之上的分布式、可扩展的大规模数据存储系统。它提供了类似 Google BigTable 的功能特性,非常适合处理海量数据和高并发读写需求的应用场景。...
首先,我们需要理解Spring Data Hadoop提供的HbaseTemplate类。这是一个封装了HBase操作的模板类,简化了Java开发人员与HBase交互的复杂性。通过HbaseTemplate,我们可以执行常见的CRUD(创建、读取、更新和删除)...
### HBase基础与应用 #### 一、列式数据库与HBase概述 ##### 列式数据库定义及分类 列式数据库是一种以列为基础进行数据存储的数据库架构,它与传统的行式数据库不同之处在于,列式数据库按照列的顺序存储数据,即...
### HBase入门与使用 HBase作为Apache Hadoop生态系统中的一个关键组件,提供了一种分布式、版本化的非关系型数据库,特别适用于大规模数据处理。它借鉴了Google Bigtable的设计理念,能够实现在廉价硬件上存储PB...
在HBase的架构中,Client是用户与系统交互的接口,它通过远程过程调用(RPC)机制与HMaster和HRegionServer通信。对于数据读写操作,Client直接与HRegionServer交互,而对于表管理和元数据操作,Client则与HMaster...
【HBase与Hadoop组件的关系】 1. **HDFS(Hadoop Distributed File System)**:HBase利用HDFS作为底层的文件存储系统,确保数据的分布式存储和容错性。 2. **MapReduce**:HBase使用Hadoop的MapReduce框架进行批量...
《HBase企业应用开发实战》是一本深度剖析HBase在实际业务场景中应用的专业书籍,旨在帮助读者理解和掌握HBase的核心功能、设计理念以及在大规模数据处理中的应用策略。HBase,作为Apache的一个分布式、高性能、基于...
本文件包可能包含了关于HBase的配置文件以及详细的官方文档,这些内容对于理解和管理HBase系统至关重要。 ### HBase配置文件 HBase的配置文件通常位于`conf`目录下,主要包括以下几个关键文件: 1. **hbase-site....
在本文中,我们将详细讲解Hbase的安装过程以及...同时,理解Hbase的核心概念,如Region、RegionServer、WAL和HFile,对于高效使用Hbase至关重要。在实践中不断学习和探索,你将能更好地驾驭这个强大的大数据存储工具。
这份“HBase官方文档中文版”提供了全面深入的HBase知识,帮助用户理解和掌握如何在大数据场景下有效地使用HBase。 一、HBase概述 HBase设计目标是提供大规模数据的实时读写能力,它运行在Hadoop之上,利用HDFS作为...
【Hadoop及Hbase部署与应用】涉及到的关键知识点如下: ...通过这个实验,学生可以深入理解分布式计算和NoSQL数据库的基础概念,掌握Hadoop和Hbase的实际操作,为后续的大数据处理和分析打下坚实基础。
通过对HBase的理解和掌握,开发者可以在企业级应用中更好地利用这一强大的数据存储技术。虽然提供的文档中并没有具体的书籍内容,但从以上分析可以看出,这本书对于希望深入了解HBase并在实际项目中运用它的技术人员...
《HBase in Action》是一本由Nick Dimiduk和Amandeep Khurana撰写的关于HBase实践的书籍,该书旨在帮助读者深入理解HBase的工作原理及其实战应用。 **章节概述**: - **第一部分:HBase基础** - **第1章:介绍...
- 通过HBase的Shell或编程接口(如Java API)与HBase交互,实现数据的增删改查。 - 实验报告可能还包含了对HBase的一些基本概念的介绍,如Region、Column Family、Row Key等,以及如何设计适合HBase的表结构。 这...
**HBase的安装与配置:** 1. **HBase的安装**:HBase的安装过程类似于Zookeeper,下载源码包或二进制包,解压到适当位置,设置环境变量,如 `HBASE_HOME` 和 `PATH`。HBase还需要依赖已经运行的Zookeeper,所以要...
例如,`org.apache.hadoop.hbase.regionserver.HStore`类实现了MemStore和BlockCache,它们分别缓存内存中的新写入数据和硬盘上的热数据,提高读写效率。同时,HBase还支持Compaction操作,通过`org.apache.hadoop....