Hbase的Memstore固化为Hfile的主要触发条件为三个:
1、Hlog的存储文件数目达到上限32(默认配置),一个Hlog的大小默认配置为HDFS的block的95%,这样的话,假定HDFS的块大小为64M,32个文件的话,可以存储的数据量为2G左右。 如果当Hlog的数据达到这个值后,会根据seqid把一些老的region 固化到Hfile中。
2、Memstore的大小设置为64M(默认配置),如果大于这个值则触发Flush的操作,大于64*3时,这个region将阻止put的写入操作。
3、RS上的内存达到内存配置下限0.35(hbase.regionserver.global.memstore.lowerLimit),上限为0.4,这里为了防止OOM,进行put操作的流控。 这里有有一个算法,选择compaction压力小,且Memstore相对大的region。
Region server在运行过程中,在达到上述三个任何一个条件后,都会触发Flush的操作。如果在写量比较大的系统上,我们尽量要采用第2种方式来Flush,以减轻compaction的压力。因为在Hbase中compaction是单线程处理,我们要尽量减少IO操作和compaction的数量。
经过测试,关于memstore在写量比较大的情况下一般的设置规则为:
If 方式3 成立
活跃 Regions = (HBASE_HEAPSIZE *memstore.lowerLimit )/( flush.size / (2~3))
else if 方式 1
活跃 Regions = (Hlognumber*hdfsblock)/ (flush.size / (2~3))
else
我们期望的状态
解释说明;
1、为了防止过小的Hfile 这里取Flush.size 的1/3 为最小的File大小(如果使用gz等压缩算法,Hfile将非常小了。
2、活跃的region就是一个region server上在某一段时间只有部分region在写入数据,其他的处于假死状态。
3、通过上述公式,我们发现如果内存比较大的情况下,我们应该适当提高Hlog的存储数量,否则很容易导致条件1产生的Hfile,产生小文件。
分享到:
相关推荐
对于小region,memstore大小的设置较为灵活,可适应不同场景需求;而大region则需谨慎,过大的memstore可能导致flush时的IO等待增加,过小则可能导致过多的store file影响读性能。因此,需要根据实际业务特点和系统...
刷新队列是一个重要的性能指标,表示单个 Region 的 Memstore 写满或 RegionServer 上所有 Region 的 Memstore 大小总合达到门限时会进行 Flush 操作。Flush 操作会产生新的 StoreFile,影响 HBase 的读写性能。 ...
此外,HBase的内存管理还包括了BlockCache与Memstore的大小比例配置,一般默认BlockCache为20%,Memstore为40%。在读密集型应用中,可以增大BlockCache,减小Memstore,以优化读取性能。BlockCache的三个优先级队列...
分布式数据库HBase深入使用 HBase能高速实现数据存储和访问源于...当MemStore达到一定大小则往StoreFile上写。若MemStore数据有丢失,则从HLog上恢复。 而读数据时先到MemStore上读,再到StoreFile上读,之后合并。
`hbase.regionserver.global.memstore.upperLimit`和`hbase.regionserver.global.memstore.lowerLimit`分别设置了全局MemStore的最大和最小占用比例,防止内存溢出。`hbase.hregion.memstore.flush.size`定义了触发...
本文档旨在详细介绍HBase性能测试的设计文档和实践经验,涵盖了HBase性能测试需要注意的一些参数设置和测试用例。下面是从该文档中提炼的相关知识点: 1.1 Pre-Creating Regions 在HBase中,默认情况下,在创建表...
1. **BlockCache和Memstore**:优化BlockCache大小可以提高读取性能,而合理设置Memstore大小可以防止过多的数据flush,影响写入性能。 2. **Compaction策略**:选择合适的compaction策略(如Major和Minor ...
本篇将深入探讨如何针对HBase进行性能调优,主要关注Zookeeper的session超时设置、RegionServer的请求处理线程数以及Region的最大文件大小。 首先,关于`Zookeeper.session.timeout`,这是RegionServer与Zookeeper...
例如,合理设置MemStore大小、优化WAL策略、利用Region Split平衡负载、以及选择合适的批处理策略等,都是提高HBase写性能的关键。 综上所述,基于HBase的数据库对数据的写操作方法及其装置涉及到分布式系统设计、...
至于memstore的大小,小region在设置时有更大的灵活性,可以根据应用的写入频率和数据量进行精细化调整。大region可能需要较大的memstore来避免频繁flush,但也要注意内存使用限制。 除了上述参数,还有其他如`...
5. **文件系统和缓存设置**:`fs.defaultFS`设定默认的HDFS文件系统,`hbase.hregion.blockmultiplier`控制BlockCache的大小,`hbase.hregion.memstore.block.multiplier`则用于控制MemStore的大小。 6. **客户端...
- **ResourceManager heap size**: ResourceManager是YARN的核心组件之一,合理设置其堆内存大小对于保障系统的稳定性至关重要。 - **NodeManager heap size**: 同样地,NodeManager的堆内存大小也需要根据实际负载...
`hbase.regionserver.global.memstore.upperLimit` 和 `hbase.regionserver.global.memstore.lowerLimit` - **含义**:分别定义了RegionServer所有MemStore占用内存的比例上限和下限。 - **默认值**:分别为0.4和...
5. `hbase.hregion.max.filesize`: 单个HRegion的最大大小,超过后会分裂成两个HRegion。 6. `hbase.hregion.memstore.flush.size`: 内存存储单元(MemStore)的刷新阈值,达到该值时会触发数据写入磁盘。 7. `hbase...
4. 性能调优:调整HBase的配置参数,如Region大小、MemStore大小、BlockCache设置等,以优化读写性能。 五、实战应用 HBase常用于实时大数据分析、日志存储、物联网(IoT)数据处理等场景。例如,搜索引擎索引、社交...
8. **优化和性能**:HBase可以通过调整配置参数来优化性能,例如,设置MemStore大小、Region大小、缓存策略等。另外,使用预分区可以提高写入性能,而Compaction机制则有助于减少磁盘空间的占用。 9. **应用领域**...
- **参数调优**: HBase提供了多个参数用于调整服务器行为以获得更好的性能,例如调整MemStore大小,刷新间隔,以及压缩算法等。 - **预分割表**: 通过预先分割表,减少Region的分裂次数,可以改善写入性能。 - **...
Off-heap 缓存可以减少 Java Heap 的大小,从而减少 GC 的次数和时间。 L1 Cache L1 Cache 是一种基于 Java Heap 的缓存,用于存储经常访问的数据。L1 Cache 是一个有限的缓存,大小是可配置的。如果缓存大小太小...
- **利用更多的表级配置**:如MAX_FILESIZE、MEMSTORE_FLUSHSIZE和DFS_REPLICATION等参数进行优化,以控制region大小、内存刷新策略和数据复制因子。 4. **垃圾收集(GC)优化**: - **使用BucketCache替代...