`
brianf
  • 浏览: 37297 次
  • 来自: 杭州
社区版块
存档分类
最新评论

HBase Put及flush

阅读更多
1. Put及flush

a.       Client提交put,若设置autoflush=false,则直接提交到regionserver,若为true,则等到2M或者执行hbase.flushcommits()提交给rs.

b.       Put到Regionserver层次,先判断则这台regionserver的 所有memstore的总占用内存是否大于最大值内存(heap size *hbase.regionserver.global.memstore.upperLimit(0.4)),若大于 则提交一个对象到flushqueue中,这时flushthread线程不停的从flushqueue中获得请求,然后选择其中一个region进行Flush,直到这台regionserver的 所有memstore的总占用内存小于最小内存(heap size *hbase.regionserver.global.memstore. lowerLimit(0.35)),而regionserver主线程在等待5秒后,判断若小于最大内存,则继续提交put到region上,否则一直提交对象到flushqueue。

c.       Region层次, Put时,一个HRegion中所有HStore中MemStore的总Size大于hbase.hregion.memstore.flush.size(64MB)*hbase.hregion.memstore.block.multiplier(2)时. 先flush,再等待10秒再检查是否大于, 若不大于,则继续执行此次put.否则继续等待

在flush region时会先检查整个region内所有store中任一个store 的总storefile是不是太多了(大于hbase.hstore.blockingStoreFiles(7)),太多了则会先进行compact,并将flush推迟,而flush推迟的过程中(重新加入队列),可能会导致其他memstore中写了很多的数据,则这台regionserver的 所有memstore的总占用内存大小超过最大内存值,regionserver会阻塞住此时的往memstore写/删除请求,等到memstore大小降下去后才会恢复。

在flush后都会检查是否需要split和compact.

在put完成之后,会检查region总memestore size是否大于hbase.hregion.memstore.flush.size(64MB),若是,则执行一次flush.



Flush时可读可写。

注意hbase.hregion.memstore.flush.size的level是HRegion,也就是说当HRegion的总memstore大小大于此值时,会flush.

Flush和compact,split都是region level的,也就是说如果触发,将在一个region范围内进行,当然触发前提条件不一样。


分享到:
评论

相关推荐

    HBase源码分析

    在HBase的put操作中,数据被组织成Put对象,每个Put对象包含多对列族(family)和列(column)的键值对。当数据写入HTable时,如果autoFlush设置为false,写操作会被缓存在客户端,直到缓冲区满或者手动触发flush...

    某大数据公司内部Hbase性能测试详细设计文档及用例

    通过调用HTable.setAutoFlush(false)方法可以将HTable写客户端的自动flush关闭,这样可以批量写入数据到HBase,而不是有一条put就执行一次更新,只有当put填满客户端写缓存时,才实际向HBase服务端发起写请求。...

    java链接及操作hbase实例代码

    同时,HBase的Region分布、表分区策略、以及Compaction和Flush机制也是理解HBase性能调优的重要知识点。 这个名为“Hbasetest”的压缩包文件很可能包含了上述操作的完整示例代码,你可以通过查看和运行代码来加深对...

    HBase查询的深入研究

    对于第一种情况,新创建的表中所有PUT操作的数据都驻留在memstore中。由于memstore内建了基于rowkey的索引,因此查询速度非常快。通过索引,HBase可以迅速定位到所需数据并返回。这种情况下,查询过程相对简单直接。...

    大数据HBASE考题材料

    HRegionServer与HMaster及客户端之间的通信采用RPC协议,即远程过程调用协议,这是一种用于不同计算机系统间的进程间通信的方式。 8. **HFile中的KeyValue结构** 在HFile数据格式中,KeyValue数据结构的Value...

    Hbase

    当客户端向`RegionServer`发起写操作时,如`HTable.put(Put)`请求,其流程如下: 1. **写入WAL**:首先将数据写入`Write-Ahead Log` (`WAL`),这是一个标准的Hadoop SequenceFile。WAL用于记录尚未被持久化到磁盘的...

    hbase shell命令详解

    HBase Shell支持批处理,可以将多条put、delete等命令放入一个数组,然后使用`batch commands_array`执行。 12. **区域管理(split)**: `split '表名', '行键'`将表按照指定行键分裂为两个区域,有助于数据分布...

    HBase写性能优化策略

    HBase提供的批量put接口能够将多个写入请求打包,一起处理,这样不仅可以减少网络开销,还可以提高I/O吞吐量。重要的是,批量put请求要么全部成功,要么全部失败,这可以保证数据的一致性。业务场景如果允许,可以...

    HBase文档

    - **hbase.hregion.memstore.flush.size**:设置MemStore刷新到磁盘的阈值大小。 **5.2 性能调优** 为了提高HBase的性能,可以考虑以下方面: - **操作系统层面**:优化操作系统设置,如内存管理、文件系统缓存等...

    Hbase shell常用命令.docx

    - **tools**:提供了一些实用工具命令,如`compact`(压缩)、`flush`(刷新缓存)和`split`(分裂region)等。 - **replication**:用于复制和管理HBase的复制流,包括`add_peer`、`remove_peer`等。 了解这些基本...

    Hbase项目实例相关资料

    本资料将围绕一个具体的HBase项目实例,深入探讨其配置、使用及优化等方面的知识。 一、HBase基本概念 HBase是一个非关系型数据库(NoSQL),它以行键、列族、时间戳为数据存储结构,特别适合处理海量稀疏数据。在...

    HBASE性能调优方法1

    在客户端开启多个写线程,每个线程负责一个HTable对象的flush操作,结合定时flush和写缓冲区,能够在数据量变化时灵活调整,确保数据的及时性和系统性能。 7. 缓存查询结果(Caching Query Results): 对于频繁查询...

    Hbase性能优化百科全书(csdn)————程序.pdf

    MemStore过大可能导致频繁的flush和split,而过小则可能增加磁盘I/O。BlockCache用于缓存数据块,合理设置可以显著提高读取速度,但也要注意不要过度占用内存,以免影响其他服务。 读写性能优化方面,可以通过...

    HBase架构简介.pdf

    当客户端执行一个Put操作时,数据首先被写入WAL(由HLog实现),确保即使服务器崩溃,数据也能在重启后恢复。接着,数据被放入内存中的MemStore。如果MemStore达到预设的大小限制,其内容会被flush到磁盘,形成一个...

    Hbase权威指南(中文版)快捷PDF版

    书中详细讲解了Put、Get、Scan等基本操作以及它们的实现机制。 5. **表的管理与优化**:HBase提供了动态分区、预分配区域、表的分裂和合并等功能,帮助管理员优化性能和资源利用率。此外,还涵盖了Compaction和...

    携程HBase实践.pdf

    - Get/Scan/put等操作次数:记录Get、Scan和Put操作的次数。 - GC:记录垃圾回收的次数和消耗的时间。 - memStoreSize:RegionServer的memStore大小。 - **新增监控指标**:为了更全面地监控系统性能,还增加了...

    行业分类-设备装置-基于HBase数据库对数据的写操作方法及装置.zip

    本文将详细解析标题“行业分类-设备装置-基于HBase数据库对数据的写操作方法及装置”所涉及的知识点,并提供丰富的背景、原理以及实践指导。 HBase,全称为Hadoop Distributed File System上的Base,是一种基于...

    HBaseInMemoryCompaction.pdf

    在实际操作中,Accordion的In-Memory LSM树包括了Put操作、Get/Scan操作、Flush操作和Compaction操作。Put操作将数据写入活跃的内存区域;一旦活跃段达到预设的大小或时间限制,数据将被Flush操作写入磁盘上的HFile...

    HBase大数据技术原理与实践.pptx

    编程实践中,主要的操作包括Put(插入数据)、Delete(删除数据)、Get(获取数据)和Scan(扫描数据)。安装HBase时,需要配置Hadoop集群、ZooKeeper集群,确保系统时间同步,并调整Linux的最大文件句柄数。 HBase...

    Hadoop之Hbase从入门到精通.docx

    默认值为10,较少的IO线程,适用于处理单次请求内存消耗较高的Big PUT场景(大容量单次PUT或设置了较大cache的scan,均属于Big PUT)或RegionServer的内存比较紧张的场景。较多的IO线程,适用于单次请求内存消耗低,...

Global site tag (gtag.js) - Google Analytics