Hadoop HBase压缩队列的大小到底是多少?

Hadoop HBase压缩队列的大小到底是多少?,hadoop,nosql,hbase,Hadoop,Nosql,Hbase,有人知道regionserver队列大小是什么意思吗 根据doc的定义: 9.2.5.hbase.regionserver.compactionQueueSize压缩队列的大小。这是该地区已关闭的门店数 以压实为目标 这是regionserver需要压缩的存储(或存储文件?我听说有两个版本) 我有一个作业,使用顺序键(非分布式)以热点样式写入数据。 我在度量历史中发现,在某个时间,压缩队列大小为4。 这在理论上是不可能的,因为我在任何时候都只有一个存储区可以写入(顺序键) 然后我深入日志,发现有

有人知道regionserver队列大小是什么意思吗

根据doc的定义:

9.2.5.hbase.regionserver.compactionQueueSize压缩队列的大小。这是该地区已关闭的门店数 以压实为目标

这是regionserver需要压缩的存储(或存储文件?我听说有两个版本)

我有一个作业,使用顺序键(非分布式)以热点样式写入数据。 我在度量历史中发现,在某个时间,压缩队列大小为4。 这在理论上是不可能的,因为我在任何时候都只有一个存储区可以写入(顺序键)

然后我深入日志,发现有任何关于队列大小>0的提示: 每次重大事件都会说“此选择已在队列中等待0秒”

013-11-26 12:28:00778信息 [区域服务器60020-smallCompactions-1385440028938] regionserver.HStore:已完成f1中3个文件的主要压缩 myTable.key.md5。。。。 进入md5….(尺寸=607.8米),总尺寸为 存储空间为645.8米。此选择在队列中等待了0秒,耗时39秒 执行

更令人困惑的是:早期版本不是启用了多线程,只是将每个压缩作业分配给一个线程,这就是为什么存在压缩队列的原因吗


可惜hbase文档中没有详细解释。

我不完全理解您的问题。但让我尽我最大的能力来回答这个问题

首先,让我们谈谈HBase的一些术语

HBase中的
区域
定义为两行键之间的
。如果在
表中有多个
列族
,则每个
列族
区域
将有一个
存储区
。每个
Store
都将有一个
MemStore
和0个或更多
StoreFiles

在刷新MemStore时创建StoreFile。每隔一段时间,一个后台线程就会触发一次压缩操作,以控制文件的数量。压实有两种类型:主要压实和次要压实。当一个存储目标是进行较小的压缩时,它还将拾取一些相邻的存储文件,并将它们作为一个文件重写。少量压缩不会删除已删除/过期的数据。如果次要压缩拾取存储中的所有StoreFile,则会升级为主要压缩。在主要压缩中,存储的所有存储文件都将重写为一个存储文件

好的。。。那么什么是压缩队列? 它是RegionServer中已成为压缩目标的存储的数量。类似地,Flush Queue是等待Flush的memstore的数量

至于为什么可以异步执行时会有队列的问题,我不知道。在HBase邮件列表中,这将是一个很好的问题。它往往有更快的响应时间


编辑:压缩队列不会占用RegionServer 100%的资源。

@giridhar缩进是为了正确反映表的结构
Table       (HBase table)
  Region      (Regions for the table)
    Store       (Store per ColumnFamily for each Region for the table)
      MemStore    (MemStore for each Store for each Region for the table)
      StoreFile   (StoreFiles for each Store for each Region for the table)
        Block       (Blocks within a StoreFile within a Store for each Region for the table)