我的编程空间,编程开发者的网络收藏夹
学习永远不晚

HBase之MemStore+Flush详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

HBase之MemStore+Flush详解

  1. MemStore简介:

              HBase之MemStore+Flush详解

    上图为HBase的读写过程的大概描述;


    写请求过程:client---------->WAL(Write Ahead LOG)----------->MemStore-------------> HFile--------->END

    读请求过程:client---------->MemStore-------->BlockCache------->HFile------------>END


    MemStore在HBase中的位置:

       HBase是由Master和HRegionServer组成,而实际在读写的过程中,我们与Master打交道的机会不是很多,主要是HRegionServer,从上图可以看出每一个HRegionServer由一个HLog和多个Region构成,一个Region中存在多个Store,每一个Strore由一个MemStore和多个StoreFile构成,MemStore为HBase在内存中的一块区域,StoreFile的底层为HFile,其为HDFS中的文件。

    MemStore在何时起作用:

       写:当client端发起一个写操作时,写操作首先被写入到WAL中,然后写入到MemStore中,当达到一定的预设条件之后,MemStore中内容会刷写到StoreFile中,写操作完成。

       (那么问题来了

         1.为什么要先写入到WAL中呢?

           WAL为HDFS中的文件,MemStore为内存中的一块区域,一提到内存我们就能想到,不安全,上面看到只有在MemStore中数据刷写到StoreFile中时,数据才会落盘,写入到磁盘中,所以当我们在由于系统宕机等情况下,MemStore中数据丢失,还未来得及刷写落盘,HBase会根据存储在HDFS中的WAL文件恢复数据。

         2.Flush(刷写)的策略?

           下文会进行详细讲解。

       读:当client端发起一个读操作时,HBase会首先在对应Region的MemStore中查找,如果找不到,则会到BlockCache中查找(BlockCache为HBase的一个优化读的策略,下文会详解),如果还没有,则会到StoreFile(HFile)中查找,读操作完成。


2.Flush简介

  

  Flush为HBase中的一个重要的操作,我们必须配置一个很好的flush的策略,从而保证HBase集群的稳定。

  Flush为HBase数据落盘的一个操作,Flush后数据才会持久起来,每一次Flush会在Region中产生一个StoreFile并删除在WAL中的edits。

  Flush为Region级,当一个Region中的一个Store中的MemStore达到预设条件后,一个Region中的所有的Sotre.

  下面为在Flush一个表时的日志:

   

2014-10-18 16:58:28,801 INFO  [Priority.RpcServer.handler=1,port=60020] regionserver.HRegionServer: Flushing t1,,1413622522846.58fd75078b4a47b8c6a20705f23209b7.

2014-10-18 16:58:28,816 DEBUG [Priority.RpcServer.handler=1,port=60020] regionserver.HRegion: Started memstore flush for t1,,1413622522846.58fd75078b4a47b8c6a20705f23209b7., current region memstore size 168

2014-10-18 16:58:29,457 INFO  [Priority.RpcServer.handler=1,port=60020] regionserver.DefaultStoreFlusher: Flushed, sequenceid=3, memsize=168, hasBloomFilter=true, into tmp file hdfs://beh/hbase/data/default/t1/58fd75078b4a47b8c6a20705f23209b7/.tmp/6ad49d65c8b94b678bab3c892bdb0d03

2014-10-18 16:58:29,733 DEBUG [Priority.RpcServer.handler=1,port=60020] regionserver.HRegionFileSystem: Committing store file hdfs://beh/hbase/data/default/t1/58fd75078b4a47b8c6a20705f23209b7/.tmp/6ad49d65c8b94b678bab3c892bdb0d03 as hdfs://beh/hbase/data/default/t1/58fd75078b4a47b8c6a20705f23209b7/cf/6ad49d65c8b94b678bab3c892bdb0d03

2014-10-18 16:58:29,838 INFO  [Priority.RpcServer.handler=1,port=60020] regionserver.HStore: Added hdfs://beh/hbase/data/default/t1/58fd75078b4a47b8c6a20705f23209b7/cf/6ad49d65c8b94b678bab3c892bdb0d03, entries=1, sequenceid=3, filesize=1021

2014-10-18 16:58:29,879 INFO  [Priority.RpcServer.handler=1,port=60020] regionserver.HRegion: Finished memstore flush of ~168/168, currentsize=0/0 for region t1,,1413622522846.58fd75078b4a47b8c6a20705f23209b7. in 1063ms, sequenceid=3, compaction requested=false


可以看出,先将MemStore flush到.tmp下,然后移动到region目录下对应的columnFamily下。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

HBase之MemStore+Flush详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

HBase Filter 过滤器之QualifierFilter详解

前言:本文详细介绍了 HBase QualifierFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考。QualifierFilter 基于列名进行过滤,在工作中涉及到需要通过HBase 列名进行数据过滤时可以考虑使用它。
HBase Filter 过滤器之QualifierFilter详解
2014-11-14

HBase Filter 过滤器之 DependentColumnFilter 详解

前言:本文详细介绍了 HBase DependentColumnFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考。DependentColumnFilter 也称参考列过滤器,是一种允许用户指定一个参考列或引用列来过滤其
HBase Filter 过滤器之 DependentColumnFilter 详解
2022-03-14

HBase Filter 过滤器之FamilyFilter详解

前言:本文详细介绍了 HBase FamilyFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考。FamilyFilter 基于列族进行过滤,在工作中涉及到需要通过HBase 列族进行数据过滤时可以考虑使用它。比较器细节及
HBase Filter 过滤器之FamilyFilter详解
2017-01-24

HBase Filter 过滤器之RowFilter详解

前言:本文详细介绍了HBase RowFilter过滤器Java&Shell API的使用,并贴出了相关示例代码以供参考。RowFilter 基于行键进行过滤,在工作中涉及到需要通过HBase Rowkey进行数据过滤时可以考虑使用它。比较器细节及原理请参照之
HBase Filter 过滤器之RowFilter详解
2017-12-16

HBase Filter 过滤器之 ValueFilter 详解

前言:本文详细介绍了 HBase ValueFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考。ValueFilter 基于列值进行过滤,在工作中涉及到需要通过HBase 列值进行数据过滤时可以考虑使用它。比较器细节及原理
HBase Filter 过滤器之 ValueFilter 详解
2017-12-24

Hbase入门详解

1、hbase概述 1.1 hbase是什么 hbase是基于hdfs进行数据的分布式存储,具有高可靠、高性能、列存储、可伸缩、实时读写的nosql数据库。 hbase可以存储海量的数据,并且后期查询性能很高,可以实现上亿条数据的查询秒级返
2022-06-04

HBase的Compaction过程详解

HBase的Compaction过程是HBase数据库中一个重要的后台过程,它对于维护数据的一致性和性能至关重要。以下是关于HBase Compaction过程的详细解释:Compaction的目的:减少存储空间占用:通过合并小文件和大文件
HBase的Compaction过程详解
2024-10-19

详解spring封装hbase的代码实现

前面我们讲了spring封装MongoDB的代码实现,这里我们讲一下spring封装Hbase的代码实现。hbase的简介:此处大概说一下,不是我们要讨论的重点。HBase是一个分布式的、面向列的开源数据库,HBase在Hadoop之上提供
2023-05-31

hbase shell基础和常用命令详解

HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。 1. 简介 HBase是一个分布式
2022-06-04

HBase的写前日志(WAL)机制详解

HBase的写前日志(WAL,Write-Ahead Logging)机制是HBase为了提高数据可靠性和系统性能而采用的一种技术。它通过在数据写入磁盘之前先写入日志文件,确保即使在发生故障时也能恢复数据。以下是WAL机制的详解:WAL机
HBase的写前日志(WAL)机制详解
2024-10-19

HBase的Region Server负载均衡算法详解

HBase的Region Server负载均衡算法是确保HBase集群性能和稳定性的关键。以下是关于HBase的Region Server负载均衡算法的详解:HBase负载均衡算法概述HBase通过Region的数量来实现负载均衡,即通
HBase的Region Server负载均衡算法详解
2024-10-22

HBase的读写路径优化策略详解

HBase的读写路径优化策略对于提升数据库性能至关重要。以下是对HBase读写路径优化策略的详细解析:HBase读写路径优化策略客户端优化:Scan缓存大小:增大scan缓存大小,减少RPC次数,提升读取效率。批量Get请求:使用批量G
HBase的读写路径优化策略详解
2024-10-19

大数据开发phoenix连接hbase流程详解

目录一、安装phoennix添加配置二、启动phoenix服务三、phoenix常用语法四、Java代码集成phoenix一、安装phoennix添加配置1、将phoenix-server-hbase-2.4-5.1.2.jar拷贝至hba
2022-11-20

编程热搜

目录